Compare commits

..

993 Commits
0.6.1 ... 0.7.2

Author SHA1 Message Date
Rob Harrington
6f95fa8546 Merge remote-tracking branch 'origin/shopfront-filters' 2014-12-19 15:40:01 +11:00
Rob Harrington
170b14d0f5 Tightening up expectations in shop controller spec 2014-12-19 15:39:13 +11:00
Rob Harrington
a810fc88ac Dedicated new enterprise form 2014-12-19 14:05:24 +11:00
Rob Harrington
24cf3dee74 Hiding Shop Preferences in enterprise form 2014-12-19 14:05:24 +11:00
Rob Harrington
21e4f40616 Implementing primary taxon ordering on the shopfront 2014-12-19 14:05:23 +11:00
Rob Harrington
0fa289a443 Changing shopfront message into an alert box 2014-12-19 14:04:02 +11:00
Rob Harrington
fcb14f32d2 Validating user input for shopfront taxon order 2014-12-19 14:04:02 +11:00
Rob Harrington
f145a7ed65 Moving taxons into its own module, adding preferred shopfront taxon order to enterprise 2014-12-19 14:04:02 +11:00
Rob Harrington
a38e27e504 Adapting taxon autocompleter to allow multiple selection of taxons 2014-12-19 14:04:02 +11:00
Rob Harrington
4b353fa27b Ammending comments to make slightly more clear 2014-12-19 14:04:01 +11:00
Rob Harrington
9f086facdb Hiding link to shopfront for non-distributors 2014-12-19 14:04:01 +11:00
Rob Harrington
2efd905227 Fixing specs to work with text-angular 2014-12-19 14:04:01 +11:00
Rob Harrington
c5bf228cb9 Removing hashes from side menu links 2014-12-19 14:04:01 +11:00
Rob Harrington
b18163bfaf Remove separate long description injection, use full enterprise serializer instead 2014-12-19 14:04:01 +11:00
Rob Harrington
3fa1832e7b Adding shop closed message preference 2014-12-19 14:04:01 +11:00
Rob Harrington
d5df73c6a2 Duplicate create basic version of enterprise serializer for lists, make shopfront_message input use textangular 2014-12-19 14:04:01 +11:00
Rob Harrington
5a24f2c0e2 WIP: adding shopfront message to shop 2014-12-19 14:04:00 +11:00
Rob Harrington
435bc177f8 Hiding side menu elements by filtering rather than by making invisible 2014-12-19 14:04:00 +11:00
Rob Harrington
a489aa7ad9 Fixing enterprise feature spec, adding first shop preference 2014-12-19 14:04:00 +11:00
Rob Harrington
88d49148d4 Adding border to text-angular form element 2014-12-19 14:04:00 +11:00
Rob Harrington
33d4f03a99 Adding shop preferences pane, fiddling with icons 2014-12-19 14:04:00 +11:00
Rob Harrington
612c8a95b2 Adding icons to enterprise edit side menu 2014-12-19 14:04:00 +11:00
Rob Harrington
abdcdea1a2 Adding payment methods partial to new enterprirse edit screen 2014-12-19 14:04:00 +11:00
Rob Harrington
412b431f36 Fixing up tbody positions 2014-12-19 14:03:59 +11:00
Rob Harrington
25e608d9fb Adding shipping methods partial to redone enterprise form 2014-12-19 14:03:59 +11:00
Rob Harrington
bc32a053f7 Adding global styling class for aligning text to the right 2014-12-19 14:03:59 +11:00
Rob Harrington
0ea1adfdff Adding a partial for enterprise fees to enterprise form 2014-12-19 14:03:59 +11:00
Rob Harrington
468e83cef7 Adding global centering css class 2014-12-19 14:03:59 +11:00
Rob Harrington
76acd706ea Adding ability to show and hide menu items 2014-12-19 14:03:59 +11:00
Rob Harrington
eb2a6f0ef5 Splitting contact and social into two separate partials 2014-12-19 14:03:59 +11:00
Rob Harrington
b10d623f26 Rearrange columns for action buttons on enterprise form 2014-12-19 14:03:58 +11:00
Rob Harrington
f86d4a1996 Pulling headings out of enterprise form partials, displaying each conditionally 2014-12-19 14:03:24 +11:00
Rob Harrington
d8349bc037 menu refers to SideMenu object 2014-12-19 13:52:02 +11:00
Rob Harrington
39ca0ce3dc WIP: Adding a side_menu to the enterprise form 2014-12-19 13:52:01 +11:00
Rob Harrington
b0c86f83ee Splitting enterprise edit page into partials 2014-12-19 13:52:01 +11:00
summerscope
b944030994 Add some logic for small screen layout 2014-12-19 13:11:35 +11:00
summerscope
e9cb7f9565 Styling for clear filters row 2014-12-19 13:02:17 +11:00
summerscope
f36c881f52 Add clear filters feature to Producers page 2014-12-19 13:02:07 +11:00
summerscope
e8c5af004f Add another class so we can see which row is clear filters 2014-12-19 13:01:49 +11:00
summerscope
b55bced488 Put show hide animation back in for clear button 2014-12-19 12:53:48 +11:00
summerscope
ebe2d99299 Change markup because the boolean variable now works correctly 2014-12-19 12:53:26 +11:00
summerscope
515348a8fb Change the filtersActive variable for this page only 2014-12-19 12:52:57 +11:00
summerscope
08d37b955a Refactoring filter feature for shopfront page - show by default, hide on click. WIP. 2014-12-19 12:22:04 +11:00
Rob Harrington
66669e66ab Shaving some seconds from BOM spec by using simple order cycles and splitting specs up into more logical contexts 2014-12-12 15:43:05 +11:00
Rohan Mitchell
99dce6e8d6 Merge branch 'enterprise-form-confirmation' 2014-12-12 15:29:59 +11:00
Rohan Mitchell
27b0052e2b Merge branch 'product-category-required' 2014-12-12 15:29:31 +11:00
Rohan Mitchell
0b3dfa7278 Merge branch 'product-reports-without-deleted' 2014-12-12 15:29:03 +11:00
Rohan Mitchell
84b607433c Creating and then updating the new override updates the same override instead of creating a duplicate 2014-12-12 13:33:14 +11:00
Rohan Mitchell
31823f2dbd Setting both values to blank deletes override 2014-12-12 13:33:14 +11:00
Rohan Mitchell
ca1c116a5d Swap param order 2014-12-12 13:33:14 +11:00
Rohan Mitchell
d177f3ff73 Variant overrides table styling 2014-12-12 13:33:14 +11:00
Rohan Mitchell
d83ff4ef33 Remove short wait, show variant overrides tab in admin 2014-12-12 13:33:14 +11:00
Rohan Mitchell
fb980981fb Display variant override errors 2014-12-12 13:33:14 +11:00
Rohan Mitchell
45e709b2cc VariantOverrides require hub and variant 2014-12-12 13:33:14 +11:00
Rohan Mitchell
0393007ba5 Update variant overrides 2014-12-12 13:33:14 +11:00
Rohan Mitchell
c38686c820 Create new variant overrides 2014-12-12 13:33:14 +11:00
Rohan Mitchell
27444c6589 Extract variant overrides to own controller - permissions 2014-12-12 13:33:14 +11:00
Rohan Mitchell
531b35bbc6 WIP: Extract variant overrides to own controller - route, controller, views 2014-12-12 13:33:14 +11:00
Rohan Mitchell
9ee44e9aef WIP: Extract variant overrides to own controller - move views 2014-12-12 13:33:14 +11:00
Rohan Mitchell
91434fe12a Rename override_variants to variant_overrides - JS file names 2014-12-12 13:33:13 +11:00
Rohan Mitchell
a6f116aa09 WIP: Rename override_variants to variant_overrides - JS 2014-12-12 13:33:13 +11:00
Rohan Mitchell
d02511bf1d WIP: Rename override_variants to variant_overrides - file and dir name changes 2014-12-12 13:33:13 +11:00
Rohan Mitchell
51d2805de9 WIP: Rename override_variants to variant_overrides 2014-12-12 13:33:13 +11:00
Rohan Mitchell
a1906a71fa Return promise directly 2014-12-12 13:33:13 +11:00
Rohan Mitchell
47592cdbd8 Submit variant overrides to server 2014-12-12 13:33:13 +11:00
Rohan Mitchell
d67e614947 Remove extracted method 2014-12-12 13:33:13 +11:00
Rohan Mitchell
0a984b9041 Remove duplicate status message on BPE 2014-12-12 13:33:13 +11:00
Rohan Mitchell
c62ce57e0f Display count of dirty variant overrides 2014-12-12 13:33:13 +11:00
Rohan Mitchell
a1fc4dec43 Updating variant overrides stores dirty values 2014-12-12 13:33:13 +11:00
Rohan Mitchell
7255520471 Display success message on save variant overrides (stub) 2014-12-12 13:33:13 +11:00
Rohan Mitchell
9d4b8ae949 Rename div update-status-message to status-message 2014-12-12 13:33:13 +11:00
Rohan Mitchell
0938debafc Extract status message markup into partial 2014-12-12 13:33:13 +11:00
Rohan Mitchell
a8e1265a58 Swap parameter ordering - follows convention Rails.logger.error 'foo' 2014-12-12 13:33:13 +11:00
Rohan Mitchell
9c4c0f87e3 Rename methods to reduce naming duplication 2014-12-12 13:33:13 +11:00
Rohan Mitchell
bcc3815f6b Extract status message to a service 2014-12-12 13:33:13 +11:00
Rohan Mitchell
abf58c0e02 Provide blank values for all variant overrides 2014-12-12 13:33:13 +11:00
Rohan Mitchell
d3e639aa03 Index variant overrides by hub_id x variant_id 2014-12-12 13:33:12 +11:00
Rohan Mitchell
5cf3579b26 Extract variant overrides to service 2014-12-12 13:33:12 +11:00
Rohan Mitchell
5df4f1b7fe Convert text to form fields 2014-12-12 13:33:12 +11:00
Rohan Mitchell
3aedbb6c48 Display variant overrides 2014-12-12 13:33:12 +11:00
Rohan Mitchell
8baed4429c Indexer accepts arbitrary key to index by. Fix bug: Return an object instead of an array. 2014-12-12 13:33:12 +11:00
Rohan Mitchell
47b479c6c9 Show variants in override variants interface, not just products 2014-12-12 13:33:12 +11:00
Rohan Mitchell
42481e9691 Provide hub permissions to specs 2014-12-12 13:33:12 +11:00
Rohan Mitchell
efae9265c1 Inject variant overrides 2014-12-12 13:33:12 +11:00
Rohan Mitchell
ff28da345d Find variant overrides for some hubs 2014-12-12 13:33:12 +11:00
Rohan Mitchell
91b386003a Add VariantOverrideSerializer 2014-12-12 13:33:12 +11:00
Rohan Mitchell
a3a3832c8d Only show products that the chosen hub can add to an order cycle 2014-12-12 13:33:12 +11:00
Rohan Mitchell
500b5ce347 Enterprise managers can access override variants 2014-12-12 13:33:12 +11:00
Rohan Mitchell
b1ba519a73 When finding per hub order cycle enterprises, also return managed producers 2014-12-12 13:33:12 +11:00
Rohan Mitchell
5b82fcaca7 Inject hub permissions - which producers each hub can add to order cycle 2014-12-12 13:33:12 +11:00
Rob Harrington
3a9c4e0826 Adding a price without fees column to the order cycle customer report 2014-12-12 12:00:15 +11:00
Rob Harrington
6a226e4f92 Fixing typos and changing delivery address display in order confirmation email 2014-12-12 12:00:15 +11:00
Rohan Mitchell
086f69ccfb Default payment method server/test_mode to live 2014-12-12 11:35:18 +11:00
Rohan Mitchell
e607c9855f Add Pin Payments gateway 2014-12-12 10:59:23 +11:00
Rob Harrington
b9011d9abe Remove obsolete spree checkout views 2014-12-11 16:17:15 +11:00
Rob Harrington
b7810df346 Revert "Removing obsolete checkout views"
This reverts commit d0e013c1a5.
2014-12-11 16:09:17 +11:00
Rob Harrington
dfb9e5bde5 Order reports now present the price of line items with adjustments included 2014-12-11 15:48:29 +11:00
Rohan Mitchell
eab2e5de2a Use scope 2014-12-11 15:00:44 +11:00
Rob Harrington
3be437485a Redirecting any spree checkout_state redirects to our checkout controller 2014-12-11 14:53:11 +11:00
Rob Harrington
d0e013c1a5 Removing obsolete checkout views 2014-12-11 14:50:29 +11:00
Maikel Linke
440044372b Leave-page-warning only after changing inputs
The enterprise form is now set 'dirty' whenever an input changes. The
navigation callback confirms to leave the page only if the form is
dirty.
2014-12-11 14:27:08 +11:00
Maikel Linke
76739a4746 Unify nav-check and nav-callback attributes in nav-check-callback
The value of nav-check was not used and nav-callback was only important
if nav-check was given. So we need only one attribute, now named
nav-check-callback.
2014-12-11 12:14:51 +11:00
Maikel Linke
11f1261dd3 Navigation Callbacks for WebKit 2014-12-11 12:07:48 +11:00
Maikel Linke
27896534f0 Navigation Callbacks (confirmation to leave) refs
A navigation callback could give only a fixed value at load time. Now it
can act depending on the site's state just before the page is unloaded.
2014-12-11 12:05:59 +11:00
Rob Harrington
2f83d71931 Adding mail/all.css to assets precompile list 2014-12-10 09:56:33 +11:00
Maikel Linke
3cc79d0036 Filter deleted products in products report
BugHerd 484: Remove deleted products from Product / Inventory reports
2014-12-05 15:52:10 +11:00
Maikel Linke
7b41d4c5d4 Denoting the product category as required
Using common style: span.required *
2014-12-05 14:56:32 +11:00
Rohan Mitchell
ec08ab4cc9 Merge pull request #307 from openfoodfoundation/replace-fixtures
Replacing fixtures with minimal seeding
2014-12-04 16:31:30 +11:00
Maikel Linke
5c191bcc7f Moving test seeding into spec/support/seeds.rb 2014-12-04 15:38:59 +11:00
Rohan Mitchell
19667f31fa Add missing translation for welcome_to 2014-12-03 15:19:25 +11:00
Rohan Mitchell
95f8334370 Reinstate style 2014-12-03 12:28:22 +11:00
Rohan Mitchell
50e26ed96f Remove old required partial 2014-12-03 12:22:43 +11:00
Rohan Mitchell
e30021537a Merge branch 'master' into enterprise-form-required-fields
Conflicts:
	app/views/admin/enterprises/_form.html.haml
	app/views/admin/enterprises/_ng_form.html.haml
2014-12-03 12:20:52 +11:00
Rohan Mitchell
bd7253bdda Merge branch 'using-simple-order-cycle' 2014-12-03 12:08:25 +11:00
Rohan Mitchell
fbef139fc5 Merge branch 'master' into using-simple-order-cycle 2014-12-03 11:57:59 +11:00
Rohan Mitchell
3358fb3d73 Name based on meaning instead of context 2014-12-03 09:39:36 +11:00
Paul Mackay
26bca0faf8 Localize more strings on home page. 2014-12-03 09:39:36 +11:00
Paul Mackay
73ece4075c Add rails-i18n gem. 2014-12-03 09:39:35 +11:00
Maikel Linke
8e280919ac Using simple_order_cycle in clone spec
Creating a coordinator fee and two exchanges in the spec instead of
using a full order_cycle. Timing of this single test:

Before: 15.32 seconds
After:   6.26 seconds
2014-11-28 15:36:34 +11:00
Maikel Linke
e240933b29 Using simple_order_cycle in spec
Before: 4 minutes 6.9 seconds
After:  3 minutes 27.4 seconds
2014-11-28 14:45:35 +11:00
Maikel Linke
349b7de11a Using simple_order_cycle
Before: 2 minutes 58.3 seconds
After:  35.04 seconds
2014-11-28 14:02:55 +11:00
Maikel Linke
73b8f37d77 Using simple_order_cycle
Before: 2 minutes 8.7 seconds
After:  16.11 seconds
2014-11-28 13:55:06 +11:00
Maikel Linke
aa2cefb88c Using simple_order_cycle where applicable
Before: 3 minutes 0 seconds
After:  1 minute 21.02 seconds
2014-11-28 13:45:25 +11:00
Maikel Linke
ccd03bfa84 Using simple_order_cycle
Test timings were not accurate. Output:
4 order_cycles: 9.94 seconds
2 order_cycles: 9.87 seconds
0 order_cycles: 9.9 seconds

Felt execution was much higher
2014-11-28 13:20:05 +11:00
Maikel Linke
7f764db4d7 Using simple_order_cycle
order_cycle: 1 minute 56.88 seconds
simple_order_cycle: 1 minute 8.05 seconds
2014-11-28 12:39:05 +11:00
Maikel Linke
082a3cd9ab Creating simple_order_cycle instead of order_cycle
Speedup on my machine:
 1 minute 44.52 seconds
 21.9 seconds
2014-11-28 12:29:47 +11:00
Rob Harrington
699c9a62a5 Removing pretty_inspect so that bugsnag alert work on production 2014-11-27 16:39:14 +11:00
Maikel Linke
ef0b0a9a94 Replacing fixtures with minimal seeding
Seeding:
 1 country: Australia
 2 states:  Vic, NSW
2014-11-27 16:38:39 +11:00
Rob Harrington
9782a9d3d6 Hopefully fixing Poltergeist Timeout error due to long long time for first admin spec 2014-11-27 14:42:02 +11:00
Rob Harrington
45bcee16ef Pulling out obsolete setup in BOM spec to make it more like BPE spec, see if that helps with intermittent fails 2014-11-27 09:44:13 +11:00
Rob Harrington
5799f09caf Merge branch 'master' into pretty-emails 2014-11-27 00:02:44 +11:00
Rob Harrington
38440dd70a Ammending checkout specs for two emails on placement of order 2014-11-26 23:16:11 +11:00
Rob Harrington
258573f5a6 Remove obsolete text version of user signup_confirmation 2014-11-26 18:58:26 +11:00
Rob Harrington
0cf2df8358 Remove obsolete text version of order confirm_email 2014-11-26 18:54:50 +11:00
Rob Harrington
8a3bffb37d Cart page conforms to convention in rest of checkout, adjusting helpers through checkout 2014-11-26 18:53:29 +11:00
Rob Harrington
8f27c643f1 Move override for cart line item into existing view replacement 2014-11-26 16:08:53 +11:00
Rob Harrington
a8dde3bbb9 Moving shopfront trial progress bar logic into enterprises helper and dealing with expiry 2014-11-26 15:16:53 +11:00
Rob Harrington
f5acf36771 Hiding enterprise shop url in ent welcome email, as that may bot actually make sense 2014-11-26 14:50:19 +11:00
Rob Harrington
17a2e37eda Fixing broken category lookup on BPE 2014-11-26 13:16:29 +11:00
Rob Harrington
f6b0863279 Make cost breakdowns consistent throughout checkout 2014-11-26 13:07:40 +11:00
Rob Harrington
c4961d2502 Whitespace crusader 2014-11-26 11:59:22 +11:00
Rob Harrington
9bd3909449 Merge master into pretty-emails 2014-11-21 14:43:01 +11:00
Rob Harrington
2f28312f7e Removing incorrectly placed directive in profile shops skinny view 2014-11-21 14:18:22 +11:00
Rohan Mitchell
49d5cb2f05 Do not show Override Variants tab - hide this until feature is ready 2014-11-21 13:49:09 +11:00
Rohan Mitchell
0b030a85ff Incrementally load products 2014-11-21 13:49:09 +11:00
Rohan Mitchell
001bf999d0 Extract Spree API authorisation to service 2014-11-21 13:49:09 +11:00
Rohan Mitchell
824b00743e Extract fetch-by-page from BPE to service 2014-11-21 13:49:09 +11:00
Rohan Mitchell
58fdc48b9f Display products in table 2014-11-21 13:49:09 +11:00
Rohan Mitchell
7069b30e71 Add indexer service (equivalent of Dereferencer, but named more accurately) 2014-11-21 13:49:09 +11:00
Rohan Mitchell
680ba379c1 User can select a hub 2014-11-21 13:49:09 +11:00
Rohan Mitchell
912c60f720 Do not show producers in hubs list 2014-11-21 13:49:09 +11:00
Rohan Mitchell
4c9aa96b17 have_select2 can test for an exact set of options 2014-11-21 13:49:09 +11:00
Rohan Mitchell
2c74a94e31 Show list of hubs to select for managing variant overrides 2014-11-21 13:49:09 +11:00
Rohan Mitchell
d810388248 Add have_select2 capybara matcher 2014-11-21 13:49:09 +11:00
Rohan Mitchell
bad5d798bf Comment proxy classes 2014-11-21 13:49:09 +11:00
Rohan Mitchell
2b0f6b7865 Add ProductProxy which wraps the product's variants in VariantProxys 2014-11-21 13:49:09 +11:00
Rohan Mitchell
f3fa5edb9d Add simple variant proxy 2014-11-21 13:49:09 +11:00
Rohan Mitchell
f9b4c07219 Add initial VariantOverride model with price lookup 2014-11-21 13:49:09 +11:00
Rob Harrington
5e3f1e4a3b Adding bugsnag notifier to work out what is happening with bug when adding variants to order 2014-11-21 12:37:56 +11:00
Rob Harrington
2c4b8d779c Make application.yml available to travis 2014-11-21 10:17:43 +11:00
Rob Harrington
04b065e28a Orders page doesn't crash when orders have no distributor 2014-11-21 10:15:40 +11:00
Rohan Mitchell
bf6d0a2beb Port remaining specs to BulkProducts service specs 2014-11-21 08:41:41 +11:00
Rohan Mitchell
5eb40261a8 Port clone products specs to BulkProducts service specs 2014-11-21 08:41:41 +11:00
Rohan Mitchell
221e9344fd Port fetch products specs to BulkProducts service specs 2014-11-21 08:41:41 +11:00
Rohan Mitchell
387d25b8f2 WIP: More extracting BulkProducts-specific specs to their own file 2014-11-21 08:41:41 +11:00
Rohan Mitchell
7e2c979c96 WIP: Extracting BulkProducts-specific specs to their own file 2014-11-21 08:41:41 +11:00
Rohan Mitchell
7e4d337773 Extract DisplayProperties to a service
Conflicts:

	app/assets/javascripts/admin/bulk_product_update.js.coffee
2014-11-21 08:41:41 +11:00
Rohan Mitchell
356a03ac4e WIP: Extract bulk product edit product management to BulkProducts service
Conflicts:

	app/assets/javascripts/admin/bulk_product_update.js.coffee
2014-11-21 08:41:41 +11:00
Rohan Mitchell
f117c0cd24 Make spree_current_user available to serializers as 'scope' 2014-11-21 08:41:41 +11:00
Rohan Mitchell
29e49b67cc In BPE, rename producer and category JSON attrs to producer_id and category_id
Conflicts:

	spec/features/admin/bulk_product_update_spec.rb
2014-11-21 08:41:41 +11:00
Rohan Mitchell
021cca4fca Stylistic changes 2014-11-21 08:41:41 +11:00
Rob Harrington
ebaaf2a136 Display line items in confirmation email with fees included in item totals 2014-11-20 20:17:18 +11:00
Rob Harrington
b64b48f26e Removing obsolete MailerHelper reference 2014-11-20 20:16:34 +11:00
Rob Harrington
c310a3bdaa Don't use svg for email header 2014-11-20 20:14:57 +11:00
Rob Harrington
46462a1abb Format fiddling in user signup confirm email 2014-11-20 20:13:54 +11:00
Rohan Mitchell
b941ffabeb Update README for Figaro config, add Maikel to credits 2014-11-20 16:20:07 +11:00
Rohan Mitchell
76c300283b Remove CONTACT_STRING config - Rob has an admin-managable override for this coming soon 2014-11-20 15:59:06 +11:00
Rob Harrington
3d98ec6eef Stripping out inline styles from enterprise email templates 2014-11-20 15:51:28 +11:00
Rob Harrington
4dd5e51ed5 Stripping out inline styles from user signup email template 2014-11-20 15:48:36 +11:00
Rob Harrington
1f42d32151 Remove naughty pry 2014-11-20 15:45:50 +11:00
Rob Harrington
f5a5b93c22 Can use relative paths for assets in emails because roadie 2014-11-20 15:45:12 +11:00
Rob Harrington
15d157abc0 Stripping out inline styles from email templates 2014-11-20 15:42:03 +11:00
Rohan Mitchell
8096ca2519 Merge remote-tracking branch 'origin/config' into config 2014-11-20 15:41:15 +11:00
Rob Harrington
2e84a8f626 Pull layout and roadie style inlining out into spree's base mailer so it applies to all mailers 2014-11-20 15:05:19 +11:00
Rob Harrington
ac6a043f40 Add roadie-rails to help with inlining styles for emails 2014-11-20 14:56:35 +11:00
Rob Harrington
fe0bb49baf WIP: Adding templates for different order confirmation emails 2014-11-20 12:06:53 +11:00
Rob Harrington
20341ecbc1 Send bugsnag notification when order confirmation email fails 2014-11-20 12:04:51 +11:00
Rob Harrington
dd6a5ecd0b Adding helper for assets in mailer views, fixing links in mailer layout 2014-11-19 16:42:31 +11:00
Rob Harrington
c9d0721acd Rewire order confirmation email so that two separate emails are sent, one for customers and one for shop owners 2014-11-19 11:03:00 +11:00
Rob Harrington
8d1facb7c3 Adding revamp of enterprise welcome email by @summerscope 2014-11-14 18:42:16 +11:00
Rob Harrington
0907e2d886 A few alterations to the enterprise email confirmation email 2014-11-14 18:10:40 +11:00
Rob Harrington
d182bb7bf7 Add signoff partial for mailer templates 2014-11-14 18:09:48 +11:00
Rob Harrington
b320f71771 Adding revamp for signup confirmation by @summerscope 2014-11-14 17:59:56 +11:00
Rob Harrington
27d1886d53 Fix mailto link 2014-11-14 17:58:13 +11:00
Rob Harrington
15559b2388 Merge branch 'master' into pretty-emails 2014-11-14 16:54:50 +11:00
Rob Harrington
ffb915ccc5 Orders page doesn't crash when orders have no distributor 2014-11-14 16:48:33 +11:00
Rob Harrington
d9d6b7bee4 Adding filtering to Users and Enterprises report 2014-11-14 16:36:22 +11:00
Rob Harrington
79a83ee206 Adding users and enterprises report, controller action and template 2014-11-14 16:36:22 +11:00
Rob Harrington
66a3410087 WIP: Adding new report to ability spec 2014-11-14 16:36:22 +11:00
Rob Harrington
65a5960fcc WIP: Add route for User and Enterprise report 2014-11-14 16:36:22 +11:00
Rohan Mitchell
43bac4079f Show hubs that are not ready for checkout so that we can view SEFH - Sample :/ 2014-11-13 15:21:02 +11:00
Rohan Mitchell
43ddac84b0 I like nice code 2014-11-12 16:25:45 +11:00
Rohan Mitchell
2ca2d53273 Do not include perftools gem by default - it breaks Travis 2014-11-12 16:25:45 +11:00
Rohan Mitchell
4e655d7866 Uncouple migrations from models 2014-11-12 16:25:45 +11:00
Rob Harrington
7282c7174f Moving alert box to top of section 2014-11-12 15:55:48 +11:00
Rob Harrington
7a719952fc Adding informative messages about email confirmations to enterprise form 2014-11-12 15:20:52 +11:00
Rob Harrington
2c67066366 Add alert to enterprise edit page to remind user that confirmation email has been sent 2014-11-12 15:20:52 +11:00
Rob Harrington
6b21bbdf74 Reconfirmation email sends to the right address 2014-11-12 15:20:51 +11:00
Rob Harrington
ee2ee5dba7 Adding an enterprise welcome email 2014-11-12 15:20:51 +11:00
Rohan Mitchell
6953449d28 Merge pull request #288 from folklabs/doc-improvements
Small doc tweak to add db:setup command.
2014-11-12 14:40:33 +11:00
Rohan Mitchell
bb9b244d18 Upgrade paperclip to 3.x, fixes incorrect cropping of EXIF-rotated JPGs 2014-11-10 14:54:49 +11:00
Paul Mackay
1d0dab5cc6 Small doc tweak to add db:setup command. 2014-11-09 12:08:40 +00:00
Rob Harrington
0432fe229b Add bottom margin to loading gif 2014-11-07 16:53:15 +11:00
Rob Harrington
66bbaabf79 Adding loading gif to shop page 2014-11-07 16:50:31 +11:00
summerscope
2addb1c472 Tweak producer register pane styling for lightweight view 2014-11-07 13:56:56 +11:00
summerscope
791cc9b301 Hide pricing table until language is sorted 2014-11-07 13:56:28 +11:00
summerscope
2166fbc8a0 Tweak wording for kirsten 2014-11-07 13:56:07 +11:00
summerscope
9f74e8ff03 Add caret to right on register buttons, kill commented out text 2014-11-07 12:05:35 +11:00
summerscope
4795de5ab0 Adding new partial into homepage 2014-11-07 08:49:09 +11:00
summerscope
039b94aa47 Styling for Producers Register pane and pricing table 2014-11-07 08:48:54 +11:00
summerscope
9a2e510f2c Add Producers register link to footer 2014-11-07 08:48:37 +11:00
summerscope
cd34aedbb9 New partial for producer register pricing table 2014-11-07 08:48:24 +11:00
Rob Harrington
e1823212d6 Reconfirmation email not required when we already know about new email address for enterprise 2014-11-06 21:19:22 +11:00
Rob Harrington
898af0a55e Enterprise confirmation emails can be resent, and sensible things happen if confirmation link is clicked twice 2014-11-06 21:19:21 +11:00
Rob Harrington
e6f5811a60 Only send confirmation instructions to the enterprise email address 2014-11-06 21:19:21 +11:00
Rob Harrington
70c4b7082d Split ent confirmation email out into layout and partial 2014-11-06 21:19:21 +11:00
Rob Harrington
74642c3825 Update checkout helper spec to reflect Rohan's changes 2014-11-06 21:18:20 +11:00
Rohan Mitchell
3e151c40f5 WIP: Smooth scroll to checkout errors 2014-11-06 18:29:49 +11:00
Rohan Mitchell
57e7bc9504 Checkout: When error, open offending accordion section 2014-11-06 18:29:49 +11:00
Rohan Mitchell
4389389d44 Checkout: Display error when shipping or payment method is not selected 2014-11-06 18:29:49 +11:00
Rohan Mitchell
ca9da15ba4 Checkout: Fix shipping and payment method summary display when none selected 2014-11-06 18:29:48 +11:00
Rohan Mitchell
f2c6ee87d3 Extract duplicated checkout accordion heading to partial 2014-11-06 18:29:48 +11:00
Rohan Mitchell
519aea2d9b Extract checkout shipping ship address to partial 2014-11-06 18:29:48 +11:00
Rohan Mitchell
433cf9dd9b Checkout: Use validated_select for shipping address fields 2014-11-06 18:29:48 +11:00
Rohan Mitchell
7a0c291fc1 Checkout: Use validated_select for country 2014-11-06 18:29:48 +11:00
Rohan Mitchell
06a9110e95 Extract checkout select options to helpers 2014-11-06 18:29:48 +11:00
Rohan Mitchell
900a98b4bb Display errors on checkout State field 2014-11-06 18:29:48 +11:00
Rohan Mitchell
e50d2a6a37 Remove unused directive 2014-11-06 18:29:48 +11:00
Rohan Mitchell
cbb968d87f Pass checkout form to controller method 2014-11-06 18:29:48 +11:00
Rohan Mitchell
75b250d3fe When submitting checkout, if field is invalid, show errors 2014-11-06 18:29:48 +11:00
Rohan Mitchell
e8e5f7033c Improve all the syntax 2014-11-06 18:29:48 +11:00
Rob Harrington
51e768e722 Refactor EnterpriseSet to accept a collection as an argument 2014-11-06 16:29:09 +11:00
Rob Harrington
b27a0986b7 Ensure collection is locked down before we start asssigning attributes to model set 2014-11-06 16:28:24 +11:00
Rob Harrington
be042af751 Add explicit select statement to prevent scope being read only 2014-11-06 15:54:59 +11:00
Rob Harrington
93e3d87fcb Errors on bulk update for enterprise index do not allow user to list all enterprises 2014-11-06 11:01:44 +11:00
Rohan Mitchell
1506b10d8f Fix brittle spec 2014-11-05 16:08:45 +11:00
Rohan Mitchell
fdbb274667 Allow browsing products (but not cart/checkout) for hubs that are not ready for checkout 2014-11-05 14:29:36 +11:00
Rohan Mitchell
a2f4732547 Merge branch 'folklabs-i18n' 2014-11-05 12:01:27 +11:00
Rohan Mitchell
98f434dad3 Merge branch 'i18n' of https://github.com/folklabs/openfoodnetwork into folklabs-i18n 2014-11-05 11:54:42 +11:00
Rohan Mitchell
8c2adb2a05 Fix specs: feature specs requiring payment and shipping methods, race condition, double flash message issue 2014-11-01 12:11:50 +11:00
Rohan Mitchell
15b05de7f2 Fix specs: Distributors require shipping and payment method 2014-11-01 10:42:38 +11:00
Rohan Mitchell
0cf4e01dde Fix specs: Expect proper query chain 2014-11-01 10:39:29 +11:00
Paul Mackay
543368169f #254: Localisation of home page and welcome email. 2014-10-31 06:59:43 +00:00
Rohan Mitchell
0d05c7163d Use factory shortcut for creating shipping and payment methods 2014-10-31 16:26:13 +11:00
Rohan Mitchell
f5b20b7afc Give distributors a payment and shipping method where required 2014-10-31 16:02:43 +11:00
Rohan Mitchell
e2d88e615b Fix broken spec 2014-10-31 16:00:28 +11:00
Rohan Mitchell
8488b8e469 When user has selected a hub that is not ready for checkout, unselect it 2014-10-31 15:02:58 +11:00
Rohan Mitchell
7aefa05efd Fix specs broken by requirement for valid shipping and payment method 2014-10-31 14:48:08 +11:00
Rohan Mitchell
abeabd5b1c Add Enterprise#ready_for_checkout? 2014-10-31 14:04:43 +11:00
Rohan Mitchell
94d50f220f Display an error message to admin when there are hubs in order cycles that are not ready for checkout 2014-10-31 12:22:02 +11:00
Rohan Mitchell
9f43146e47 Payment methods need to be available, too 2014-10-31 12:22:02 +11:00
Rohan Mitchell
f0d3b987d4 Show hubs as unavailable when they do not have available payment and shipping methods 2014-10-31 12:22:02 +11:00
Rohan Mitchell
1d9a3f33e0 Order cycle distributors must have shipping and payment methods 2014-10-31 12:22:02 +11:00
Rohan Mitchell
fc1c3abb9f Remove duplicate data injection (duplicated in darkswarm layout) 2014-10-31 12:22:02 +11:00
Rohan Mitchell
433806aca8 Remove unused helpers and standardise naming 2014-10-31 12:22:02 +11:00
summerscope
34f47cedae Fix markup for better layout and getting column padding sitting where it should 2014-10-30 17:03:09 +11:00
summerscope
733b249b12 making tabs break down better for responsive and small devices 2014-10-30 17:03:09 +11:00
summerscope
d8933deee0 Styling shopfront tabs make things better and more responsive 2014-10-30 17:03:09 +11:00
summerscope
a27a805478 Tweak styling so the accordion hover colors dont fight the validation colors 2014-10-30 17:03:08 +11:00
summerscope
38e6575781 Move first and last name fields to top of shipping address accordion 2014-10-30 17:03:08 +11:00
summerscope
799c894bd3 Tweak logo embedding to use new version, and use srcset with src as a fallback 2014-10-30 17:03:08 +11:00
summerscope
32daa1745c Tweak logo for high density screens, make pretty and easier to read 2014-10-30 17:03:08 +11:00
summerscope
6329db23d7 Remove styling for capitalisation for shopfront page 2014-10-30 17:03:08 +11:00
Rob Harrington
6596e14e5d Use shared partial for errors on EnterpriseFeeSet 2014-10-30 13:02:16 +11:00
Rob Harrington
65d13e0490 Show error messages on enterprise index page 2014-10-30 13:02:16 +11:00
Rob Harrington
977c508833 Make enterprise limit error messages more specific 2014-10-30 13:02:16 +11:00
summerscope
fd8eecf745 Remove unnecessary partial import 2014-10-30 11:30:21 +11:00
summerscope
64f2d1b34e Remove unnecessary partial import 2014-10-30 11:30:03 +11:00
summerscope
f1e27a3ac3 No need to import typography into this file, add note for future devs 2014-10-30 11:29:42 +11:00
Rafael Schouten
2b0757e96f Merge branch 'master' of https://github.com/openfoodfoundation/openfoodnetwork 2014-10-25 20:23:25 +11:00
Rob Harrington
43d3955627 Change wording of trial option on change_type_form 2014-10-25 19:56:52 +11:00
Rafael Schouten
68073d7239 revome config sidebar from index 2014-10-25 19:03:56 +11:00
Rafael Schouten
095dd28505 Merge branch 'master' of https://github.com/openfoodfoundation/openfoodnetwork 2014-10-25 18:53:46 +11:00
Rafael Schouten
feff4fd46f fix reports taxons and specs 2014-10-25 18:51:03 +11:00
Rafael Schouten
6f1c90ea25 add toxons to prodcut reports 2014-10-25 17:09:23 +11:00
Rafael Schouten
098afacce3 Merge branch 'config' of https://github.com/openfoodfoundation/openfoodnetwork into config 2014-10-25 15:32:16 +11:00
Rafael Schouten
8395dbb3e9 Merge branch 'master' into config
Conflicts:
	.gitignore
	Gemfile
2014-10-25 15:29:53 +11:00
Rafael Schouten
33fc7e0fc9 Merge branch 'master' into checkout 2014-10-25 15:12:24 +11:00
Rob Harrington
6155600cb2 Set environment for payment methods unless admin 2014-10-24 18:15:48 +11:00
Rob Harrington
8385bff55e Make admins get multi enterprise dashboard 2014-10-24 17:59:58 +11:00
summerscope
928e5dc474 Make styling more specific to single enterprise dashboard user only 2014-10-24 16:39:59 +11:00
Rob Harrington
cc0e205f50 Merge master into onbaording 2014-10-24 15:36:59 +11:00
Rob Harrington
80b36992f9 Merge in remote branch 2014-10-24 15:28:40 +11:00
Rob Harrington
a157528974 Adding specs for single ent dash and remove product ability for profiles 2014-10-24 15:27:08 +11:00
Rob Harrington
8b819539e7 Fixing specs 2014-10-24 14:52:59 +11:00
summerscope
2eb152f63e Change class name for big button; change labels for submit buttons 2014-10-24 14:49:09 +11:00
summerscope
c733ca251e Styling for big button 2014-10-24 14:48:46 +11:00
summerscope
d388747a81 Make margine appear for small devices only 2014-10-24 14:48:29 +11:00
Rob Harrington
8ac367675f Adding big button class to CTA 2014-10-24 14:24:55 +11:00
Rob Harrington
96516a8ff3 User can switch between trialling a shopfront and not trialling a shopfront 2014-10-24 14:12:47 +11:00
Rob Harrington
3e002c6f82 Fiddle with text 2014-10-24 13:34:49 +11:00
Rob Harrington
20e2cb4ecc Set visibility to false for enterprises created through registration process 2014-10-24 13:31:20 +11:00
Rob Harrington
b0d8290dab Add alert for visibility to single ent dash 2014-10-24 13:28:25 +11:00
Rob Harrington
8603cf685e Merge remote-tracking branch 'origin/onboarding' into onboarding 2014-10-24 13:03:04 +11:00
Rob Harrington
b182c6afc8 Merge in remote changes 2014-10-24 13:02:26 +11:00
summerscope
0d73d8f043 Fix layout add required class 2014-10-24 13:01:56 +11:00
Rob Harrington
498b51cedb Switching out chevron on Change Type button 2014-10-24 12:54:21 +11:00
summerscope
01cb39a93f Error messages specific to use case 2014-10-24 12:54:06 +11:00
summerscope
b172c4fd4f Search query make empty string rather than undefined 2014-10-24 12:53:04 +11:00
summerscope
b3ac06e46c Fix icon type to match nav bar 2014-10-24 12:42:14 +11:00
summerscope
68cb3efc50 Markup fixes for single enterprise dashboard (first state) 2014-10-24 12:39:25 +11:00
summerscope
e32ab7b4b7 Single enterprise dashboard styling 2014-10-24 12:39:08 +11:00
Rob Harrington
d0c3502f27 Adding trial progress bar 2014-10-24 12:32:05 +11:00
summerscope
631386ced4 Tweaking markup 2014-10-24 11:48:53 +11:00
summerscope
982be3a563 Stylesheet for single enterprise user dashboard components 2014-10-24 11:48:39 +11:00
summerscope
76c6c260d1 Add row containers to make grid nesting work 2014-10-24 11:48:13 +11:00
summerscope
0b3e293b38 Remove whitespace, add alert box 2014-10-24 11:26:58 +11:00
Rob Harrington
f40b4d9d03 Different text for CTA button depending on context 2014-10-24 11:22:57 +11:00
Rob Harrington
900ef4ddcc Change type form is aware of existing state of enterprise 2014-10-24 11:12:54 +11:00
Rob Harrington
911d1e3dc4 Add down chevron to change type button on single ent dash 2014-10-24 11:02:48 +11:00
Rob Harrington
f03c7ba02d Rename sellCtrl to changeTypeFormCtrl 2014-10-24 11:02:16 +11:00
summerscope
49a2b774b0 Tweak language in helper 2014-10-24 10:56:03 +11:00
Rob Harrington
f6b0324456 Add change type form to single enterprise dashboard 2014-10-24 10:43:04 +11:00
Rob Harrington
46ab424655 Moving welcomeCrtl to enterprise module as sellsCtrl 2014-10-24 09:10:45 +11:00
Rob Harrington
d2efd25e8d Pull out type change form into a partial 2014-10-24 08:54:08 +11:00
summerscope
3c839be743 Tweak styling for error message to be consistent with other form error styling in admin 2014-10-23 17:24:56 +11:00
summerscope
cf06cab533 Tweak header to be consistent with other admin pages 2014-10-23 17:23:58 +11:00
Rohan Mitchell
9bc8531850 Add comment 2014-10-23 16:48:16 +11:00
Rohan Mitchell
ee5cd599aa Add basic details for the single enterprise dashboard 2014-10-23 16:44:16 +11:00
Rohan Mitchell
aea8ab4c7f Move #manages_one_enterprise? from User model to Permissions 2014-10-23 16:44:16 +11:00
Rob Harrington
e1cf5ceb57 Can set producer_profile_only using welcome page 2014-10-23 16:42:00 +11:00
Rob Harrington
996b2f2604 Adding 'producer_profile_only' flag to enterprises 2014-10-23 16:42:00 +11:00
Rob Harrington
d94ca0174a Registration process sets sells to 'unspecified' 2014-10-23 16:42:00 +11:00
Rohan Mitchell
f09698be47 Select all works on simple order cycles edit interface 2014-10-23 15:54:52 +11:00
Rohan Mitchell
7faf6e12ea Clean up simple order cycle interface 2014-10-23 15:53:16 +11:00
summerscope
4f2327f05c More styling for Next button and error message 2014-10-23 15:46:56 +11:00
Rob Harrington
d50cd023d4 Adding login nav to header on bare_admin layout 2014-10-23 15:38:06 +11:00
summerscope
ce346d3bca Styling stripes with CSS3, remove the image instead 2014-10-23 15:17:33 +11:00
Rob Harrington
e67f039791 Merging in remote changes 2014-10-23 14:53:21 +11:00
Rob Harrington
e9a6c9d0ce Adding header to welcome page 2014-10-23 14:50:56 +11:00
Rob Harrington
67c82e81de Fixing form on welcome page 2014-10-23 14:41:00 +11:00
summerscope
04af954432 Tweak language 2014-10-23 14:33:19 +11:00
Rob Harrington
bcc8198019 Merge in changes on remote branch 2014-10-23 14:30:56 +11:00
summerscope
d6947b119f Welcome markup make alternative markup consistent 2014-10-23 14:28:53 +11:00
summerscope
204c7d9690 Selected state push 2014-10-23 14:26:52 +11:00
Rob Harrington
77c0e36ed6 Adding input validation to welcome page 2014-10-23 14:23:50 +11:00
summerscope
694724d177 Refactoring and styling Welcome screen dashboard admin WIP 2014-10-23 14:23:35 +11:00
summerscope
bf9cd4a12b Tweak image add gradient blur and slightly less dark 2014-10-23 14:23:23 +11:00
summerscope
f5aae7d214 Pretty stripy background tile 2014-10-23 14:23:04 +11:00
Rohan Mitchell
bf61d12bfa Merge branch 'simple-order-cycles'
Conflicts:
	app/views/admin/order_cycles/_row.html.haml
2014-10-23 12:11:34 +11:00
Rob Harrington
7d9c5f9e2c Adding form elements for submission of sells preferences on welcome page 2014-10-23 11:40:11 +11:00
Rob Harrington
b11c291df1 Add set_sells controller action for enterprises 2014-10-23 11:39:33 +11:00
Rob Harrington
5a837226a4 Route set_sells through put rather than post 2014-10-23 11:38:51 +11:00
Rohan Mitchell
ab76c66b68 Admin can update order cycles with simple interface 2014-10-23 11:38:15 +11:00
Rohan Mitchell
f7c1340f99 Admin can view an order cycle in the simple edit form 2014-10-23 11:08:27 +11:00
summerscope
2f045203ab Styling welcome page WIP 2014-10-23 10:56:40 +11:00
summerscope
842e239893 Make selector containers anchors 2014-10-23 10:56:30 +11:00
Rob Harrington
2e0d5eb829 Adding set_sells action to enterprises 2014-10-23 10:27:53 +11:00
Rohan Mitchell
56ebe688dc Fix file naming 2014-10-23 10:22:03 +11:00
Rohan Mitchell
8b616e7d17 Add unit spec for order cycles simple create controller 2014-10-23 10:21:19 +11:00
Rohan Mitchell
2ad823a79d Fix JS specs 2014-10-23 09:39:23 +11:00
Rohan Mitchell
94e1995469 Merge branch 'master' into simple-order-cycles 2014-10-23 09:36:03 +11:00
Rohan Mitchell
f74ec03cef Rename 2014-10-23 09:26:55 +11:00
Rohan Mitchell
66e13d40f4 Select all works on simple order cycles interface 2014-10-22 19:17:28 +11:00
Rob Harrington
f60a9d7bd5 Fiddling with styling 2014-10-22 19:13:17 +11:00
Rohan Mitchell
d47db903fb Add basic styling to simple order cycle interface 2014-10-22 19:12:51 +11:00
Rob Harrington
262972a911 Adding basic angular to welcome form 2014-10-22 19:02:39 +11:00
Rob Harrington
fef97314cb Adding basic layout of welcome page for new users 2014-10-22 18:26:18 +11:00
Rafael Schouten
069b9ce91d fix email length validation spec 2014-10-22 17:49:44 +11:00
Rohan Mitchell
3e61aa7267 Simple interface remove coordinator fee 2014-10-22 17:26:22 +11:00
Rafael Schouten
69614d6cf1 fix accordion jumps 2014-10-22 17:23:06 +11:00
Rohan Mitchell
28352be729 Save pickup time and instructions 2014-10-22 17:17:05 +11:00
Rohan Mitchell
549ef4b79d When saving an OC from the simple interface, include outgoing variants 2014-10-22 17:08:16 +11:00
Rohan Mitchell
8fb95769bf Fix tested values in spec 2014-10-22 17:07:45 +11:00
Rob Harrington
7113875a45 Adding welcome page to overview controller 2014-10-22 16:49:32 +11:00
Rob Harrington
8120023094 Fixing indentation 2014-10-22 16:33:43 +11:00
Rob Harrington
82d33332ab Adding shop_trial_start_date column to enterprises 2014-10-22 16:11:51 +11:00
Rob Harrington
ecaa2e6a51 Pull out override of 'visible' flag in enterprise serialiser 2014-10-22 15:53:25 +11:00
Rob Harrington
45ed3a4cff Only pushes activated enterprises through to the frontend 2014-10-22 15:39:49 +11:00
Rafael Schouten
2b86647281 Merge branch 'master' into bugfix 2014-10-22 15:35:00 +11:00
Rafael Schouten
96ff387d1f fix navigation check on submission 2014-10-22 15:34:31 +11:00
Rob Harrington
565d6739b3 Add 'activated' scope to enterprises 2014-10-22 15:13:52 +11:00
Rafael Schouten
a53cbb677d fix report typos 2014-10-22 14:55:01 +11:00
Rafael Schouten
afa6119ec1 better coverage for enterprise abilities, hide products from non producers 2014-10-22 14:53:20 +11:00
Rafael Schouten
175e430a2b uss oop for nav check 2014-10-22 14:51:17 +11:00
Rob Harrington
6798d394bb Use unspecified rather than unconfirmed 2014-10-22 14:50:22 +11:00
Rob Harrington
7ff4306991 Adding 'unspecified' option to 'sells' on Enterprise 2014-10-22 13:13:21 +11:00
Rob Harrington
3d938b3450 Shifting dashboard rendering from partials to templates 2014-10-22 12:30:07 +11:00
Rob Harrington
8bf472e970 Split dashboard into single and multiple enterprise views 2014-10-22 12:21:25 +11:00
Rohan Mitchell
b75af8d9ff Fix sells column coming out all 'none' 2014-10-22 10:49:23 +11:00
Rohan Mitchell
4308f7d09c Revert "use sql for migration"
This reverts commit fec8f08966.
2014-10-22 09:43:10 +11:00
Rafael Schouten
89ce4ba632 Merge branch 'master' into bugfix
Conflicts:
	app/models/enterprise.rb
2014-10-21 08:51:23 +11:00
Rafael Schouten
fec8f08966 use sql for migration 2014-10-18 16:17:29 +11:00
Rafael Schouten
78b0e02ffe Merge branch 'master' of https://github.com/openfoodfoundation/openfoodnetwork 2014-10-18 16:03:04 +11:00
Rafael Schouten
9e0f8100d9 only producers have product permissions 2014-10-18 08:28:08 +11:00
Rafael Schouten
08cd273be3 Merge branch 'migrate_ent_types' into bugfix
Conflicts:
	app/models/spree/ability_decorator.rb
2014-10-18 07:37:41 +11:00
Rafael Schouten
2a7dd8b8f1 update ability specs for reports 2014-10-18 06:53:38 +11:00
Rafael Schouten
b71a40ae6d show all permitted enterprises in order cycle summery 2014-10-18 03:26:57 +11:00
Rafael Schouten
87cc1d6217 create db/backup folder if it dosnt exist 2014-10-18 01:43:19 +11:00
Rafael Schouten
577cb06371 make navCallback actually versatile 2014-10-18 01:42:29 +11:00
Rob Harrington
361116a9ec Explicitly set confirmed_at for unconfirmed enterprise 2014-10-17 18:31:35 +11:00
Rob Harrington
cae8d566df Explicit confirmed_at to ensure that confirmation emails are sent 2014-10-17 17:49:18 +11:00
Rob Harrington
f499cc375b Adding confirmed_at to enterprise factory 2014-10-17 17:32:27 +11:00
Rob Harrington
338ba74652 Only show enterprise partial when no enterprises exist 2014-10-17 17:15:49 +11:00
Rob Harrington
5b3ff9160d Fix Registration spec 2014-10-17 17:15:16 +11:00
Rohan Mitchell
deedafde9a WIP: Simple order cycle form loads and displays correct info 2014-10-17 16:55:55 +11:00
Rohan Mitchell
d8b648d531 Extract name and timing form from order cycles 2014-10-17 16:51:03 +11:00
Rohan Mitchell
078d2bac11 Extract factories from order cycles admin angular 2014-10-17 16:50:16 +11:00
Rob Harrington
e24a774d54 Adding schema 2014-10-17 16:16:17 +11:00
Rob Harrington
4d078feea2 Add default scope to devise to stop it from checking other devise enabled models (in this case :enterprise) 2014-10-17 16:12:51 +11:00
Rohan Mitchell
f060da9c8d Rename angular app order_cycle -> admin.order_cycles 2014-10-17 14:13:27 +11:00
Rob Harrington
b2565991e6 Merge branch 'master' into reg_and_ent_types 2014-10-17 12:33:21 +11:00
Rob Harrington
eda0b16a5f Make state abbreviations upper case 2014-10-17 12:29:51 +11:00
Rob Harrington
e9a3f8ce91 Require user to choose producer or not 2014-10-17 12:29:51 +11:00
Rob Harrington
a6bc9e66f6 Only send one enterprise creation confirmation email 2014-10-17 12:29:51 +11:00
summerscope
b671543a95 Style and make pretty the finished step of profile creation 2014-10-17 12:25:04 +11:00
summerscope
4abc59f66d Change styling on the enterprise name because we dont know what type it is yet 2014-10-17 12:02:21 +11:00
summerscope
4aa2aa5aee Tweaking layout, text, styling for registration box 2014-10-17 11:56:25 +11:00
summerscope
2c5208ce6b Change ent type page, simplify! 2014-10-17 11:17:53 +11:00
Rob Harrington
81715aaf5d Remove unrequired store registration action 2014-10-17 11:01:39 +11:00
Rob Harrington
c4d47ccc20 Change enterprise attributes defined in reg controller 2014-10-17 11:01:38 +11:00
Rohan Mitchell
694dd0c329 Enterprise user selling own produce only sees simple order cycle listing 2014-10-17 10:52:36 +11:00
summerscope
4884734ab5 Align Continue buttons right consistently 2014-10-17 10:43:19 +11:00
Rob Harrington
28807d4f4d Merge migrate_ent_types into reg 2014-10-17 10:20:48 +11:00
Rob Harrington
6a6f603754 Correct syntax for update column 2014-10-17 10:03:34 +11:00
Rafael Schouten
2e3cb171a3 don't remove indexes after you remove one of their columns! 2014-10-17 08:22:52 +11:00
Rafael Schouten
b853f908d3 bugfix email dummy 2014-10-17 08:08:10 +11:00
Rafael Schouten
1a40c83a48 update chema with indexes 2014-10-17 07:59:51 +11:00
Rafael Schouten
9536b3e764 add navigation directive default 2014-10-17 07:58:08 +11:00
Rafael Schouten
f1280a31a6 Merge branch 'reports' into bugfix 2014-10-17 07:41:30 +11:00
Rafael Schouten
245c1eb305 use a directive for navigation check to attach it to the page instead of the controller 2014-10-17 07:40:08 +11:00
Rafael Schouten
bda1eafcec add migrating for dummy emails 2014-10-17 06:37:22 +11:00
Rafael Schouten
dd3101f27a remove some bangs 2014-10-17 06:14:39 +11:00
Rafael Schouten
45b0581b7b Merge branch 'master' into bugfix 2014-10-17 05:35:10 +11:00
Rafael Schouten
3234bc328f Merge branch 'master' into reports 2014-10-17 04:02:29 +11:00
Rafael Schouten
4defb38cf4 update karma config 2014-10-17 04:01:36 +11:00
Rafael Schouten
1150e69500 fix visible bug 2014-10-17 03:59:48 +11:00
Rob Harrington
c7145f8dcd Merge branch 'reg' of github.com:openfoodfoundation/openfoodnetwork into reg 2014-10-16 16:53:34 +11:00
Rafael Schouten
6fd9741daf use build instead of create, and reorganise code 2014-10-16 16:51:09 +11:00
Rafael Schouten
a1d74649f3 rename spec and clear todo 2014-10-16 16:50:19 +11:00
Rafael Schouten
f145db46f1 use self.x 2014-10-16 16:49:49 +11:00
Rafael Schouten
1b0000a1de use bangs 2014-10-16 16:48:01 +11:00
summerscope
8d01bb7ebf Pretty responsive email template!!!!!!!! 2014-10-16 16:45:15 +11:00
Rafael Schouten
425105174e return space remover 2014-10-16 16:26:50 +11:00
Rafael Schouten
c5afd8cebf move visible filter to pages, and use category 2014-10-16 16:26:50 +11:00
Rafael Schouten
027189ac3c rename check methods 2014-10-16 16:26:49 +11:00
Rafael Schouten
f0a3296e52 change enterprise category name ans use symbols instead of strings 2014-10-16 16:26:49 +11:00
Rob Harrington
7db68795a4 Redirect to admin root after confirmation 2014-10-16 16:06:54 +11:00
Rafael Schouten
2e8417d9e8 bugfix migration and add indexes 2014-10-16 16:05:07 +11:00
Rohan Mitchell
0e03b5f209 Admin can change the format that Spree::Images are stored/served in 2014-10-16 12:41:11 +11:00
Rohan Mitchell
7e23479f3a Consistency 2014-10-16 12:08:12 +11:00
Rob Harrington
a6480e6831 Merge in enterprise confirmation 2014-10-16 11:52:10 +11:00
Rob Harrington
63e50dc88c Fiddle with alert styling 2014-10-16 11:34:06 +11:00
Rafael Schouten
fd7191f476 add missing orders_and_distributors perm 2014-10-16 05:26:38 +11:00
Rafael Schouten
9343c3608b allow supplier enterprise manager to see bulk coop reports 2014-10-16 04:29:33 +11:00
Rafael Schouten
1577c01a77 add reports abilities specs 2014-10-16 04:29:33 +11:00
Rafael Schouten
46df14c0d9 refator reports controller a little 2014-10-16 04:29:33 +11:00
Rafael Schouten
e44fed2ff0 add authorization to reports listings on index page 2014-10-16 04:29:33 +11:00
Rafael Schouten
0d715ce615 split report permissions 2014-10-16 04:29:16 +11:00
Rob Harrington
96878f5dcb Don't require confirmation for enterprises where the email address has already been confirmed for another enterprise 2014-10-15 17:22:56 +11:00
Rob Harrington
20cb11a298 Update registration spec 2014-10-15 16:28:52 +11:00
Rob Harrington
0940af6b66 Remove bad pry 2014-10-15 16:21:11 +11:00
Rob Harrington
e0e8ba814f Show explanation of confirm process on final page of registration 2014-10-15 16:20:45 +11:00
Rob Harrington
c59662758c Add alerts for unconfirmed enterprises to overview page 2014-10-15 15:46:21 +11:00
Rob Harrington
c76a3815c0 Add unconfirmed scope 2014-10-15 15:45:47 +11:00
Rob Harrington
1bdc55cb33 Adding confirmed scope to enterprises 2014-10-15 13:03:39 +11:00
Rob Harrington
56f4d5af0f Visibility in the front end is contingent upon enterprise being confirmed 2014-10-15 12:27:55 +11:00
Rob Harrington
6e699b2e8b Mailer tests 2014-10-15 11:52:04 +11:00
Rob Harrington
908c242d36 Confirmation email when creating enterprise 2014-10-15 10:48:05 +11:00
Rafael Schouten
5e41865871 add utils angular module and navigation check factory 2014-10-14 00:26:04 +11:00
Rafael Schouten
5dd9879b96 validate description max lenth 2014-10-12 21:57:01 +11:00
Rafael Schouten
01c179856a set maxlength for short description field 2014-10-12 21:19:59 +11:00
Rafael Schouten
9a6958573a Merge branch 'master' into bugfix
Conflicts:
	app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee
2014-10-12 21:19:02 +11:00
summerscope
a4e72f6fbc Making the header more semantically meaningful for HTML5. Add in row to make spacing consistent. Steps bar moves to top 2014-10-10 18:20:38 +11:00
summerscope
89a51bf1da Adjustments to layout, responsive logic, simplify column structure 2014-10-10 18:19:42 +11:00
summerscope
d4318263f6 Registration modals styling WIP 2014-10-10 18:18:33 +11:00
Rafael Schouten
3ad7165fd6 add checkout subbmission directive 2014-10-10 17:53:28 +11:00
Rob Harrington
b8b19368df WIP: Making enterprise emails confirmable 2014-10-10 16:54:38 +11:00
Rohan Mitchell
d5ea2a0206 Make Enterprise and EnterpriseGroup promo images jpg format 2014-10-10 15:40:05 +11:00
Rafael Schouten
01aa8cb761 Use serialiser instead of rabl for current order injection 2014-10-10 15:30:53 +11:00
Rafael Schouten
b68754d634 put payment description in panel 2014-10-10 15:22:21 +11:00
Rob Harrington
9b275cc5f0 WIP: Shuffling around order of cards in registration 2014-10-09 17:26:31 +11:00
Rob Harrington
d1e3f74c03 Add loading gif to image uploaders 2014-10-09 15:56:54 +11:00
Rob Harrington
fc3a132c12 Closing auth dialog on pages other than home returns the user to home 2014-10-09 13:46:32 +11:00
Rob Harrington
31c4aad9e1 JS for closing alerts works 2014-10-09 13:21:30 +11:00
Rob Harrington
49c8e2f8cb Remove used styling for inline flash 2014-10-09 13:16:09 +11:00
Rob Harrington
83f9867632 Move registration login into own folder, reinstate ofn-inline-alert 2014-10-09 13:15:19 +11:00
Rob Harrington
65ac9d7226 Merge branch 'master' into reg 2014-10-09 09:26:17 +11:00
Rafael Schouten
e7b847542f bugfix tab selection 2014-10-08 01:59:56 +11:00
Rafael Schouten
20a94b4365 Merge branch 'master' into migrate_ent_types
Conflicts:
	app/serializers/api/admin/enterprise_serializer.rb
2014-10-07 10:52:26 +11:00
Rafael Schouten
9b6db2bff4 simplify tab selection 2014-10-07 10:49:57 +11:00
Rafael Schouten
6fc36a3e6c swap redundant producer modal for general enterprise modal 2014-10-07 10:48:04 +11:00
Rafael Schouten
e476324c60 fix for_order_cycle test 2014-10-07 00:22:45 +11:00
Rafael Schouten
ec6805f573 use shared partial for no results 2014-10-06 23:51:19 +11:00
Rafael Schouten
7805d46743 more angular documentation 2014-10-06 23:20:43 +11:00
Rafael Schouten
881e82e825 add some angular documentation 2014-10-06 22:59:06 +11:00
Rafael Schouten
2ae325455a fix producer taxon filtering bug 2014-10-06 22:58:48 +11:00
Rafael Schouten
922e335e83 add is_hub to model 2014-10-06 15:42:23 +11:00
Rafael Schouten
cc6af82823 move reports abilitiy to can manage products block, producers need to use this too 2014-10-06 15:40:41 +11:00
Rafael Schouten
76e170eb3a move icons into cached, for now 2014-10-06 10:44:49 +11:00
Rafael Schouten
c495e967cb bugfix and extend angular enterprise spec 2014-10-06 01:36:18 +11:00
Rafael Schouten
017d6b1273 move for order cycles permission, for now, but needs review 2014-10-06 01:35:46 +11:00
Rafael Schouten
9eb770aed7 fix sidebar show/hide 2014-10-05 01:44:40 +10:00
Rafael Schouten
2f76a7ba80 add comment for hub sells own case 2014-10-05 01:44:12 +10:00
Rafael Schouten
58c39b340d remove duplicate default value assignment 2014-10-05 01:43:50 +10:00
Rafael Schouten
f0c9e7cd44 fix for tests, remove open in new tab 2014-10-04 13:12:36 +10:00
Rafael Schouten
f3fc70ebf0 Merge branch 'master' into raf_bugfix
Conflicts:
	app/assets/stylesheets/admin/openfoodnetwork.css.scss
2014-10-04 12:51:55 +10:00
Rafael Schouten
884c111240 fix failing tests 2014-10-04 11:56:35 +10:00
Rafael Schouten
698126edb2 specifify visible enterprises in tests 2014-10-04 01:01:04 +10:00
Rafael Schouten
b3482a087b separate enterprises from visible enterprises 2014-10-04 01:00:37 +10:00
Rafael Schouten
a552fb18da style profile check 2014-10-04 01:00:02 +10:00
Rafael Schouten
2670d2b0ad cleanup serializer 2014-10-04 00:59:41 +10:00
Rafael Schouten
01063367c4 clickable show profiles label 2014-10-04 00:59:17 +10:00
Rafael Schouten
a0494b136f test that email is validated 2014-10-03 17:32:04 +10:00
Rafael Schouten
c088c47a49 add email to enterprise params 2014-10-03 17:31:46 +10:00
Rafael Schouten
77e354f9f6 Merge branch 'master' into wys 2014-10-03 16:47:11 +10:00
Rafael Schouten
dee471b1c7 move text angular files 2014-10-03 16:43:56 +10:00
Rafael Schouten
bdd9e19efe specs - add text angular dep and long descrioption provider 2014-10-03 16:42:37 +10:00
Rafael Schouten
34ceb9c226 style text box 2014-10-03 16:06:15 +10:00
Rafael Schouten
bb24e1ce88 sanitize long_description html before injection 2014-10-03 16:06:04 +10:00
Rafael Schouten
e75a964703 Merge branch 'master' into raf_bugfix 2014-10-03 14:26:08 +10:00
Rafael Schouten
8805079faa use attubutes instead of save! 2014-10-03 14:03:34 +10:00
Rafael Schouten
7313aecd19 add route checking, not working yet... 2014-10-03 12:19:58 +10:00
Rafael Schouten
929839cb9f hide configuration on 2014-10-03 11:46:00 +10:00
Rafael Schouten
d707ba1a70 remove nokugiri from gemfile.lock 2014-10-02 19:08:37 +10:00
Rafael Schouten
ff4f8f63af Merge branch 'master' into raf_bugfix
Conflicts:
	app/views/spree/order_mailer/confirm_email.text.haml
2014-10-02 19:06:30 +10:00
Rafael Schouten
b3520c4385 Bugfix for specs 2014-10-02 16:49:32 +10:00
Rafael Schouten
526ab8b80f use is_distributor bool 2014-10-02 16:28:01 +10:00
Rafael Schouten
f29898886d return basic css and js for oldskool login that somehow still exists 2014-10-02 13:24:59 +10:00
Rafael Schouten
1e84e4fa85 own and any instead of single and full for abilities 2014-10-02 13:11:19 +10:00
Rafael Schouten
ce9b132ab5 only show visible enterprises 2014-10-02 13:10:46 +10:00
Rob Harrington
5f4b2a752b Product controller loads correct data for create and update actions 2014-10-02 12:32:26 +10:00
Rafael Schouten
4c1fc5671f Minor fixes 2014-10-02 10:43:17 +10:00
Rafael Schouten
e62e87549a commit this elsewhere 2014-10-02 10:41:43 +10:00
Rafael Schouten
62f7114fa1 Merge branch 'cleanup' into migrate_ent_types
Conflicts:
	app/views/home/_hubs.html.haml
2014-10-02 10:02:08 +10:00
Rafael Schouten
47dc001735 merge has_shopfront and is_distibutor 2014-10-01 20:27:53 +10:00
Rafael Schouten
3877bed62b use enterprise modal 2014-10-01 18:51:49 +10:00
Rafael Schouten
ccdcf16cec rename file 2014-10-01 18:47:50 +10:00
Rafael Schouten
54b138b2cc add transclusion to modal directive by default 2014-10-01 18:47:22 +10:00
Rafael Schouten
412bf8f638 cleanup gemfile 2014-10-01 17:16:09 +10:00
Rafael Schouten
b647f9382f revert included file 2014-10-01 17:11:00 +10:00
Rafael Schouten
56a9658b14 update ability spec 2014-10-01 16:55:41 +10:00
Rafael Schouten
47991f192e tweak migration 2014-10-01 16:49:47 +10:00
Rafael Schouten
4fde0ad2d7 Merge branch 'master' into migrate_ent_types 2014-10-01 16:11:20 +10:00
Rafael Schouten
1ec4f2e456 Merge branch 'ent_types_frontend' into migrate_ent_types
Conflicts:
	app/models/enterprise.rb
2014-10-01 16:10:43 +10:00
Rafael Schouten
3a14a26bc6 refactor wysiwyg 2014-10-01 16:07:10 +10:00
Rafael Schouten
fa41f6dc40 add rollback to migration 2014-10-01 13:02:21 +10:00
Rob Harrington
5497f229e1 Ignoring enterprise ownership before_validations when no owner set 2014-10-01 11:49:46 +10:00
Rafael Schouten
206c8da0ba remove unused css* 2014-09-30 23:53:45 +10:00
Rafael Schouten
a2dff2305f space in order confirm mailer 2014-09-30 19:39:56 +10:00
Rafael Schouten
726340fc86 configure textAngular on enterprise edit page 2014-09-30 18:20:45 +10:00
Rafael Schouten
823923f828 add textAngular javascript 2014-09-30 15:09:43 +10:00
Rafael Schouten
a49991c696 set abilities tests to pending, need to discuss further 2014-09-28 22:55:49 +10:00
Rafael Schouten
dc7c9ea272 commit updated schema 2014-09-28 22:37:26 +10:00
Rafael Schouten
58f13a3e06 update migration 2014-09-28 12:57:27 +10:00
Rafael Schouten
5c0d846643 bugfix sells and is_distributor specs and code 2014-09-28 11:55:46 +10:00
Rafael Schouten
b821107c27 bugfix migration ad specs 2014-09-27 18:14:10 +10:00
Rafael Schouten
beb85e862a get type > sells migration mostly working 2014-09-27 15:21:27 +10:00
Rafael Schouten
dee869a273 move checks and links in sidebars 2014-09-26 17:58:00 +10:00
summerscope
0c99007323 Tweak the modal styling for register modals 2014-09-26 17:45:15 +10:00
Rafael Schouten
92a40fc842 order mailer edits 2014-09-26 17:21:41 +10:00
Rob Harrington
4b2f1cefa0 Spliting order management abilities out of product management abilities 2014-09-26 17:11:11 +10:00
summerscope
c91d707806 Merge branch 'master' into ent_types_frontend 2014-09-26 15:07:30 +10:00
Rob Harrington
299b0fe5be Allowing all enterprise users to access products 2014-09-26 15:01:23 +10:00
summerscope
2ea0c89899 Style the modal headers 2014-09-26 15:01:23 +10:00
summerscope
237d129710 Changing the markup to give a class where is a producer 2014-09-26 15:01:23 +10:00
Rafael Schouten
e9c8547ca3 fix enterprsie model logic 2014-09-26 15:01:23 +10:00
summerscope
dee503befb Tweak language around the long description 2014-09-26 15:01:22 +10:00
summerscope
781fcae946 Change styling for register modals 2014-09-26 15:01:22 +10:00
summerscope
3adf571c1f Style the modal headers 2014-09-26 14:55:41 +10:00
summerscope
c43b8abcbc Changing the markup to give a class where is a producer 2014-09-26 14:55:41 +10:00
Rafael Schouten
3406f926fc fix enterprsie model logic 2014-09-26 14:48:37 +10:00
Rafael Schouten
e480d3a135 rearrange admin sidebars 2014-09-26 13:06:29 +10:00
summerscope
c1460afaee Tweak language around the long description 2014-09-26 12:07:58 +10:00
summerscope
a73541da71 Change styling for register modals 2014-09-26 12:07:38 +10:00
Rob Harrington
d3c8e4a547 Replacing reference to is_profile 2014-09-26 11:20:55 +10:00
summerscope
a6e8d6906f Tweak message on profile label 2014-09-26 11:20:09 +10:00
Rafael Schouten
ceb978783c update missed taxon selector filter 2014-09-26 00:25:19 +10:00
Rafael Schouten
4b576d1590 refactor enterprise specs 2014-09-26 00:15:33 +10:00
Rafael Schouten
04c5dff497 fixup merge 2014-09-25 19:47:00 +10:00
Rafael Schouten
55f4415c0d Merge branch 'master' into cleanup
Conflicts:
	app/assets/javascripts/darkswarm/services/hubs.js.coffee
	app/views/home/_hubs.html.haml
	app/views/producers/_filters.html.haml
	app/views/producers/index.html.haml
2014-09-25 19:42:20 +10:00
Rob Harrington
be17d80cc4 Fixing hubs service spec 2014-09-25 17:28:01 +10:00
Rob Harrington
85b27f5b51 Adding angularjs-file-upload to spec manifest 2014-09-25 17:25:48 +10:00
Rob Harrington
b55b4e9a0c Merge branch 'master' into ent_types_frontend 2014-09-25 17:20:15 +10:00
Rob Harrington
33dff551c7 Removing 'show profiles' from producer and shop pages 2014-09-25 17:19:57 +10:00
Rob Harrington
1e31dd88ee Remove unrequired functions, add has_hub_listing 2014-09-25 17:19:57 +10:00
summerscope
cbc8a62686 STyling for profile only small view 2014-09-25 17:02:41 +10:00
summerscope
3b7cd6d329 Making the styling work for profiles and producers 2014-09-25 16:54:17 +10:00
summerscope
97ae170dd1 Add in profile only use case to styling 2014-09-25 16:40:06 +10:00
summerscope
3812d1eebb Add more greys 2014-09-25 16:39:48 +10:00
summerscope
2e1b2ffe12 Add italics 2014-09-25 16:04:27 +10:00
summerscope
a068411b7d Add in class to show when hub is 2014-09-25 16:00:03 +10:00
Rafael Schouten
6069127733 validate contact email 2014-09-25 15:16:50 +10:00
Rafael Schouten
afd0f76d9e Merge branch 'master' into bugfix 2014-09-25 14:23:46 +10:00
Rafael Schouten
f8b083e4b7 fix lost hub link 2014-09-25 14:04:10 +10:00
Rafael Schouten
bab9123ca8 delete unused javascript 2014-09-25 14:01:06 +10:00
Rafael Schouten
096324cf5e bugfix filters 2014-09-25 13:46:08 +10:00
Rafael Schouten
0e2774882f dry enterprise angular 2014-09-25 13:06:02 +10:00
Rob Harrington
f5849e91dc Adding limit reached modal to registration 2014-09-25 12:25:32 +10:00
Rob Harrington
6fa7d9cbcb Registration controller checks number of owned enterpises 2014-09-25 12:10:45 +10:00
Rob Harrington
9520eeeb15 can specify attributes for create_enterpise_user 2014-09-25 11:56:18 +10:00
Rafael Schouten
3775cd29cb generalise search filter to any enterprise 2014-09-25 11:34:49 +10:00
Rafael Schouten
da620f3723 Merge branch 'master' into ent_types_frontend 2014-09-25 10:09:42 +10:00
Rafael Schouten
f8d5b7ede8 refactor enterprise types to six options 2014-09-24 23:30:43 +10:00
Rob Harrington
ed91cd6463 Make sure d1 != d2 2014-09-24 20:48:52 +10:00
Rafael Schouten
a058af8211 open products in new tab 2014-09-24 17:00:12 +10:00
Rafael Schouten
139da3ac7a outline inputs with errors 2014-09-24 16:59:57 +10:00
Rob Harrington
b5ef24bacb table matchers use capybara matchers rather than wait_until with micro-sleep 2014-09-24 16:18:59 +10:00
Rob Harrington
f0f165a129 Explicitly create enterprises in order_cycle factory to fix intermittent fail 2014-09-24 14:00:08 +10:00
Rob Harrington
1a86206e1f Fixing super annoying server reload bug 2014-09-24 13:01:40 +10:00
Rob Harrington
c6d463bf25 Revert "Pending bulk order mgmt specs"
This reverts commit eead8d665f.
2014-09-20 18:06:42 +10:00
Rob Harrington
b86848269b Merge branch 'specs' into reg_images 2014-09-19 23:44:31 +10:00
Rob Harrington
5bceb81479 Fixing image upload in onboarding 2014-09-19 23:37:02 +10:00
Rob Harrington
509cf6250a Explicitly sort managed products 2014-09-19 18:32:03 +10:00
Rob Harrington
07275574b6 Manager can't bulk update owner 2014-09-19 18:31:50 +10:00
Rob Harrington
5d2d619d66 Assigning @spree_api_key for store 2014-09-19 18:31:33 +10:00
Rob Harrington
17ce80a417 Allow new user to create enterprises 2014-09-19 18:31:23 +10:00
summerscope
d86c3cff26 Making enterprise header styles show as turquoise when no shopfront to click through to 2014-09-19 17:48:24 +10:00
summerscope
5e4e939087 Return template markup which was accidentally removed in Rafs merge 2014-09-19 17:47:49 +10:00
Rafael Schouten
559d3b0e4b fixup the header but needs some styling 2014-09-19 17:24:41 +10:00
Rafael Schouten
883e5f1095 Merge branch 'ent_types_frontend' of https://github.com/openfoodfoundation/openfoodnetwork into ent_types_frontend
Conflicts:
	app/assets/javascripts/templates/partials/enterprise_header.html.haml
2014-09-19 17:22:29 +10:00
Rafael Schouten
abc5a215a2 add map modals, profile filters and bugfixes 2014-09-19 17:07:07 +10:00
summerscope
919f87df58 change modal styling to improve look of Close button, overall layout for modals 2014-09-19 16:46:19 +10:00
Rafael Schouten
cf13115d57 bugfix is_profile bool 2014-09-19 16:44:51 +10:00
summerscope
408f7b7f10 Modals styling refine for small use cases 2014-09-19 16:44:43 +10:00
Rafael Schouten
e4991d4528 reorganise and document enterprise categories 2014-09-19 16:44:28 +10:00
summerscope
09cc3c6285 Styling for hero image underlay used on enterprises- adjust min heights for different text use cases 2014-09-19 16:44:16 +10:00
summerscope
5a7175e75d Tweak markup to make modals fit headers nicely across small sizes 2014-09-19 16:43:31 +10:00
summerscope
1c0196cf5d Change language for Kirsten 2014-09-19 16:25:34 +10:00
Rob Harrington
c6acbc6810 Assigning @spree_api_key for store 2014-09-19 16:09:26 +10:00
Rob Harrington
eeb54f3f76 Allow new user to create enterprises 2014-09-19 15:30:53 +10:00
summerscope
4c7fa4eb9f Fix markup so that text is not nested inside icon markup 2014-09-19 15:19:47 +10:00
summerscope
e5fc3c19e3 Working on refining scroll on modals 2014-09-19 14:41:45 +10:00
Rob Harrington
544e6e074a Stop being lazy 2014-09-19 14:38:59 +10:00
Rob Harrington
d3e72b5a2a Adding images to registration process 2014-09-19 12:41:24 +10:00
Rafael Schouten
f9cbdcee0a swap profile name 2014-09-19 12:18:02 +10:00
Rafael Schouten
527a139f72 Merge branch 'ent_types_frontend' of https://github.com/openfoodfoundation/openfoodnetwork into ent_types_frontend 2014-09-18 18:17:41 +10:00
Rafael Schouten
64fdbcf04f update enterprise type spec 2014-09-18 18:17:31 +10:00
Rafael Schouten
0d5106d571 refactor enterprise type logic and fix icons 2014-09-18 18:15:28 +10:00
summerscope
9a4ba5aa1f Producer page styling and logic for markup 2014-09-18 16:15:14 +10:00
summerscope
e1769e638d More styling for producer page 2014-09-18 16:14:53 +10:00
summerscope
24ca1b064a Tweak language for help popover 2014-09-18 15:34:56 +10:00
summerscope
0b59ca2dc1 Turning Show Profiles checkbox back on ready for logic 2014-09-18 15:33:44 +10:00
summerscope
7f4bccc956 fix anchor angular for link to hub shopfront 2014-09-18 15:22:53 +10:00
summerscope
20a76626b9 Add styling for instance where producer is own shopwfront on producer page 2014-09-18 15:22:29 +10:00
Rafael Schouten
1fdcbbec40 Merge branch 'ent_types_frontend' of https://github.com/openfoodfoundation/openfoodnetwork into ent_types_frontend 2014-09-18 15:15:01 +10:00
Rafael Schouten
bd922085c4 icons and entity category logic 2014-09-18 15:14:55 +10:00
summerscope
c42f83b6b1 Tweak markup to show producer name and write logic for link around producer if also own shopfront 2014-09-18 15:13:48 +10:00
Rafael Schouten
d75076e1c9 producer icons and inital link logic 2014-09-18 13:59:47 +10:00
Rafael Schouten
21628ed069 Merge branch 'master' into ent_types_frontend2 2014-09-17 17:45:55 +10:00
Rafael Schouten
e9dd863462 Merge branch 'master' into payment_description
Conflicts:
	app/views/spree/order_mailer/confirm_email.text.erb
2014-09-17 17:07:43 +10:00
Rafael Schouten
83b19ee632 fix haml and formatting on confirm email 2014-09-17 16:56:44 +10:00
Rafael Schouten
79fd8ed98b dubug mail template 2014-09-17 15:37:38 +10:00
Rafael Schouten
e618c4c2c0 add payment description to checkout 2014-09-17 14:56:29 +10:00
rafaqz
ee6b71b140 Merge pull request #260 from openfoodfoundation/currency
Merge Currency branch
2014-09-17 13:47:37 +10:00
Rafael Schouten
1c9bb906d1 Merge branch 'currency' of https://github.com/openfoodfoundation/openfoodnetwork into currency 2014-09-17 13:21:56 +10:00
Rafael Schouten
ac3c3f9f6c remove to_f on decimals 2014-09-17 13:19:34 +10:00
Rafael Schouten
6829636f11 comit ng-tst changes elsewhere 2014-09-17 13:19:08 +10:00
rafaqz
98ba135d49 Explain weird spree override 2014-09-17 13:12:27 +10:00
Rafael Schouten
4a93e9e94f Merge branch 'master' into currency 2014-09-17 12:49:10 +10:00
Rafael Schouten
a5680e611e add example yml 2014-09-17 12:05:28 +10:00
Rafael Schouten
b6fd3a11fa remove old mailer 2014-09-17 11:54:06 +10:00
Rafael Schouten
f79dfed6ef use haml for mailer 2014-09-17 11:53:47 +10:00
Rob Harrington
0fdbcc0023 Make dates consistent 2014-09-17 11:39:39 +10:00
Rob Harrington
eead8d665f Pending bulk order mgmt specs 2014-09-17 11:39:20 +10:00
Rafael Schouten
01c98bf6e4 refactor and bugfix for tests 2014-09-17 01:07:34 +10:00
Rob Harrington
22e61d9834 TEMP: spit out variables in failing oc spec 2014-09-16 23:47:34 +10:00
Rob Harrington
279c5925ef Add helpers to registration spec to counter JS weirdness 2014-09-16 23:46:34 +10:00
Rob Harrington
9e2e96d19e Schema weirdness 2014-09-16 23:45:36 +10:00
Rafael Schouten
49476b17e8 fix typos and add missing helper 2014-09-16 16:10:48 +10:00
Rafael Schouten
1aa80e53b1 Merge branch 'master' into currency
Conflicts:
	app/helpers/injection_helper.rb
	db/suburb_seeds.rb
2014-09-16 10:25:22 +10:00
Rafael Schouten
15bfe75313 ifnore figaro 2014-09-16 00:21:10 +10:00
Rafael Schouten
9448e1cbe4 add figaro env config 2014-09-16 00:13:43 +10:00
Rafael Schouten
5cf09d264c fix suburb typo 2014-09-14 12:27:24 +10:00
Rob H
143545da0d Try newer syntax to fix spec failing on CI 2014-09-12 23:41:26 +10:00
Rob H
0815775bc3 Temporary fix for race condition in registration spec 2014-09-12 17:22:54 +10:00
Rob H
30bcdde5ca Merge branch 'ent_types_frontend' into working 2014-09-12 16:45:58 +10:00
Rob H
cb7033eea0 Registration spec checks enterprise created and updated 2014-09-12 16:42:10 +10:00
Rohan Mitchell
25a889375c Fix unreliable spec 2014-09-12 16:39:47 +10:00
Rohan Mitchell
b41029d5d0 Spec reliability: Explicitly set a $0 calculator for shipping method 2014-09-12 16:11:31 +10:00
Rob H
d2c5533549 Remove use_short_wait 2014-09-12 16:10:38 +10:00
summerscope
cc9d2ebbac Modal styling fixes for scrolling on mobile view 2014-09-12 16:01:25 +10:00
summerscope
799bfae6e4 Revert "Add commented-out scrolling code. Return false from click handlers."
This reverts commit dbefd43f07.
2014-09-12 15:51:20 +10:00
summerscope
c365047d0c Short description goes back in producer fat view until we can clean up the HTML formatting 2014-09-12 15:40:12 +10:00
Rohan Mitchell
dbefd43f07 Add commented-out scrolling code. Return false from click handlers. 2014-09-12 15:33:02 +10:00
Rob H
8507690865 Fixing enterprise owner migration 2014-09-12 15:23:13 +10:00
summerscope
42fccd1bdf Merging master into my branch to make it up to date 2014-09-12 14:48:19 +10:00
summerscope
3cff83b7a5 Kill the outside modal close button styling once and for all 2014-09-12 14:42:58 +10:00
Rob H
05d8c825c7 Enterprise User should NOT see form elements for changing type 2014-09-12 13:40:47 +10:00
summerscope
0dd33e6635 Modal styling updates ated trying to fix mobile scrolling issue. getting there. 2014-09-12 13:40:00 +10:00
Rob H
bcca8c5c0d Merging master into all the things 2014-09-12 13:28:30 +10:00
Rob H
f5048ecf7c Sends confirmation email when Enterprise is created 2014-09-12 13:24:17 +10:00
Rohan Mitchell
4fb30f2942 When removing outgoing exchanges, do not removing variants from other outgoing exchanges 2014-09-12 12:50:04 +10:00
Rob H
5c7ab2efa3 Restrict editing of ownership and type in enterprise api controller 2014-09-12 12:47:16 +10:00
Rafael Schouten
9a1b524915 fix icon font class 2014-09-12 12:21:40 +10:00
Rob H
cc65faadd0 Specing out enterprise registration service properly 2014-09-12 11:48:17 +10:00
summerscope
a28eaba31a Turn off price graph pop overs for small devices 2014-09-12 11:45:13 +10:00
Rohan Mitchell
e50bbeaefb Edit product form shows permitted suppliers 2014-09-12 11:33:47 +10:00
summerscope
1c5a495d5c Making icons smaller, adding a bit of background shadow to pop them out 2014-09-12 11:29:41 +10:00
Rohan Mitchell
a6556f3a4f Fix broken JS specs 2014-09-12 11:12:35 +10:00
Rohan Mitchell
033fe88513 New product form shows permitted suppliers 2014-09-12 11:07:59 +10:00
summerscope
bfa71942fe Tweaks to input placeholder label 2014-09-12 11:02:28 +10:00
summerscope
01397b2e49 Tweaks to filter box 2014-09-12 11:01:35 +10:00
Rob H
6ee3010fa7 Differentiation of on-boarding process by url 2014-09-12 11:00:34 +10:00
summerscope
ecacde41dd Tweaks to big input for small screens 2014-09-12 11:00:10 +10:00
summerscope
126e9e82a6 Add in blues for use 2014-09-12 10:58:51 +10:00
summerscope
9c33be911c Update placeholder label 2014-09-12 10:49:59 +10:00
summerscope
6d7fd6dc94 Add in logic to change right hand label if this is the current hub 2014-09-12 10:48:33 +10:00
Rafael Schouten
309ddece89 make profile icons work 2014-09-12 10:38:04 +10:00
Rafael Schouten
3ea29df111 12 option entity categories 2014-09-12 10:11:59 +10:00
Rafael Schouten
05782b6ec1 Merge branch 'ent_types_frontend' of https://github.com/openfoodfoundation/openfoodnetwork into ent_types_frontend 2014-09-12 09:59:55 +10:00
Rafael Schouten
f33a9e1a58 16 enterprise categories from four checks. 2014-09-12 01:50:36 +10:00
Rob H
043cc915e7 Removing save_screenshot calls 2014-09-11 22:40:03 +10:00
Rob H
5007fd8ec3 Shipping method 1 is used, so shipping method amount is zero 2014-09-11 22:27:05 +10:00
Rob H
a7a99b5048 Pending registration spec 2014-09-11 18:15:33 +10:00
Rob H
12f5e48479 Replace is not with isnt - damn you CoffeeScript 2014-09-11 17:58:38 +10:00
Rob H
98f7e58f9d Registration spec expects the correct url 2014-09-11 17:58:05 +10:00
summerscope
de64a5154b Fixing markup icon class name was incorrect 2014-09-11 17:13:07 +10:00
Rob H
048a741a2c Plugging final two registration pages into validation 2014-09-11 17:11:53 +10:00
Rob H
19565a5f3b Rename service 2014-09-11 17:10:59 +10:00
Rob H
fc0afae51c Adding form validation to contact page 2014-09-11 17:10:59 +10:00
Rob H
454e4c971a Adding validation to address page 2014-09-11 17:10:59 +10:00
Rob H
34841f8543 Refactoring registration form controller 2014-09-11 17:10:59 +10:00
Rob H
412e906ed3 Adding basic validation to reg process 2014-09-11 17:10:59 +10:00
Rob H
800eecea33 Fix failing bulk specs 2014-09-11 17:10:58 +10:00
summerscope
8d570286a1 Adding in sexy logic to add color to name depending on type 2014-09-11 17:10:58 +10:00
summerscope
f8c761f492 Comment out unused section, set column layout to match previous step 2014-09-11 17:10:58 +10:00
summerscope
e0fff552f9 Adjust button layout at bottom of page 2014-09-11 17:10:58 +10:00
summerscope
4d8796669b Adding in pretty alert boxes, yay! 2014-09-11 17:10:58 +10:00
summerscope
dc5506d06b Adjust button layout at bottom of page 2014-09-11 17:10:58 +10:00
summerscope
100d672eef Adjust button layout at bottom of page 2014-09-11 17:10:58 +10:00
summerscope
6486e41576 More styling for registration 2014-09-11 17:10:08 +10:00
summerscope
a5fefbe6bb More styling for register form 2014-09-11 17:10:07 +10:00
summerscope
912b7a8f95 Add a color class for global use 2014-09-11 17:10:07 +10:00
summerscope
75c62a7cb8 Markup changes to step 2 address 2014-09-11 17:10:07 +10:00
summerscope
2917c0fa44 More styling and work on step 1 - DETAILS 2014-09-11 17:10:07 +10:00
Rob H
c93673d78b Adding form to each page of registration 2014-09-11 17:10:07 +10:00
summerscope
c54b18a416 Cleanupm markup 2014-09-11 17:07:07 +10:00
summerscope
8a4dcef7fe Tweak layout and simplify column structures 2014-09-11 17:07:07 +10:00
summerscope
500cb65b41 Styling for registration steps 2014-09-11 17:07:07 +10:00
summerscope
d1b8b12901 Tweak custom bullet point styles 2014-09-11 17:07:07 +10:00
Rob H
a16da4eae0 Commenting out enterprise creation 2014-09-11 17:07:07 +10:00
Rob H
f1ef8ba3c7 Getting signup to work and authentication to load in reg specific template 2014-09-11 17:07:07 +10:00
summerscope
8b928b5a66 Styling on-boarding wizard Introduction step 2014-09-11 17:07:06 +10:00
summerscope
08d3eb6f93 Making the modals higher relative to their respective window 2014-09-11 17:07:06 +10:00
summerscope
36f719d538 Creating new style of bullet point list 2014-09-11 17:07:06 +10:00
summerscope
db58fb5b0c Pretty potatoes picture for creating profile wizard 2014-09-11 17:07:06 +10:00
Rob H
f1f9a2e7fc Updating on later pages of registration process 2014-09-11 17:07:06 +10:00
summerscope
60d6599f9b Tweak chirpy message in view 2014-09-11 17:07:06 +10:00
Rob H
dc43612a04 Adding an 'r' 2014-09-11 17:07:06 +10:00
Rob H
bc0c9dd229 Adding the social page to registration form 2014-09-11 17:07:06 +10:00
Rob H
b848d583ff Adding the remainder of pages to registration process 2014-09-11 17:07:05 +10:00
Rob H
e341b12d3a Adding loading message when creating enterprise 2014-09-11 17:07:05 +10:00
Rob H
4d106129ee Creating an about page including flash boxes for registration 2014-09-11 17:07:05 +10:00
Rob H
69b1d14cc4 Adding authorize to api enterprise create 2014-09-11 17:07:05 +10:00
Rob H
ef8f611458 Adding countries and states to registration 2014-09-11 17:07:05 +10:00
Rob H
7dc42c9e39 Creating an enterprise works in registration process 2014-09-11 17:07:05 +10:00
Rob H
3d4e00a03c Swtich API key injection over to helper 2014-09-11 17:07:05 +10:00
summerscope
a642ad0855 More style detail for small view inactive hub small views 2014-09-11 17:00:59 +10:00
Rob H
10f97fe14b Adding some icons to registration pages 2014-09-11 16:34:21 +10:00
Rob H
07f9dc23e0 Making button styling a bit nicer 2014-09-11 16:34:21 +10:00
Rob H
29e78e63ad Playing with resizing 2014-09-11 16:34:20 +10:00
Rob H
95bfc74b3f No need to deal with locations in registration 2014-09-11 16:34:20 +10:00
Rob H
e1400705fe Adding contact step to registration process 2014-09-11 16:34:20 +10:00
Rob H
843c6ea6a6 Fix styling on details page 2014-09-11 16:34:20 +10:00
Rob H
c53df00969 Adding address step to registration process 2014-09-11 16:34:20 +10:00
Rob H
5f09f1b4f7 Pull out styling for registration process 2014-09-11 16:34:20 +10:00
Rob H
c92aa41e28 Adding introduction and details pages to registration process 2014-09-11 16:34:19 +10:00
Rob H
595aa760cb Loads registration page with authentication 2014-09-11 16:34:19 +10:00
summerscope
94165f17e4 Merging master into this branch to keep repository up to date 2014-09-11 16:33:44 +10:00
summerscope
24507c6c0a turn off Profile filter again until ready to support this 2014-09-11 16:29:38 +10:00
summerscope
1eef483c44 Hub node styling for different use cases of active / inactive / current / open / closed 2014-09-11 15:42:37 +10:00
summerscope
af064a3fc7 Adding more spacing for fat view on small devices - vertical spacing for each chunk 2014-09-11 15:42:08 +10:00
summerscope
de7837aea9 New greys and translucent colors for global use 2014-09-11 15:41:28 +10:00
summerscope
7d0cf2ace9 Adding rounded corners to producers nodes for active table 2014-09-11 15:41:01 +10:00
summerscope
71918539b8 Undo changing name Hubs to Shops, for the moment 2014-09-11 15:40:35 +10:00
summerscope
16ad465571 tweak placeholder name 2014-09-11 15:40:12 +10:00
Rob H
ad56594fe9 Removing obsolete spec 2014-09-11 15:19:24 +10:00
Rob H
c0e4a22a6e Adding enterprise_limit form element to user edit page 2014-09-11 15:19:24 +10:00
Rob H
7780046d71 Clicking on user email takes me to the edit page rather than the annoying 'show' intermediary 2014-09-11 15:19:24 +10:00
Rob H
a3f7fc1202 Adding column for enterprise limit on users index page 2014-09-11 15:19:23 +10:00
Rob H
9085741f3c Removing enterprises form from user edit page 2014-09-11 15:19:23 +10:00
Rob H
8cc5c2246a Hide 'Create New' enterprise link on dashboard when user has reached limit 2014-09-11 15:19:23 +10:00
Rob H
eb6af408d7 Trailing spaces crusader: one man, a million trailing spaces 2014-09-11 15:19:23 +10:00
Rob H
60297eb5c8 Hide 'New Enterprise' link on index page when user has reached limit 2014-09-11 15:19:23 +10:00
Rob H
41b286f80f Delete specific E2ER in spec 2014-09-11 14:54:51 +10:00
Rob H
f1c19ea64c Enterprise validates owner enterprise_limit 2014-09-11 14:54:51 +10:00
Rob H
7fbc9aa680 User validates the number of enterprises owned 2014-09-11 14:54:51 +10:00
Rob H
2253859cd1 Adding enterprise limit to spree users 2014-09-11 14:54:51 +10:00
Rob H
e83e2295ed Adding some extra controller-level specs for enterprise ownership 2014-09-11 14:54:51 +10:00
Rob H
3e1f4628e3 Can change owner of enterprises from index page 2014-09-11 14:51:22 +10:00
Rob H
7983b2f45a Adding changing ownership to enterprise update spec 2014-09-11 14:39:15 +10:00
Rob H
e106c7a0cd Initialise user autocomplete element using data from element itself rather than AJAX request 2014-09-11 14:39:15 +10:00
Rob H
13d814ff23 Adding user autocomplete directive to speed up specification of owner for enterprises 2014-09-11 14:39:15 +10:00
Rob H
73a32fdaf1 Remove distributor_info: 'how does it work' from enterprises edit page 2014-09-11 14:39:14 +10:00
Rob H
8e91e4513d Remove rich text editors from about us in enterprise editor 2014-09-11 14:39:14 +10:00
Rob H
4bde6a0a3d WIP: VERY SLOW PAGE LOAD: Super admin can edit owner of enterprise from edit screen 2014-09-11 14:39:14 +10:00
Rob H
138e0281a3 Specify owner for enterprise create action 2014-09-11 14:39:14 +10:00
Rob H
31de5d45ea Adding owner to enterprise 2014-09-11 14:36:09 +10:00
Rob H
58f28f112a Enterprise index type selection is only visible to super admin 2014-09-11 14:22:47 +10:00
summerscope
997479f5be Change label on mobile menu 2014-09-11 13:05:21 +10:00
Rafael Schouten
0fa4540cec Merge branch 'master' into currency 2014-09-11 12:09:18 +10:00
summerscope
bebe0c41f6 Styling for hubs and producers - adding rounded corners, making current shop less intense 2014-09-11 11:50:46 +10:00
Rafael Schouten
09a4c4e17e add spree currency helper, fix some typos and specs 2014-09-11 11:47:55 +10:00
Rafael Schouten
c1971d015c fix bug in mailer 2014-09-10 19:59:39 +10:00
Rafael Schouten
666036756e fixup docs etc 2014-09-10 19:50:32 +10:00
Rafael Schouten
dc266e066f another few class names 2014-09-10 19:43:14 +10:00
Rafael Schouten
44e9cf5ade add currency spec file and update some class names 2014-09-10 18:22:33 +10:00
Rohan Mitchell
69d1111c73 Fix expected payment amount 2014-09-10 17:00:51 +10:00
Rohan Mitchell
32a2e793ad When deleting enterprise relationships, delete dependent permissions 2014-09-10 14:49:15 +10:00
Rohan Mitchell
c297b7014a Charge customers for their shipping fee 2014-09-10 14:01:36 +10:00
Rohan Mitchell
4168ea054b For body content, cloak the home page only. JS should be cached after that. 2014-09-10 12:12:46 +10:00
Rohan Mitchell
b49eb8fe03 Hide angular templates on page load 2014-09-10 11:50:30 +10:00
Rob H
78a70292ac Moved attributes are actually delcared in the right place for Enterprise Serializer 2014-09-08 15:39:17 +10:00
Rob H
dfa837cac6 Moved cached properties which should not be cached 2014-09-08 15:01:34 +10:00
Rob H
b49a4cbc4f Fix intermittent failing spec 2014-09-08 11:11:07 +10:00
Rob H
3ee0cf46e0 Merge branch 'working' into merging 2014-09-08 10:12:31 +10:00
Rob H
36891c73cb Merge branch 'master' into merging 2014-09-08 10:09:51 +10:00
Rob H
a968aa9b91 Removing float:left which weirdly breaks specs 2014-09-08 10:09:00 +10:00
Rafael Schouten
991d0029dd add currency localisation 2014-09-08 00:06:53 +10:00
Rob H
5fb4110328 Adding distributor and producer checkboxes to enterprise index 2014-09-07 21:04:53 +10:00
Rob H
6540bb8efc Adding select field for enterprise type to index when super admin 2014-09-07 19:51:14 +10:00
Rob H
b8fadb50ae Special Instructions in checkout are actually wired up 2014-09-06 12:00:27 +10:00
Rob H
9dc2b248c7 Bulk management permissions make more sense 2014-09-06 09:37:34 +10:00
Rob H
ee4a1925fe Bulk Order Management works with navigation helper override 2014-09-06 00:34:27 +10:00
Rob H
780df6bfe0 Hide 'profile type' form element for non super-admin users 2014-09-05 18:38:43 +10:00
Rob H
58dcdbd9c4 Restricting ability to change enterprise type at the controller level 2014-09-05 18:30:15 +10:00
summerscope
2e8ec3df18 Tweak placeholder messages for big inputs 2014-09-05 18:07:50 +10:00
summerscope
6271b83fad Tweak placeholder messages for big inputs 2014-09-05 18:07:28 +10:00
summerscope
778cf0326b Changing placeholder for 2014-09-05 18:04:02 +10:00
summerscope
94e3946d52 producer list view styling 2014-09-05 17:54:16 +10:00
summerscope
0b74242f49 make classes more generic for more use-cases 2014-09-05 17:53:52 +10:00
summerscope
bb82fc4b20 move generic things into active table 2014-09-05 17:53:27 +10:00
summerscope
6e10c416e2 hub view styling 2014-09-05 17:53:14 +10:00
summerscope
ab44046658 skinny view producers remove unnecessary spacer element 2014-09-05 17:52:36 +10:00
summerscope
a9619a6dca Changes to markup on producer page to adjust layout 2014-09-05 17:50:50 +10:00
Rob H
20bfcd6e48 Switching enterprise relationships form around 2014-09-05 17:11:57 +10:00
summerscope
60ac3f29a5 Producers page WIP 2014-09-05 16:41:00 +10:00
summerscope
adb8b6b02f Styling for help icon 2014-09-05 16:40:59 +10:00
summerscope
b3f97479d3 Hide profile filter from search for the mo 2014-09-05 16:40:59 +10:00
Rob H
097367a9f8 Map modals for 'profile' enterprises do not display shopping options 2014-09-05 16:28:08 +10:00
Rob H
1e1ddedfb2 Merge remote-tracking branch 'origin/ent_types_frontend' into ent_types_frontend 2014-09-05 16:18:45 +10:00
Rob H
428e4c63d4 Profile hubs don't show up in hubs list 2014-09-05 16:18:25 +10:00
summerscope
0d0ffa1cd0 Making CTA links consistent with modals, adding in logic to force space holding for producer fat view 2014-09-05 15:47:41 +10:00
summerscope
a092e97294 Adding a little bit of spacing between each row for active table 2014-09-05 15:47:14 +10:00
summerscope
26bd1000de Changing placeholder for search input 2014-09-05 15:28:50 +10:00
summerscope
59adae5c9c Working on space placeholders for fat view 2014-09-05 15:28:32 +10:00
Rob H
233532a85f Merge remote-tracking branch 'origin/ent_types_frontend' into ent_types_frontend 2014-09-05 15:14:48 +10:00
summerscope
99fb9c1966 Adding in markup and styling for new layout of hubs list view 2014-09-05 15:10:17 +10:00
Rohan Mitchell
3a12f9a7c8 Extract bulk product edit interface into partials 2014-09-05 15:10:17 +10:00
Rohan Mitchell
4d766a29ab Convert admin login nav to haml 2014-09-05 15:10:16 +10:00
Rohan Mitchell
c43c35601b Set product.largeImage in JS, use for product modal 2014-09-05 15:10:16 +10:00
Rohan Mitchell
fe1c60ba47 Enterprise manager can edit products from enterprises it has manage_products permission on 2014-09-05 15:10:16 +10:00
Rohan Mitchell
b7708d750b Check authorisation for bulk update products 2014-09-05 15:10:15 +10:00
Rohan Mitchell
fbd4f98fa9 Include producers I have permission to in BPE producers choice 2014-09-05 15:10:15 +10:00
Rohan Mitchell
9ec5dc6466 Find enterprises that we manage products for 2014-09-05 15:10:14 +10:00
Rohan Mitchell
e023a66167 Bulk product edit lists managed products 2014-09-05 15:10:14 +10:00
Rohan Mitchell
4af704b1d0 Fetch managed products via OpenFoodNetwork::Permissions 2014-09-05 15:10:14 +10:00
Rohan Mitchell
1ea63bca6e Name test enterprises semantically 2014-09-05 15:10:14 +10:00
digital dreamer
503fb53750 Fix #242 - foreign key constraint error on load_sample_data 2014-09-05 15:10:14 +10:00
Rohan Mitchell
6ff6e4248c Rename spec to match view name change 2014-09-05 15:10:14 +10:00
Rohan Mitchell
57af658e7c For OC, fetch all enterprises we have access to, including those via E2E relationships 2014-09-05 15:10:13 +10:00
Rohan Mitchell
913c167fdf Revert 5ede8d1, reinstating a4be0ff..7b89e6a 2014-09-05 15:10:12 +10:00
Maikel Linke
7603ea867f Store links to root_path instead of product_path 2014-09-05 15:10:12 +10:00
Maikel Linke
c5cfda5283 Adding login_nav partial from spree_auth_devise
Preparing to change 'Store' link for Bugherd #443.
2014-09-05 15:10:12 +10:00
Maikel Linke
aaa32528ea Giving an example name for an enterprise fee.
The example is displayed as input placeholder. See bugherd #439.
2014-09-05 15:10:11 +10:00
Maikel Linke
602dfbe002 ng_text_field handling options parameter 2014-09-05 15:10:10 +10:00
Rob H
14aada1808 Add 'profile only' logic to maps icons 2014-09-05 15:09:15 +10:00
Rob H
32ee8afdce logic for producer shop icon in list view 2014-09-05 14:46:04 +10:00
summerscope
7b9ff9b6dd Merge branch 'ent_types_frontend' of github.com:openfoodfoundation/openfoodnetwork into ent_types_frontend
Conflicts:
	app/views/home/_skinny.html.haml
2014-09-05 12:48:05 +10:00
summerscope
658c27408e Styling for hub listing page and tweaks to markup to accomodate new icons and styling 2014-09-05 12:32:45 +10:00
Rob H
8f6d04a129 Adding properties to enterprise serialiser to allow differentiation between profile, shopfront and aggregators 2014-09-05 12:30:52 +10:00
summerscope
b487c9848b Add checkbox for show / hide profiles 2014-09-05 12:15:14 +10:00
summerscope
94fbb624f5 Make CTA links separate from hub link styling 2014-09-05 12:14:55 +10:00
summerscope
ed0f2de2f3 More styling for CTA links on modals 2014-09-05 11:56:21 +10:00
summerscope
c64ef39e22 Ran a DB:micrate, this is a change to the order 2014-09-05 11:39:43 +10:00
summerscope
0138fded17 Styling for modals 2014-09-05 11:39:04 +10:00
summerscope
116eb6a2c6 template updates for modals - links not buttons 2014-09-05 11:38:19 +10:00
Rohan Mitchell
0fd496aa97 Extract bulk product edit interface into partials 2014-09-02 15:27:51 +10:00
Rohan Mitchell
4d57a73ee3 Merge branch 'digital-dreamer-fix-242-foreign-key' 2014-09-02 14:08:45 +10:00
Rohan Mitchell
7d6dbeba28 Merge branch 'fix-242-foreign-key' of https://github.com/digital-dreamer/openfoodnetwork into digital-dreamer-fix-242-foreign-key 2014-09-02 14:02:14 +10:00
Rohan Mitchell
f53ed4bf31 Merge branch 'admin-panel-store-link' 2014-09-02 13:45:25 +10:00
Rohan Mitchell
818a0f8595 Convert admin login nav to haml 2014-09-02 13:45:11 +10:00
Rohan Mitchell
a347152490 Merge branch 'master' into admin-panel-store-link 2014-09-02 13:39:46 +10:00
Rohan Mitchell
fce2147dc1 Merge branch 'enterprise-fee-naming-example' 2014-09-02 13:39:11 +10:00
Rohan Mitchell
7247e65115 Merge branch 'master' into enterprise-fee-naming-example 2014-09-02 13:36:50 +10:00
Rohan Mitchell
2cd5afbf9c Set product.largeImage in JS, use for product modal 2014-09-01 16:21:23 +10:00
Rohan Mitchell
e72c3d861b Enterprise manager can edit products from enterprises it has manage_products permission on 2014-09-01 11:49:09 +10:00
Rohan Mitchell
94683f1eaa Check authorisation for bulk update products 2014-09-01 11:15:00 +10:00
Rohan Mitchell
c81503d95f Include producers I have permission to in BPE producers choice 2014-09-01 10:44:09 +10:00
Rohan Mitchell
4d8d74dec7 Find enterprises that we manage products for 2014-09-01 10:36:59 +10:00
Rohan Mitchell
cfb31b46e4 Bulk product edit lists managed products 2014-09-01 10:13:59 +10:00
Rohan Mitchell
e0645dfbd9 Fetch managed products via OpenFoodNetwork::Permissions 2014-09-01 09:42:50 +10:00
Rohan Mitchell
66f20a6b8a Name test enterprises semantically 2014-09-01 09:17:38 +10:00
digital dreamer
ac48613556 Fix #242 - foreign key constraint error on load_sample_data 2014-08-29 13:42:27 +02:00
summerscope
a4aa949499 Applying new icons for map view 2014-08-29 18:04:06 +10:00
summerscope
ae442769b5 New version of icon font for OFN system 2014-08-29 18:03:47 +10:00
summerscope
a31e8ff82f New map icons 2014-08-29 18:03:15 +10:00
summerscope
4efe3fdf88 Remove old map icons 2014-08-29 18:01:54 +10:00
Rohan Mitchell
62e6cacfd0 Rename spec to match view name change 2014-08-29 17:37:56 +10:00
Rohan Mitchell
7f74854a2f For OC, fetch all enterprises we have access to, including those via E2E relationships 2014-08-29 16:38:23 +10:00
Rohan Mitchell
0b61872d96 Revert 5ede8d1, reinstating a4be0ff..7b89e6a 2014-08-29 16:38:10 +10:00
Maikel Linke
ef639b9535 Adjusting columns for 16 column layout.
Removed the 1col spacer column and extended the fieldsets to 12col.
2014-08-28 17:06:26 +10:00
Maikel Linke
a379f88add making asterisk 10% bigger 2014-08-28 16:41:10 +10:00
Maikel Linke
a0d6ec988e make asterisk red 2014-08-28 16:38:44 +10:00
Maikel Linke
8da98ce19c Adding asterisks to required fields.
Addressing BugHerd #454.
2014-08-28 16:26:30 +10:00
Rob H
ba3f97ca1f Fixing enterprise relationships spec 2014-08-28 14:45:24 +10:00
Rob H
5ede8d169f Revert a4be0ff..7b89e6a for deployment 2014-08-28 14:32:57 +10:00
Rob H
bfd9ffd84a Adding missing data-bindings for country/state 2014-08-28 14:25:21 +10:00
Rohan Mitchell
7b89e6aa80 Revert "Comment out ERPs which have confusing names, use old 'permits'"
This reverts commit a4be0ff55a.
2014-08-28 10:12:06 +10:00
Rohan Mitchell
1871d42e68 Switch to correct grammatical ordering of child/parent enterprise on enterprise relationships page 2014-08-28 10:09:50 +10:00
Rohan Mitchell
a5debc19dc Permit edits to exchanges involving enterprises permitted via E2E relationships 2014-08-28 10:09:50 +10:00
Rohan Mitchell
628d87b69a Add to OC permission allows adding distributors to order cycle 2014-08-28 10:09:50 +10:00
Rohan Mitchell
5ef13d3c5a Change 'add products to OC' permission into the more general 'add enterprise to OC' 2014-08-28 10:09:50 +10:00
Rohan Mitchell
099a5b0b7b Show E2E related enterprise exchanges in OC 2014-08-28 10:09:50 +10:00
Rohan Mitchell
34602244ca Show permitted suppliers in order cycle add supplier select box 2014-08-28 10:09:50 +10:00
Rohan Mitchell
b9e5821497 Add EnterpriseRelationship scopes permitting and with_permission 2014-08-28 10:09:50 +10:00
Rohan Mitchell
8548a1a67e Determine producer options on order cycle screen through OpenFoodNetwork::Permissions class 2014-08-28 10:09:50 +10:00
Rohan Mitchell
a7689973be Semantically name enterprises in spec 2014-08-28 10:09:50 +10:00
Rohan Mitchell
5e8bdce67d Refactor spec 2014-08-28 10:09:50 +10:00
Rob H
a4be0ff55a Comment out ERPs which have confusing names, use old 'permits' 2014-08-27 17:07:30 +10:00
Rob H
7124dc57fd Requiring a state in checkout 2014-08-27 16:59:26 +10:00
Rob H
400f2ea9b9 Don't add payment forms to checkout DOM unless required 2014-08-27 15:09:41 +10:00
Rohan Mitchell
0462b3e55d Prevent duplicate enterprise roles 2014-08-26 14:40:34 +10:00
Rob H
435819acc4 Removing unit text from total units column 2014-08-25 20:29:24 +10:00
Rob H
310d1b3726 Zeus server does not crash when editing controllers 2014-08-25 20:29:24 +10:00
Rob H
0d9e07d484 Make restore script compatible with OSX 2014-08-25 20:29:23 +10:00
Rohan Mitchell
45a44844ca Remove old rabl spec 2014-08-25 16:38:17 +10:00
Rohan Mitchell
1a995aedda Simplify enterprise_relationship factory - leverage permissions_list= model method 2014-08-25 15:20:46 +10:00
Rohan Mitchell
c3224ce668 Style permission list items, order perms consistently by name 2014-08-25 15:05:49 +10:00
Rohan Mitchell
3932884dba Admin can create enterprise relationships with permissions 2014-08-25 14:59:10 +10:00
Rohan Mitchell
057ad9c6d3 Set enterprise relationship permissions from a list 2014-08-25 14:54:52 +10:00
Rohan Mitchell
50c559964c Display enterprise relationship permissions 2014-08-25 13:28:02 +10:00
Rohan Mitchell
b4e89ad2c0 Convert enterprise relationship permission to string presentation 2014-08-25 13:27:01 +10:00
Rohan Mitchell
70feef1256 Add EnterpriseRelationshipPermission model 2014-08-25 13:26:23 +10:00
Rohan Mitchell
cb615ba994 Render enterprise relationships JSON with AMS instead of rabl 2014-08-25 13:07:31 +10:00
Rohan Mitchell
3524e658f8 Error when creating product and master is invalid, instead of creating a product without a master 2014-08-25 11:52:15 +10:00
Rohan Mitchell
4ceaec0ef5 Do not error when checking out with a pre-loaded shipping/billing address 2014-08-22 17:34:42 +10:00
Maikel Linke
adf4f92ffb Store links to root_path instead of product_path 2014-08-22 16:10:23 +10:00
Maikel Linke
ca7eb72688 Adding login_nav partial from spree_auth_devise
Preparing to change 'Store' link for Bugherd #443.
2014-08-22 16:04:46 +10:00
Rohan Mitchell
dd42b0c239 Split out opening payments into own context 2014-08-22 14:38:44 +10:00
Rohan Mitchell
e173c69ee3 Fix arrow position 2014-08-19 16:53:23 +10:00
Rohan Mitchell
b35c5e902f Fix broken JS specs 2014-08-19 16:47:51 +10:00
Rohan Mitchell
e3b4f6efc1 When profile admin only, do not show payment methods, shipping methods or enterprise fees when editing profile 2014-08-19 16:43:18 +10:00
Rohan Mitchell
a533daab96 Split sidebar into parts 2014-08-19 16:41:49 +10:00
Rohan Mitchell
4b42c28bd5 Refactor admin enterpriseCtrl - variable naming, if x then true else false antipattern 2014-08-19 16:34:56 +10:00
Rohan Mitchell
3e97762f7e Remove unused producer options on hub tab, make logic consistently ordered 2014-08-19 16:23:05 +10:00
Rohan Mitchell
79387d3d82 On admin enterprises listing page, do not show links to pages without perms 2014-08-19 16:15:17 +10:00
Rohan Mitchell
2706c0e47e Extract enterprise actions to partial 2014-08-19 16:11:20 +10:00
Rohan Mitchell
5dc7d1ee11 For users without product management perms, show a cut-down admin dashboard 2014-08-19 16:02:11 +10:00
Rohan Mitchell
9451f3659c Use pluralize helper, sentence case 2014-08-19 15:41:01 +10:00
Rohan Mitchell
e1a1b74f03 Extract dashboard enterprises table markup into partials 2014-08-19 14:49:20 +10:00
Rohan Mitchell
50e4c5fac9 Users with only a profile-level enterprise see only menu items for enterprise management 2014-08-19 14:26:45 +10:00
Rohan Mitchell
abe592c9a3 Allow Reports admin tab to be enabled/disabled through cancan :report resource 2014-08-19 14:22:19 +10:00
Rohan Mitchell
0e6cd30e7e Edit for clarity 2014-08-19 13:27:45 +10:00
Rohan Mitchell
732a61664f Split abilities into enterprises/products/relationships 2014-08-19 13:21:20 +10:00
Rohan Mitchell
a858c21296 Enterprise has a type (full, single, profile), editable by admin 2014-08-19 11:37:31 +10:00
Rohan Mitchell
2660ffd459 Fix duplicate enterprise role 2014-08-16 16:33:07 +10:00
Rohan Mitchell
a0a752a3b1 Don't re-create FK 2014-08-15 17:34:24 +10:00
Rohan Mitchell
63f9abdf5c Add CSS3 animations to enterprise roles admin 2014-08-15 16:09:06 +10:00
Rohan Mitchell
9ddfb1584b Admin can delete enterprise roles 2014-08-15 16:09:06 +10:00
Rohan Mitchell
95a0bf39f7 Enterprise roles must be unique 2014-08-15 16:09:05 +10:00
Rohan Mitchell
6e17f0aaa2 Admin can create enterprise roles 2014-08-15 16:09:05 +10:00
Rohan Mitchell
8bc9def6ae Switch to AMS for enterprise role serialisation 2014-08-15 16:09:05 +10:00
Rohan Mitchell
1d77812ab8 Admin can list enterprise roles 2014-08-15 16:09:04 +10:00
summerscope
a03c4f7110 Merge branch 'master' into laura_and_will 2014-08-15 12:17:05 +10:00
summerscope
7f6a7b4254 Adding underlines to links on modals for map view etc to try and make these more intuitive and usable 2014-08-15 11:02:21 +10:00
summerscope
8ef91d1b2a Styling and layout tweaks for checkout page to improve how columns sit on small devices 2014-08-14 12:09:55 +10:00
summerscope
3d2c196237 Tweak layout for checkout accordions to prevent expand and hide from dropping over two lines on small devices 2014-08-14 12:09:23 +10:00
Rohan Mitchell
50b8eaecab Add fundraising fees 2014-08-13 15:07:32 +10:00
Rohan Mitchell
f30c67da7b Remove crowdfunding notice from README 2014-08-12 14:07:16 +10:00
Rohan Mitchell
d05e5e430a Revert "Adding CTA button for crowdfunding site to homepage & countdown timer directive"
This reverts commit 75f3358e2a.
2014-08-12 14:06:13 +10:00
Rohan Mitchell
cc011f5136 Switch to forked version of better_spree_paypal_express - passes customer email and phone number to paypal. Waiting on PR #117 2014-08-12 12:34:42 +10:00
Rob H
a7b3bbee74 Overriding payment method load_data to hide Bogus Gateways 2014-08-09 12:52:00 +10:00
Rob H
c20369919c Can change hub after changing pm type 2014-08-09 11:23:05 +10:00
Rob H
044a4c6816 Finish changing class names for PayPal gateways 2014-08-08 23:19:13 +10:00
Rob H
a8b823668f Fix checkout specs failing due to payment method not having hub 2014-08-08 22:40:24 +10:00
Rob H
51f912033b Remove test for PayPalExpress UK which does not exist anymore 2014-08-08 22:39:26 +10:00
Rob H
115d8e0d6e Smoosh distributions up into cart item subtotal in order confirmation email 2014-08-08 17:50:00 +10:00
Rob H
40d290951c Fix failing specs related to requiring distributor for payment method 2014-08-08 17:47:51 +10:00
Rob H
6b73eb435c Add js specs for providers controller 2014-08-08 17:47:51 +10:00
Rob H
9e54162a62 Annoying migration changes 2014-08-08 17:47:51 +10:00
Rob H
d80166e80d Restrict access to show_provider_preferences action on payment methods controller 2014-08-08 17:47:50 +10:00
Rob H
f19af52556 WIP: angularised provider settings for payment method works on create (for admin only at this stage) 2014-08-08 17:47:50 +10:00
Rob H
f430267304 Specs for show_provider_preferences 2014-08-08 17:47:50 +10:00
Rob H
16215289d0 Spec for payment method clean_name translation 2014-08-08 17:47:50 +10:00
Rob H
f021d260b1 Require payment_methods to be associated with at least one hub 2014-08-08 17:47:50 +10:00
Rob H
d6aae0050f Angularise payment method provider UI 2014-08-08 17:47:50 +10:00
Rob H
55e29832e1 Make name of payment_methods more human readable 2014-08-08 17:47:50 +10:00
Rob H
1cbdd9a5fa WIP: rearrange payment methods page 2014-08-08 17:47:49 +10:00
Rob H
25d7adac83 WIP: Replace configuration menu on payment methods edit page 2014-08-08 17:47:49 +10:00
Maikel Linke
bd3a4acc15 Giving an example name for an enterprise fee.
The example is displayed as input placeholder. See bugherd #439.
2014-07-31 15:21:13 +10:00
Maikel Linke
722ccfc83b ng_text_field handling options parameter 2014-07-31 15:20:22 +10:00
622 changed files with 13910 additions and 5838 deletions

2
.gitignore vendored
View File

@@ -15,6 +15,7 @@ tmp/
.#*
*~
*.~lock.*
tags
.emacs.desktop
.DS_Store
*.sublime-project*
@@ -36,3 +37,4 @@ config/initializers/feature_toggle.rb
NERD_tree*
coverage
libpeerconnection.log
/config/application.yml

View File

@@ -7,6 +7,7 @@ before_install:
before_script:
- cp config/database.travis.yml config/database.yml
- psql -c 'create database open_food_network_test;' -U postgres
- cp config/application.yml.example config/application.yml
script:
- RAILS_ENV=test bundle exec rake db:migrate --trace
- bundle exec rake spec

14
Gemfile
View File

@@ -2,12 +2,17 @@ source 'https://rubygems.org'
ruby "1.9.3"
gem 'rails', '3.2.19'
gem 'rails-i18n', '~> 3.0.0'
gem 'pg'
gem 'spree', :github => 'openfoodfoundation/spree', :branch => '1-3-stable'
gem 'spree_i18n', :github => 'spree/spree_i18n'
gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => '1-3-stable'
gem 'spree_paypal_express', :github => "spree-contrib/better_spree_paypal_express", :branch => "1-3-stable"
# Waiting on merge of PR #117
# https://github.com/spree-contrib/better_spree_paypal_express/pull/117
gem 'spree_paypal_express', :github => "openfoodfoundation/better_spree_paypal_express", :branch => "1-3-stable"
#gem 'spree_paypal_express', :github => "spree-contrib/better_spree_paypal_express", :branch => "1-3-stable"
gem 'comfortable_mexican_sofa'
@@ -38,6 +43,9 @@ gem 'gmaps4rails'
gem 'spinjs-rails'
gem 'rack-ssl', :require => 'rack/ssl'
gem 'custom_error_message', :github => 'jeremydurham/custom-err-msg'
gem 'angularjs-file-upload-rails', '~> 1.1.0'
gem 'roadie-rails', '~> 1.0.3'
gem 'figaro'
gem 'foreigner'
gem 'immigrant'
@@ -86,7 +94,9 @@ end
group :test do
gem 'webmock'
gem 'perftools.rb'
# See spec/spec_helper.rb for instructions
#gem 'perftools.rb'
end
group :development do

View File

@@ -12,9 +12,18 @@ GIT
specs:
custom_error_message (1.1.1)
GIT
remote: git://github.com/openfoodfoundation/better_spree_paypal_express.git
revision: cdd61161ccd27cd8d183f9321422c7be113796b8
branch: 1-3-stable
specs:
spree_paypal_express (2.0.3)
paypal-sdk-merchant (= 1.106.1)
spree_core (~> 1.3.4)
GIT
remote: git://github.com/openfoodfoundation/spree.git
revision: bbe5e779bcb883a1726ad4006d7c06b06c3f5372
revision: 4e0075b07acb56864aca89eee3d9670136176c23
branch: 1-3-stable
specs:
spree (1.3.6.beta)
@@ -41,7 +50,7 @@ GIT
json (>= 1.5.5)
kaminari (= 0.14.1)
money (= 5.1.1)
paperclip (~> 2.8)
paperclip (~> 3.0)
rabl (= 0.7.2)
rails (~> 3.2.16)
ransack (= 0.7.2)
@@ -54,15 +63,6 @@ GIT
spree_sample (1.3.6.beta)
spree_core (= 1.3.6.beta)
GIT
remote: git://github.com/spree-contrib/better_spree_paypal_express.git
revision: db135b89a289aaab951c1228bcc55871de0cbba7
branch: 1-3-stable
specs:
spree_paypal_express (2.0.3)
paypal-sdk-merchant (= 1.106.1)
spree_core (~> 1.3.4)
GIT
remote: git://github.com/spree/deface.git
revision: 1110a1336252109bce7f98f9182042e0bc2930ae
@@ -121,17 +121,17 @@ GEM
active_link_to (1.0.0)
active_model_serializers (0.8.1)
activemodel (>= 3.0)
active_utils (2.2.1)
active_utils (2.2.3)
activesupport (>= 2.3.11)
i18n
activemerchant (1.43.1)
active_utils (~> 2.0, >= 2.0.1)
activesupport (>= 2.3.14, < 5.0.0)
activemerchant (1.44.1)
active_utils (~> 2.2.0)
activesupport (>= 3.2.14, < 5.0.0)
builder (>= 2.1.2, < 4.0.0)
i18n (~> 0.5)
i18n (>= 0.6.9)
json (~> 1.7)
money (< 7.0.0)
nokogiri (~> 1.4)
offsite_payments (~> 2.0.0)
activemodel (3.2.19)
activesupport (= 3.2.19)
builder (~> 3.0.0)
@@ -153,6 +153,7 @@ GEM
railties (>= 3.1)
sprockets
tilt
angularjs-file-upload-rails (1.1.0)
angularjs-rails (1.2.13)
ansi (1.4.2)
arel (3.0.3)
@@ -208,6 +209,8 @@ GEM
compass (>= 0.12.2, < 0.14)
crack (0.4.1)
safe_yaml (~> 0.9.0)
css_parser (1.3.5)
addressable
dalli (2.7.2)
database_cleaner (0.7.1)
db2fog (0.8.0)
@@ -243,6 +246,9 @@ GEM
railties (>= 3.0.0)
ffaker (1.15.0)
ffi (1.9.3)
figaro (0.7.0)
bundler (~> 1.0)
rails (>= 3, < 5)
fog (1.14.0)
builder
excon (~> 0.25.0)
@@ -291,7 +297,7 @@ GEM
httparty (0.13.1)
json (~> 1.8)
multi_xml (>= 0.5.2)
i18n (0.6.9)
i18n (0.6.11)
immigrant (0.1.6)
activerecord (>= 3.0)
foreigner (>= 1.2.1)
@@ -322,7 +328,7 @@ GEM
treetop (~> 1.4.8)
method_source (0.8.1)
mime-types (1.25.1)
mini_portile (0.6.0)
mini_portile (0.6.1)
momentjs-rails (2.5.1)
railties (>= 3.1)
money (5.1.1)
@@ -333,21 +339,28 @@ GEM
net-ssh (>= 2.6.5)
net-ssh (2.6.8)
newrelic_rpm (3.6.7.152)
nokogiri (1.6.2.1)
mini_portile (= 0.6.0)
nokogiri (1.6.4.1)
mini_portile (~> 0.6.0)
offsite_payments (2.0.1)
active_utils (~> 2.2.0)
activesupport (>= 3.2.14, < 5.0.0)
builder (>= 2.1.2, < 4.0.0)
i18n (~> 0.5)
json (~> 1.7)
money (< 7.0.0)
nokogiri (~> 1.4)
oj (2.1.2)
orm_adapter (0.5.0)
paperclip (2.8.0)
activerecord (>= 2.3.0)
activesupport (>= 2.3.2)
cocaine (>= 0.0.2)
paperclip (3.5.4)
activemodel (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.3)
mime-types
paypal-sdk-core (0.2.10)
multi_json (~> 1.0)
xml-simple
paypal-sdk-merchant (1.106.1)
paypal-sdk-core (~> 0.2.3)
perftools.rb (2.0.1)
pg (0.13.2)
poltergeist (1.5.0)
capybara (~> 2.1)
@@ -384,6 +397,9 @@ GEM
activesupport (= 3.2.19)
bundler (~> 1.0)
railties (= 3.2.19)
rails-i18n (3.0.1)
i18n (~> 0.5)
rails (>= 3.0.0, < 4.0.0)
railties (3.2.19)
actionpack (= 3.2.19)
activesupport (= 3.2.19)
@@ -411,6 +427,12 @@ GEM
representative_view (1.2.2)
actionpack (> 2.3.0, < 4.0.0)
representative (~> 1.0.2)
roadie (3.0.1)
css_parser (~> 1.3.4)
nokogiri (~> 1.6.0)
roadie-rails (1.0.3)
rails (>= 3.0, < 4.2)
roadie (~> 3.0)
rspec (2.14.1)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
@@ -444,7 +466,7 @@ GEM
slop (3.4.5)
spinjs-rails (1.3)
rails (>= 3.1)
sprockets (2.2.2)
sprockets (2.2.3)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
@@ -467,7 +489,7 @@ GEM
sprockets (>= 2.0.0)
turn (0.8.3)
ansi
tzinfo (0.3.39)
tzinfo (0.3.42)
uglifier (1.2.4)
execjs (>= 0.3.0)
multi_json (>= 1.0.2)
@@ -478,7 +500,7 @@ GEM
unicorn-rails (1.1.0)
rack
unicorn
uuidtools (2.1.4)
uuidtools (2.1.5)
versioncake (0.4.0)
actionpack (>= 3.0)
activesupport (>= 3.0)
@@ -505,6 +527,7 @@ DEPENDENCIES
active_model_serializers
andand
angular-rails-templates
angularjs-file-upload-rails (~> 1.1.0)
angularjs-rails
awesome_print
aws-sdk
@@ -520,6 +543,7 @@ DEPENDENCIES
debugger-linecache
deface!
factory_girl_rails
figaro
foreigner
foundation-icons-sass-rails
foundation-rails
@@ -540,7 +564,6 @@ DEPENDENCIES
newrelic_rpm
oj
paperclip
perftools.rb
pg
poltergeist
pry-debugger
@@ -548,7 +571,9 @@ DEPENDENCIES
rack-livereload
rack-ssl
rails (= 3.2.19)
rails-i18n (~> 3.0.0)
representative_view
roadie-rails (~> 1.0.3)
rspec-rails
sass (~> 3.2)
sass-rails (~> 3.2.3)

View File

@@ -9,7 +9,6 @@ Supported by the Open Food Foundation, we are proudly open source and not-for-pr
We're part of global movement - get involved!
* We're crowd-funding RIGHT NOW - please help out at http://startsomegood.com/openfoodnetwork
* Fill in this short survey to tell us who you are and what you want to do with OFN: https://docs.google.com/a/eaterprises.com.au/forms/d/1zxR5vSiU9CigJ9cEaC8-eJLgYid8CR8er7PPH9Mc-30/edit#
* Find out more and join in the conversation - http://openfoodnetwork.org
@@ -49,11 +48,20 @@ Install the project's gem dependencies:
bundle install
Create the development and test databases, using the settings specified in `config/database.yml`. You can then load the schema and some seed data with the following command:
Configure the site:
cp config/application.yml.example config/application.yml
edit config/application.yml
Create the development and test databases, using the settings specified in `config/database.yml`:
rake db:setup
Then load the schema and some seed data with the following command:
rake db:schema:load db:seed
Load some default data for your environment
Load some default data for your environment:
rake openfoodnetwork:dev:load_sample_data
@@ -66,7 +74,7 @@ At long last, your dreams of spinning up a development server can be realised:
Tests, both unit and integration, are based on RSpec. To run the test suite, first prepare the test database:
bundle exec rake db:test:load
bundle exec rake db:test:prepare
Then the tests can be run with:
@@ -87,7 +95,7 @@ usage instructions.
* David Cook (http://github.com/dacook)
* Will Marshall (http://soundcloud.com/willmarshall)
* Laura Summers (https://github.com/summerscope)
* Maikel Linke (https://github.com/mkllnk)
## Licence

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

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

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

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

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

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

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="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 height="96" width="16383" y="-85.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<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="#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="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.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>
<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>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,840 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="265 892.8 550 134.3" enable-background="new 265 892.8 550 134.3" xml:space="preserve">
<g id="Layer_1_1_" display="none">
<g display="inline">
<text transform="matrix(0.9994 3.560383e-02 -3.560383e-02 0.9994 1023.0334 999.8911)" font-family="'LondrinaSketch-Regular'" font-size="32.2299" letter-spacing="1">BETA</text>
<g>
<g>
<path fill="#444345" d="M156.5,1047.3v-20.9c0-2.3-2.1-4-4.4-4h-33.4c-2.4,0-4.6,1.6-4.6,4v20.9c0,2.3,2.4,4.2,4.6,4.2h33.4
C154.4,1051.4,156.5,1049.6,156.5,1047.3z M118.8,1026.3h33.8v21.3h-33.8V1026.3z"/>
<path fill="#444345" d="M197.5,895.5c-8.4,16.7-11.9,18.9-11.9,25.8c0,6.6,5.6,12.2,12.3,12.2c6.6,0,12.3-5.4,12.3-12.2
c0-7-3.1-10.9-11.9-25.8C198,895.1,197.7,895.1,197.5,895.5z M194.2,921.1c0,2.2-1.3,3-2.5,3c-1.5,0-2.5-1.1-2.5-2.6
c0-4.8,2.4-8,4.4-10.8c0.7-0.9,1.3-1.7,1.7-2.5C195.4,907.9,194.2,917.1,194.2,921.1z"/>
<path fill="#444345" d="M92.5,1032.2c-2.5-1.6-7.5-4.6-7.5-4.6s0,0,0,6.3c0,6.3,10.6,8.6,10.6,8.6
C95.4,1039.5,95.1,1033.8,92.5,1032.2z"/>
<path fill="#444345" d="M92.5,1043.5c-2.5-1.6-7.5-4.6-7.5-4.6s0,0,0,6.3c0,6.3,10.6,8.6,10.6,8.6
C95.4,1050.9,95.1,1045.2,92.5,1043.5z"/>
<path fill="#444345" d="M95.5,1065.2c-0.2-3-0.4-8.6-2.9-10.3c-2.5-1.6-7.7-4.6-7.7-4.6s0,0,0,6.3
C85,1062.9,95.5,1065.2,95.5,1065.2z"/>
<path fill="#444345" d="M99.1,1042.5c0,0,11-2.4,11-8.6c0-6.3,0-6.3,0-6.3s-6.2,3-8.7,4.6C98.8,1033.8,99.3,1039.5,99.1,1042.5z
"/>
<path fill="#444345" d="M99.1,1053.8c0,0,11-2.3,11-8.6c0-6.2,0-6.3,0-6.3s-6.2,3-8.7,4.6C98.8,1045.2,99.3,1050.9,99.1,1053.8z
"/>
<path fill="#444345" d="M110.1,1056.6c0-6.3,0-6.3,0-6.3s-6.1,2.9-8.6,4.6c-2.5,1.6-2.4,7.3-2.5,10.3
C99,1065.2,110.1,1062.9,110.1,1056.6z"/>
<path fill="#444345" d="M101.1,1025.9c0-2.9-0.7-6.6-4-10.3c0,0-3.9,4.8-3.9,9.5c0,3.1,1.7,5.7,3.9,8.4
C97.1,1033.7,101.1,1029,101.1,1025.9z"/>
<path fill="#444345" d="M84.3,851.2c0.8,0,1.5-0.1,2.2-0.4c1.6,1.5,3.7,2.2,5.8,2.2c2.1,0,4.2-0.8,5.8-2.2
c0.7,0.3,1.5,0.4,2.2,0.4c3.5,0,6.3-2.8,6.3-6.3s-2.8-6.3-6.3-6.3c-0.3,0-0.6,0-0.9,0.1c-1.6-2.4-4.2-3.7-7.1-3.7
c-2.9,0-5.5,1.3-7.1,3.7c-0.3,0-0.6-0.1-0.9-0.1c-3.5,0-6.3,2.8-6.3,6.3C78.2,848.4,81,851.2,84.3,851.2z"/>
<path fill="#444345" d="M94,862c0,0.9,0.8,1.7,1.8,1.7c0.9,0,1.7-0.8,1.7-1.7s-1.7-3.6-1.7-3.6S94,860.9,94,862z"/>
<path fill="#444345" d="M99.1,858.3c0.9,0,1.8-0.8,1.8-1.7s-1.8-3.6-1.8-3.6s-1.7,2.6-1.7,3.6C97.3,857.5,98.2,858.3,99.1,858.3
z"/>
<path fill="#444345" d="M92,859.2c0-0.9-1.7-3.6-1.7-3.6s-1.8,2.6-1.8,3.6s0.8,1.7,1.8,1.7C91.2,861,92,860.2,92,859.2z"/>
<path fill="#444345" d="M8.8,1010.5c0,6.4,5.2,11.7,11.7,11.7s11.7-5.2,11.7-11.7s-5.2-11.7-11.7-11.7S8.8,1004,8.8,1010.5z
M29.1,1010.5c0,4.8-4,8.8-8.7,8.8c-4.8,0-8.8-4-8.8-8.8c0-4.8,4-8.8,8.8-8.8S29.1,1005.7,29.1,1010.5z"/>
<polygon fill="#444345" points="16,1014.9 22,1012 24.8,1006.1 19,1009.1 "/>
<path fill="#444345" d="M113.9,866.3c0-0.1-0.1-0.2-0.1-0.3L113.9,866.3L113.9,866.3z"/>
<path fill="#444345" d="M110.6,876.1c7.1-2,14.4,3.1,15.4,10.5c0,0.3,0.1,0.6,0.1,0.9c0.3,0,0.6,0.1,0.9,0.1
c6-0.2,12.1-0.2,18.1-0.5c-2.5,0.7-4.4,3-4.4,5.7c0,3.3,2.7,6,6,6s6-2.7,6-6c0-3-2.2-5.4-5-5.9c4.4-0.3,3.6-0.2,4.4-4.2
c0.4-1.9,0.6-3.9,0.8-5.8c0.2-1.8-0.3-2.2-2.1-2.4c-2.7-0.1-5.1-0.2-7.9-0.3c-0.1,0-0.2-0.1-0.2-0.2c0-2,0.5-6.8,0.5-6.8
s-0.9-0.8-1.9-0.1c0,2.4,0,4.6,0,7.1c0,0-3.6-0.1-8.2-0.2c-0.2,0-0.9-0.4-1.3-1.1c-0.7-1.9-2.4-5.6-4.4-11.4
c0,0-1.1-2.4-3.8-2.4c-2.1,0-13.4,0-13.4,0v14.2c0,0-0.8,0.4-1.5,0.5C108.2,876.1,108.7,876.5,110.6,876.1z M149.8,892.9
c0,1.7-1.5,3.1-3.1,3.1c-1.7,0-3.1-1.5-3.1-3.1c0-1.7,1.5-3.1,3.1-3.1C148.4,889.8,149.8,891.1,149.8,892.9z M113.8,866v-2.7h11
l3.5,10.5l0.1,0.1c-4.7-0.1-10.1,0-14.6,0.2V866z"/>
<path fill="#444345" d="M113.3,877.3c-6,0-10.8,4.8-10.8,10.8c0,6,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8
C124.1,882.1,119.3,877.3,113.3,877.3z M113.3,894.1c-3.3,0-6-2.7-6-6c0-3.3,2.7-6,6-6s6,2.7,6,6
C119.3,891.4,116.6,894.1,113.3,894.1z"/>
<path fill="#444345" d="M87.2,1074.3l-7.9-4.2c0.5-1.7,0.5-3.7,0-5.6c-1.6-5.5-7.9-8.9-13.4-7.3c-5.6,1.6-8.8,7.3-7.1,12.8
c1.6,5.5,7.9,8.9,13.4,7.3c1.8-0.6,3.5-1.5,4.6-2.8l7.9,4.4c0.8,0.4,1.7,0.1,2.2-0.7l1.1-1.9C88.4,1075.5,88,1074.8,87.2,1074.3
z M70.8,1073.2c-3.2,0.9-7-1.1-7.9-4.2c-0.9-3.2,0.9-6.6,4.2-7.5c3.2-0.9,7,1.1,7.9,4.2C75.9,1069,74.1,1072.3,70.8,1073.2z"/>
<path fill="#444345" d="M42.4,987.3c6-6.8,2.7-11.7,1.7-13.6c-0.9-1.9-1.3-4.7-1.3-4.7l0.2-0.9l0.2-1.1
c-1.3-0.4-2.7,0.3-2.7,0.3c0.3,2.1-0.3,4.4-0.6,5.3c-0.4,0.9-1.6,2.8-2.2,4c-0.6,1.1-2.1,4.7-9.9,8.1
c-7.9,3.4-18.3,0.3-18.3,0.3c-2.7-0.7-4.9,0.4-4.9,0.4L4,986.3l0.1,0.8l-0.3,0.5l0.1,0.6c7.7,11.9,23.6,7.9,23.6,7.9
S36.4,994,42.4,987.3z"/>
<path fill="#444345" d="M215.2,1059.3c3.5-0.1,6.8-0.7,10.1-2c1.1-0.5,1.5-1.3,1.6-2.5c0.1-0.7,0.1-1.3,0.1-1.9
c0-0.1,0-0.1,0-0.2c0-0.1-0.3-0.4-0.7-0.4c-1.6-0.1-1.9-0.5-2.4-2c-0.4-1.1-0.7-2.1-1.1-3.1c3.9-0.9,3.4-3.7,2-7.3
c-1.1,1.6-0.3,2.1-2.1,2.5c-1.7,0.4-3,1.3-3.8,3c-0.1,0.3-0.3,0.7-0.5,1.1c-0.2-2,0.7-3.2,2.4-4.7c-0.8-0.8-4-0.4-4.8-0.9
c-3.1-2.2-17.5-4.8-26.5,2c-0.5-0.5-0.9-0.9-1.5-1.3c2.1-0.9,2.9-2,2.5-3.7c-0.3-1.3-1.3-2-2.4-1.9c-1.9,0.1-2.6,0.9-2.9,4.2
c-0.7-0.7-1.1-1.1-1.9-1.9c0,0.6-0.2,1.1-0.1,1.5c0.3,0.9,1.1,1.5,1.9,1.8c0.7,0.1,1.1,0.5,1.3,1.1c0.2,0.4,0.4,0.9,0.8,1.1
c0.9,0.9,1.1,2.1,1.1,3.5c0,3,0.1,6,0.5,9c0.4,3.2,1.1,6.3,2.6,9.2c0.5,0.9,1.1,0.9,1.9,0.8c0.3-0.1,0.6-0.8,0.6-1.1
c0.2-2.4,1.3-4.4,2.4-6.4c4.2,1.3,8.3,1.5,12.5,1.3c0.2,0,0.6,0.4,0.8,0.7c0.8,1.5,1.5,3.2,2.2,4.8c0.4,0.9,1.3,0.9,2,0.8
c0.2-0.1,0.3-0.9,0.3-1.3c0-1.7,0-3.6,0-5.3c0.2-0.1,0.3-0.1,0.3-0.2C214.7,1059.3,215.1,1059.3,215.2,1059.3z M187.2,1039.8
c-0.5-1.1-0.2-1.9,0.6-2c0.5-0.1,1.1-0.1,1.1,0.6C189.1,1039.2,188.5,1039.7,187.2,1039.8z"/>
<path fill="#444345" d="M33.5,924.2c6.6-0.6,8.9-3.9,10.8-10.3c1.1-3.9,1.3-7.7,1.5-11.8c-0.3-3.3-0.3-6.6-0.7-9.9
c-0.7-4.6-1.8-9.3-4-13.4c-1.7-3.3-2.2-5.3-5.9-5.9c-4-0.5-8.4,1-10.1,5.6c-0.5,1.3-1.1,2.4-1.3,3.7c-0.7,2.8-2.4,5-4.4,7
c-5.8,5.3-7.7,12.1-6.4,19.6C14.5,918.6,23.5,925.1,33.5,924.2z M21.2,893.3c3.5-3.3,6-6.8,7.1-11.5c0.2-0.9,0.7-1.8,1.1-2.6
c1.3-2.3,4.2-2.7,6.1-0.8c0.8,0.9,1.3,1.9,1.7,2.9c2.8,6.6,4,13.7,4,19.9c0,4.7-0.3,8.4-1.5,11.9c-1.7,5-5.3,7.5-10.1,7
c-4-0.4-7.3-2.4-9.9-5.5C15.2,908.4,15.4,898.6,21.2,893.3z"/>
<path fill="#444345" d="M29.5,917.1c3.2,0.3,5.6-0.7,7.1-3.6c2.8-5.6,3-11.3,1.1-17.2c-0.4-1.3-1.3-2.2-2.5-2.7
c-3.5-1.5-7.1-1.5-10.5-0.1c-1.6,0.8-3.2,1.8-3.9,3.6c-0.4,0.9-0.3,1.6,0.7,2.1c1.5,0.8,3,1.5,4.6,2.4c0.5,0.3,0.9,0.7,1.3,0.9
c0,0.1-0.1,0.3-0.2,0.4c-0.4-0.1-0.8-0.1-1.1-0.2c-1.7-0.5-3.5-1.1-5.2-1.5c-0.9-0.3-1.5,0.1-1.7,0.9c-0.1,0.4-0.2,0.8-0.2,1.1
C17.9,910,22.8,916.4,29.5,917.1z"/>
<path fill="#444345" d="M30.6,889c0.9,0.3,1.9,0.5,2.9,0.7c1.9-0.1,2.7-0.6,2.7-2.5c0-1.3-0.3-2.8-0.7-4.2c-0.3-1.1-1.1-2-2.4-2
c-1.3-0.1-2.5,0.5-3,1.7c-0.5,1.1-0.9,2.4-1.1,3.8C28.7,887.8,29.1,888.5,30.6,889z"/>
<path fill="#444345" d="M56.9,983.4c-0.4,0.1-0.9-0.1-0.9-0.5c0,0-0.5-1.3-2-2.9c-0.4-0.4-0.8-0.7-1.1-0.9
c-0.6-0.5-1.3-0.9-1.8-1.6c0.9,8.1,4.4,14,8.3,14c4.7,0,8.6-8.4,8.6-18.9s-4-18.9-8.7-18.9c-3.1,0-5.8,3.7-7.3,9.1
c0.6,0.9,1.1,1.3,1.9,1.8c0.4,0.3,0.9,0.7,1.3,1.1c1.9,1.8,2.4,3.5,2.4,3.6s0,0.1,0,0.2c0,0.3-0.2,0.6-0.6,0.7s-0.9-0.1-0.9-0.5
c0,0-0.5-1.3-2-2.9c-0.4-0.4-0.8-0.7-1.1-0.9c-0.5-0.3-0.9-0.7-1.3-1.1c-0.2,0.9-0.4,1.8-0.5,2.8c0.7,2.4,1.6,3.1,2.8,4
c0.4,0.3,0.9,0.7,1.3,1.1c1.9,1.8,2.4,3.5,2.4,3.6s0,0.1,0,0.2c0,0.3-0.2,0.6-0.6,0.7s-0.9-0.1-0.9-0.5c0,0-0.5-1.3-2-2.9
c-0.4-0.4-0.8-0.7-1.1-0.9c-0.7-0.5-1.5-1.1-2-1.9c0,0.6,0,1.1,0,1.7c0.7,3.5,1.7,4.4,3.1,5.3c0.4,0.3,0.9,0.7,1.3,1.1
c1.9,1.8,2.4,3.5,2.4,3.6c0,0.1,0,0.1,0,0.2C57.5,983,57.3,983.3,56.9,983.4z"/>
<path fill="#444345" d="M196.9,877c1.6,1.8,3.6,3.6,6,3.8c1.7,0.3,3.9-0.9,5.2-0.9c2.8,0,2.2,0.7,5.2,0.7c2.9,0,8.5-7,9.9-14.2
c0.3-1.8,0-4.9-1.3-7.9c-1.6-3.5-6.4-4.8-9.5-4.2c-0.8,0.1-2.5,0.5-3.9,0.7c0.3-0.9,0.9-2.6,2.6-3.5c0.5-0.3,0.7-0.9,0.4-1.3
c-0.3-0.5-0.9-0.7-1.3-0.4c-2.7,1.5-3.6,4.2-3.8,5.4c-1.3-0.3-4.4-0.8-5.8-0.8c-1.7,0.1-3.4,0.6-4.9,1.7c-1.3,1.1-2,2.5-2.6,4
c-0.8,2.2-1.1,4.4-0.8,6.8C192.8,870.8,194.4,874.1,196.9,877z M202.8,858.9c1.5,0,2.7,1.1,2.7,2.5c0,1.8-1.3,3.3-2.8,3.3
c-1.1,0-2.1-1.5-2.1-3.2C200.8,860,201.5,858.9,202.8,858.9z"/>
<path fill="#444345" d="M204.7,852.3c1.1,0.1,2.4,0.2,2.9-0.9c0.6-1.1-0.3-2.2-1.1-3.1c-1.8-1.9-4.6-2.3-7.7-0.9
c0.4,0.7,0.8,1.3,1.1,1.8C200.9,851,202.6,852,204.7,852.3z"/>
<path fill="#444345" d="M133.7,858.3c1.9-4,4.6-7.1,4.6-7.1c4,1.5,10.8,3.2,15.6-0.2c6.4-4.6,5.8-14.6,15-19.5
c2.1-1.1-18.1-5.9-28.7,0.2c-7.9,4.5-7.3,12-7.1,14.6c10.1-12,25.2-11.4,25.2-11.4s-21.4,7.4-27.7,22.2
C130.2,858.1,133.1,859.6,133.7,858.3z"/>
<path fill="#444345" d="M212,1007c4.8-9.9-0.6-17-2.7-19.6c-2.1,18.9-17.9,28.5-17.9,28.5s16.7-21.8,13.2-41
c-0.3-1.5-4.2-1.1-3.9,0.7c0.8,5.4,0.2,10.3,0.2,10.3c-5,1.1-13,4-15.8,10.7c-3.5,8.9,4,18.7-2,29.9
C181.8,1029.2,205.5,1020.4,212,1007z"/>
<path fill="#444345" d="M37.2,932.9c-2,1.5-1.6,5.4-0.1,7.5c1.5,1.9,5.3,3.4,7.3,1.8c0.4-0.3,1.6-1.1,1.6-1.1
c2.2,1.7,3.6,0,4.6,1.3c1.1,1.5,3.8,4.7,4.6,5.8c0.9,1.1,2.4,1.9,3.2,1.3c0.8-0.6,3.5-2.5,4.6-3.3c1.1-0.8,1.1-1.8,0.5-2.6
c-0.6-0.8-2.2-0.6-3-1.5c-0.8-0.9-3.1-3.8-3.8-4.7c-0.9-1.3-0.1-2.7,1.6-3.4c11.8-4.6,16,2.3,19.7-0.5
c2.8-2.1-0.3-11.2-6.6-19.3s-14.6-13.4-17.4-11.1C49.5,906.8,61,914.9,37.2,932.9z M57.2,907.8c0.7-0.5,6.4,2.8,11.5,9.1
c4.9,6.3,6.3,12.1,5.6,12.6c-0.7,0.5-6.4-2-11.4-8.3C57.9,914.9,56.6,908.3,57.2,907.8z"/>
<path fill="#444345" d="M15,980.9c8.2,0,15-3.9,15-5.9c0,0,0-0.6,0-6.2c0-5.7-10.3-10.3-10.3-14.4c0-4,10.3-8.7,10.3-14.4
c0-5.7,0-6.2,0-6.2c0-2.1-6.8-5.9-15-5.9s-15,3.8-15,5.8c0,0,0,0.6,0,6.2c0,5.7,10.3,10.3,10.3,14.4c0,4-10.3,8.7-10.3,14.4
c0,5.7,0,6.2,0,6.2C0,977.1,6.8,980.9,15,980.9z M3.5,934.1c1.8-1.1,5.3-2.9,10.9-2.9s10.6,2.9,10.6,2.9
c0.4,0.2,1.8,1.1,0.9,1.6c-2.2,1.3-6.6,2.7-11.6,2.7s-9.3-1.5-11.5-2.8C1.8,935,3.5,934.1,3.5,934.1z M2.9,968.8
c0-1.7,2.7-4.4,4.7-6.4c2.8-2.7,5.4-4.7,5.4-7.9c0-3.2-2.7-5.2-5.5-7.9c-2-2-4.8-4.7-4.8-6.4l-0.1-2.6c2.7,1.5,7.1,2.9,11.7,2.9
c4.7,0,9.1-1.3,11.8-2.9l-0.1,2.6c0,1.7-2.8,4.4-4.8,6.4c-2.8,2.7-5.4,4.7-5.4,7.9c0,3.2,2.2,5.2,5,7.9c2,2,4.4,4.7,4.4,6.4v3.5
c-1.9-1.3-9.5-2-9.5-5.9c0-1.9-2.7-1.9-2.7,0c0,3.9-8.1,4.6-10.1,5.9v-3.5H2.9z"/>
<path fill="#444345" d="M210.9,900.8c0,11,8.9,19.9,19.9,19.9c11,0,19.9-8.9,19.9-19.9c0-10.9-8.9-19.9-19.9-19.9
C219.8,880.9,210.9,889.8,210.9,900.8z M236.2,884.7c6.7,2.2,11.5,8.6,11.5,16c0,3.9-1.3,7.5-3.5,10.3c-0.6-0.5-1.3-1.8-0.7-3.2
c0.6-1.3,0.8-4.6,0.7-5.8c-0.1-1.3-0.8-4.2-2.5-4.2c-1.7,0-2.9-0.6-4-2.7c-2.1-4.2,4-5.1,1.8-7.5c-0.6-0.7-3.7,2.7-4.2-1.8
C235.5,885.7,235.8,885.1,236.2,884.7z M240.2,914.9c-2.7,1.7-5.9,2.8-9.4,2.8c-1.8,0-3.7-0.3-5.3-0.9c0.9-0.6,1.1-1.3,2-1.3
c1.1,0,1.9-0.4,3.1-0.7c1.1-0.2,3-1.3,4.6-1.5C236.7,913.3,239.4,913.5,240.2,914.9z M228.4,884c-0.4,0.8-1.5,1.1-2.1,1.7
c-1.5,1.3-2,1.1-2.8,2.3c-0.8,1.3-3.3,3-3.3,3.9s1.3,1.9,1.8,1.7c0.7-0.2,2.4-0.2,3.3,0.2c0.9,0.4,8.1,0.7,5.8,6.8
c-0.7,1.9-3.9,1.5-4.7,4.7c-0.1,0.5-0.6,2.4-0.6,3.1c-0.1,0.9,0.7,4.8-0.3,4.8s-3.6-3.4-3.6-4c0-0.6-0.7-2.8-0.7-4.6
s-3.2-1.8-3.2-4.2c0-2.2,1.7-3.3,1.3-4.4c-0.4-1.1-3.4-1.1-4.6-1.3C217.1,889,222.2,884.9,228.4,884z"/>
<path fill="#444345" d="M135.7,1029.6c-4,0-7.3,3.3-7.3,7.3s3.3,7.3,7.3,7.3c4,0,7.3-3.3,7.3-7.3
C142.9,1032.9,139.7,1029.6,135.7,1029.6z M132.5,1040c0-0.2-0.3-0.9-0.3-1.6c0-0.7-1.1-0.7-1.1-1.5c0-0.8,0.7-1.3,0.5-1.6
c-0.1-0.4-1.3-0.4-1.6-0.5c0.8-2,2.7-3.6,4.9-4c-0.2,0.3-0.6,0.4-0.8,0.6c-0.5,0.5-0.8,0.4-1.1,0.9s-1.1,1.1-1.1,1.5
c0,0.3,0.5,0.7,0.7,0.7c0.2-0.1,0.9-0.1,1.1,0.1c0.4,0.1,3,0.3,2.1,2.4c-0.3,0.7-1.5,0.6-1.7,1.7c-0.1,0.2-0.2,0.9-0.2,1.1
c0,0.4,0.3,1.7-0.1,1.7C133.5,1041.4,132.5,1040.2,132.5,1040z M135.7,1043.1c-0.7,0-1.3-0.1-1.9-0.3c0.4-0.2,0.4-0.5,0.8-0.5
s0.7-0.2,1.1-0.3c0.4-0.1,1.1-0.5,1.6-0.5c0.5,0,1.5,0,1.8,0.5C138.1,1042.7,137,1043.1,135.7,1043.1z M140.7,1040.6
c-0.2-0.2-0.5-0.7-0.2-1.1c0.2-0.5,0.3-1.6,0.2-2.1c-0.1-0.5-0.3-1.5-0.9-1.5s-1.1-0.2-1.5-0.9c-0.8-1.5,1.5-1.8,0.7-2.7
c-0.2-0.3-1.3,0.9-1.5-0.7c0-0.1,0.1-0.3,0.3-0.5c2.4,0.9,4.2,3.2,4.2,5.9C141.9,1038.4,141.4,1039.6,140.7,1040.6z"/>
<path fill="#444345" d="M44.9,1061.1c0,0.3,0,0.5,0,0.8c0.1,1.7,1.5,3.2,3.4,3.2c1.7,0,3.2-1.3,3.4-3c0.1-0.3,0.1-0.6,0.1-0.9
c0-0.9,0.4-1.3,1.1-1.5c6.4-1.5,11.4-6.6,12.4-13c0.1-0.8,0.1-1.5,0.4-2.1c0.6-0.5,1.5-0.9,1.7-1.5c0.2-0.5-0.4-1.3-0.6-2.1
c1.1-1.1,1.1-1.6-0.2-2.9c1.3-1.3,1.3-1.9-0.1-3.2c0.9-0.4,1.3-1.1,0.9-2c-0.3-0.6-1.1-0.9-1.6-1.3c-0.1,0.1-0.1,0.2-0.2,0.2
c-0.1-0.6-0.1-1.1-0.4-1.5c-0.4-0.5-0.9-1.1-1.5-1.1c-0.3-0.1-0.9,0.6-1.1,0.9c-0.7,1.3-1.1,2.8-1.7,4.2s-1.3,2.7-2.2,3.9
c-2.7,3.4-6.3,4.4-10.4,3.6c-4-0.9-6.8-3.3-7.9-7.3c-0.2-0.8-0.2-1.5-0.4-2.3c0.9-0.6,2.1-0.9,1.6-2.2c-0.2-0.7-1.1-1.1-2-1.7
c0-0.5,0.2-1.5-0.9-1.9c-0.9-0.4-1.6,0.2-2.2,1.1c-0.7-0.8-1.3-1.6-2.4-1.1c-0.6,0.4-0.9,1.3-1.5,2.2c-0.7,0-1.8-0.1-2,1.3
c-0.1,0.9,0.6,1.5,2.4,2c-1.1,1.3-3,1.3-4.2,2.4c1.1,0.6,2,1.1,3.1,1.7c0.6,0.3,0.8,0.7,0.7,1.3c-0.2,2.1-0.3,4.4-0.5,6.4
c-0.8,9.2,5.5,14.3,11.5,15.9C44.7,1059.8,45,1060,44.9,1061.1z M35.7,1034.1c-0.3,0-0.7-0.4-1.3-0.8c0.7-0.4,0.9-0.9,1.3-0.9
c0.3,0,0.9,0.6,0.8,0.8C36.3,1033.6,35.9,1034.1,35.7,1034.1z"/>
<path fill="#444345" d="M211.6,940.4h-6.4c-1.1,0-2.7,0.7-3.4,1.6l-8.5,10.9c-0.7,0.9-0.3,0.9,0.9,0.9h34.6c1.1,0,1.6,0,0.9-0.9
l-7.4-11c-0.7-0.9-2.1-1.5-3.3-1.5h-1.6v-3.9h-5.8V940.4z"/>
<path fill="#444345" d="M219.2,930.1l0.5-0.1c1.1-0.2,2-1.1,2.7-2.2c0.7-1.1,0.8-3.6,0.6-4.9c-0.7,2-2.1,2.7-3.7,3.4
c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.2-0.9,0.4-1.5,0.6c-1.5,0.8-2.1,2-2.4,4c-0.2,0.8-0.3,1.6-0.3,2.8c0.8-2,1.6-3,3.3-3.6
C217.8,930.5,218.5,930.3,219.2,930.1z"/>
<path fill="#444345" d="M227,969.3h0.9v-11.9c0-1.1,0-1.6,0-1.6H227h-1.3h-15h-1.3h-11h-4v2.2v11.3h4h2.7v-8
c0,0,0.2,0.3,1.1,0.3h5.2c0,0,0.5-1.1,0.5-0.2v7.9h1.5h1.3h15L227,969.3L227,969.3z M222.2,965.5c0,0.2,0.7,0.9,0.5,0.9h-5.7
c-0.2,0-0.6-0.8-0.6-0.9v-5.7c0-0.2,0.4-0.1,0.6-0.1h5.7c0.2,0-0.5-0.1-0.5,0.1V965.5z"/>
<path fill="#444345" d="M143.1,1056.3c0-0.6-0.5-0.9-1.1-0.9h-13.4c-0.6,0-1.1,0.4-1.1,0.9c0,0.6,0.5,0.9,1.1,0.9h13.4
C142.7,1057.3,143.1,1056.9,143.1,1056.3z"/>
<rect x="131.4" y="1052.5" fill="#444345" width="9.7" height="2.9"/>
<path fill="#444345" d="M117.8,828.2c-4.6,0.8-7.9,4.6-8.2,9.1l8.7-0.5L117.8,828.2z"/>
<path fill="#444345" d="M119.7,839.3l-9.9,0.5c0.9,4.8,5.2,8.4,10.3,8.1c5.5-0.3,9.7-4.9,9.4-10.4c-0.3-5-4.2-9-9.1-9.4l0.5,9.9
C120.9,838.7,120.3,839.2,119.7,839.3z"/>
<path fill="#444345" d="M78.2,866c0.4,0,0.9-0.6,1.3-0.7s0.9-0.6,1.1-0.8l5.5-3.9c0.3-0.2,0.5-0.6,0.5-0.9
c0-0.3-0.2-0.6-0.5-0.8l-5.5-3.8c-0.3-0.2-0.8-0.9-1.1-1.1c-0.5-0.1-0.9-0.7-1.3-0.7H62.5l1.8,12.6H78.2L78.2,866z"/>
<path fill="#444345" d="M41,865.1l5.5,3.8c0.3,0.2,0.8,0.5,1.1,0.7c0.5,0.1,0.9,0.4,1.3,0.4h8.1V890c0,0.5,0.6,0.2,1.1,0.2h2
c0.5,0,0.7,0.3,0.7-0.2v-39.7c0-0.5-0.2-1.6-0.7-1.6h-2c-0.5,0-1.1,1.1-1.1,1.6v9h-8c-0.4,0-0.9,0-1.3,0.1s-0.9,0.3-1.1,0.5
l-5.5,3.8c-0.3,0.2-0.5,0.5-0.5,0.8C40.6,864.7,40.8,864.9,41,865.1z"/>
<path fill="#444345" d="M72.4,874.2v31.6c0,2.2,2.4,4.6,4.6,4.6h15.4c2.2,0,4.2-2.4,4.2-4.6v-31.6c0-2.2-2-3.4-4.2-3.4H77
C74.8,870.8,72.4,872,72.4,874.2z M84.7,908.2c-1.5,0-2.8-0.9-2.8-2s1.3-2,2.8-2s2.8,0.9,2.8,2
C87.5,907.2,86.3,908.2,84.7,908.2z M93.7,875.7v26.1H76.3v-26.1H93.7z"/>
<path fill="#444345" d="M162,850.1c0,13.2,13.8,30.4,13.8,30.4s13.8-17.2,13.8-30.4c0-7.7-6.2-13.8-13.8-13.8
C168.2,836.1,162,842.3,162,850.1z M175.8,842.7c4.2,0,7.5,3.4,7.5,7.5c0,4.2-3.4,7.5-7.5,7.5c-4.2,0-7.5-3.4-7.5-7.5
C168.3,846.1,171.8,842.7,175.8,842.7z"/>
<path fill="#444345" d="M88.9,887.4c0-2.4-1.8-4.2-4.2-4.2s-4.2,1.8-4.2,4.2c0,4,4.2,9.1,4.2,9.1S88.9,891.4,88.9,887.4z
M82.4,887.6c0-1.3,0.9-2.2,2.2-2.2c1.3,0,2.2,0.9,2.2,2.2c0,1.3-0.9,2.2-2.2,2.2C83.5,889.8,82.4,888.8,82.4,887.6z"/>
<path fill="#444345" d="M177.1,885.5l-2.4,2.1l-2.4-2.1c-3.4-3.1-9-3.1-12.4,0c-3.9,3.6-3.9,9.3,0,12.8l14.7,13.5l14.7-13.5
c3.9-3.6,3.9-9.3,0-12.8C186.1,882.4,180.4,882.4,177.1,885.5z"/>
<path fill="#444345" d="M237.1,987.3l-3.3,2.8c-0.3,0.2-0.3,0.7-0.1,0.9l18.9,21.4c0.4,0.5,1.1,0.6,1.7,0.1l2.2-1.8
c0.5-0.5,0.6-1.3,0.1-1.7l-18.7-21.6C237.8,986.9,237.4,986.9,237.1,987.3z"/>
<path fill="#444345" d="M236.1,973.1c-2.9,0.3-6.6,3-8.4,4.2c-2.4,1.6-3.3,2.6-3.5,2.7c-0.7,0.6-0.1,1.9-1.3,3.1
c-1.3,1.1-2.1,0.3-2.9,0.9c-0.4,0.3-1.5,1.1-1.7,1.3c-0.3,0.3-0.4,0.7-0.1,1.1c0,0,2.9,3.2,3.1,3.5c0.2,0.3,0.9,0.5,1.3,0.2
c0.4-0.4,1.5-1.3,1.6-1.5c0.2-0.2-0.1-1.9,0.8-2.7c2.1-1.6,3.9-0.5,6.2,2.2c0.3,0.3,0.7-0.1,0.9-0.2c0.2-0.2,3.3-3,3.5-3.1
c0.2-0.1,0.3-0.4,0.1-0.7c-0.2-0.3-1.1-1.5-1.6-2.1c-4.2-5.4,11.2-9,8.9-9.1C241.6,973,236.7,973,236.1,973.1z"/>
<path fill="#444345" d="M224.1,1010.9l2.1,2.1c0.5,0.5,1.3,0.3,1.7-0.2l11.1-10.9l-3.4-3.9l-11.6,11.2
C223.7,1009.6,223.7,1010.4,224.1,1010.9z"/>
<path fill="#444345" d="M247.9,985.9c-0.2,0.3-0.4,0.6-0.7,0.9l-3.1,3.2l3.1,3.6l3.8-3.6c0.2-0.2,0.6-0.5,0.9-0.7
c0.1,0,0.1,0,0.2-0.1c0.3-0.1,0.6,0,0.9,0.2c0.7,0.5,1.3,0.9,1.9,1.5c0.5,0.4,0.9,0.4,1.3-0.1c0.6-0.7,1.1-1.3,1.7-1.9
c0.9-1.1,1.9-2.1,2.9-3.2c1.6-1.7,2.4-3.7,2.4-5.8c0-0.8,0-1.5-0.2-2.4c-0.3-2-1.3-3-3.3-3.3c-0.5-0.1-1.1-0.2-1.5-0.1
c-0.6,0-1.3,0-1.8,0.1c-1.5,0.1-3,0.5-4.2,1.6c-0.9,0.9-1.9,1.8-2.9,2.7c-1.1,1.1-2.2,2-3.3,3.1c-0.3,0.3-0.4,0.6,0,0.9
c0.7,0.7,1.3,1.5,1.9,2.1c0.3,0.3,0.4,0.5,0.2,0.9C248,985.6,247.9,985.6,247.9,985.9z M250.3,985.4l4.7-4.4
c0.1-0.1,0.4-0.1,0.5,0c0.1,0.1,0.1,0.3,0,0.5l-4.2,5c-0.1,0.1-0.2-0.7-0.3,0.3l0,0c-0.1,0-0.2-0.2-0.2-0.2l-0.6-0.6
c-0.1-0.1-0.1-0.2-0.1-0.3C250.2,985.6,250.3,985.4,250.3,985.4z"/>
<path fill="#444345" d="M237.6,934c0,0.8-0.1,1.5,0.6,1.5h10.1v2.5c0,0.6-0.4,0.4,0.2,0.4h4c0.6,0,0.7,0.2,0.7-0.4v-2.5h9.5
c0.8,0,1.1-0.9,1.1-1.5v-5.2h-26.1L237.6,934L237.6,934z"/>
<path fill="#444345" d="M251.2,948.8V947c0-0.3-0.2-0.6-0.5-0.6s-0.5,0.3-0.5,0.6v1.7c-2.9,0.3-4.8,2.5-4.8,5.1
c0,2.9,2.2,5.2,5.1,5.2c2.9,0,5.2-2.4,5.2-5.2C255.7,951.3,254.1,949.1,251.2,948.8z"/>
<path fill="#444345" d="M261.5,939.4h-22c-1.1,0-2,1.1-2.2,2.2l-2.6,22.8c-0.1,0.6,0.1,1.5,0.6,2c0.4,0.5,1.1,0.9,1.6,0.9h27.3
c0.7,0,1.3-0.5,1.6-0.9c0.4-0.5,0.6-1.1,0.6-1.8l-2.6-23C263.5,940.6,262.5,939.4,261.5,939.4z M250.4,963c-5,0-9.1-4-9.1-9.1
s4-9.1,9.1-9.1c5,0,9.1,4,9.1,9.1S255.4,963,250.4,963z"/>
<path fill="#444345" d="M155,1069.4v0.4h11.3c0.6,0,1.1-0.9,1.1-1.5c0-0.6-0.5-1.5-1.1-1.5H155h-1.3h-2.4c-3,0-5.4,1.9-6.2,4.8
h-7.9v2.9h7.9c0.8,2.9,3.2,5.8,6.2,5.8h2.4l0,0h12.6c0.6,0,1.1-0.9,1.1-1.5s-0.5-1.5-1.1-1.5H155c-0.4,0-0.7-0.1-0.7-0.5
c0-0.4,0.3-0.5,0.7-0.5h11.3c0.6,0,1.1-0.4,1.1-0.9c0-0.6-0.5-0.9-1.1-0.9H155l0,0c-0.4,0-0.7-0.6-0.7-0.9
c0-0.4,0.3-0.9,0.7-0.9h11.3c0.6,0,1.1-0.4,1.1-0.9c0-0.6-0.5-0.9-1.1-0.9h-10.7v-0.4c-0.9,0-0.9-0.1-0.9-0.5
C154.6,1069.5,154.6,1069.4,155,1069.4z"/>
<path fill="#444345" d="M105.5,1076.6h27.3c1.3,0,3.3-0.7,3.3-1.6v-3.3c0-0.9-2.1-1.8-3.3-1.8h-27.3c-1.8,0-3.3,1.5-3.3,3.4
C102.4,1075,103.9,1076.6,105.5,1076.6z"/>
<path fill="#444345" d="M165.8,1086.7c0-1.8-1.5-3.4-3.4-3.4h-28.2c-1.3,0-1.9,0.6-2.9,1.6v3.4c0.9,0.9,1.6,1.7,2.9,1.7h28.2
C164.3,1090.1,165.8,1088.6,165.8,1086.7z"/>
<path fill="#444345" d="M131.4,1088.2v-2.9h-4h-5.8H96.6c0,0-2.5,1.1,1.3,2.8c5.7,2.4,10.3,2.8,14.7,3.4
c1.5,0.2,6.6,1.3,9.9-1.5c1.1-1.1,2.4-1.8,3.4-1.8H131.4z"/>
<path fill="#444345" d="M169.3,1059.4l8.2-0.8c-0.1-0.9-0.3-1.8-0.3-2.7c-0.1-2.3-0.2-4.6-0.3-7c-0.1-1.7,0-3.5,0-5.2
c0.1-2,0.2-4.2,0.3-6.2c0.1-1.6,0.2-3.4,0.4-5c0.2-2,0.5-4,0.8-6c0.2-1.5,0.5-3.2,0.7-4.7c0.1-0.5-0.2-0.9-0.7-0.9
c-0.3-0.1-0.6-0.1-0.9-0.1c-4.2,0-8.5,0-12.4,0c0,0,0,0,0,0.1c-0.9,0-1.9,0-2.9,0c-0.6,0-0.7,0-0.7,0.6
c-0.1,0.8-0.2,1.5-0.2,2.2c0,1.5,0,3.1,0.1,4.6c0,1.5,0.1,3.1,0.2,4.6c0.1,1.5,0.2,3.1,0.3,4.6c0.1,1.5,0.2,2.8,0.3,4.2
c0.1,1.9,0.3,3.9,0.5,5.8c0.1,1.6,0.3,3.2,0.4,4.8c0.2,1.5,0.3,3.2,0.5,4.8c0.1,0.8,0.2,1.5,0.3,2.2c0,0.2,0.1,0.4,0.4,0.4
c0.5,0,0.9-0.1,1.5-0.1c0.8-0.1,1.6-0.1,2.4-0.2C168.6,1059.5,168.9,1059.4,169.3,1059.4z M174.8,1023.7c0.7,0,1.1,0.4,1.1,1.1
c0,0.6-0.5,1.1-1.1,1.1c-0.6,0-1.1-0.5-1.1-1.1C173.7,1024.1,174.2,1023.7,174.8,1023.7z"/>
<path fill="#444345" d="M175.7,1082.3c-0.5,1.5,0.9,3.3,2.6,3.3c1.3,0,2.5-0.9,2.9-2.4c0.3-1.3,0.3-2.5,0.1-3.8
c-0.5-2.6-1.1-5.2-1.5-7.7c-0.4-2-0.9-4-1.3-6.1c-0.3-1.5-0.6-3.1-0.7-4.6v-0.1l-5.2,0.5c0.2,0.9,0.4,2,0.6,3
c0.6,3.2,1.1,6.3,1.8,9.4c0.5,1.9,0.9,4,1.3,5.9c0.1,0.4,0,0.9-0.1,1.3C176,1081.3,175.8,1081.8,175.7,1082.3z"/>
<path fill="#444345" d="M85.5,1019.1c1.3,0.1,2.6-0.1,4-0.2c0.1,0,0.1-0.1,0.1-0.2c0.6-1.1-0.1-2.9-1.3-3.4c0-1.1,0.2-2.4,0-3.6
c-0.2-1.5-0.2-3.5-1.1-4.6c-2-2.9-5-6.3-7.5-8.9c-1.7-1.9-3.6-2.2-6.2-2.2c-10.1-0.1-20.1-0.2-30.1-0.3c-3.2,0-4.4,1.3-4.4,4.4
c-0.1,4.9-0.1,9.9-0.2,15c-1.1-0.1-1.3,0.5-1.3,1.3c0,0.4,0,0.8,0,1.3c0,0.7,0.3,1.1,0.9,1.1c0.9,0,1.7,0,2.7,0
c0.9,0.1,1.3-0.3,1.5-1.1c0.9-2.8,3.1-4.4,6-4.4c2.9,0,5.1,1.6,6,4.6c0.3,0.9,0.8,1.1,1.6,1.1c4.8,0,9.7,0.1,14.6,0.2
c0.9,0,1.5-0.4,1.7-1.3c0.9-2.7,3.2-4.4,6-4.4c2.8,0,4.9,1.6,5.9,4.4C84.6,1018.3,85.1,1019.1,85.5,1019.1z M82.8,1007
L82.8,1007l-9.5,0.4c-0.7,0-1.3-0.4-1.3-1.1l0.1-6.8c0-0.7,0.6-1.3,1.3-1.3l3,0.1c0.1,0,0.3,0,0.4,0.1c0.4,0.1,0.6,0.2,6.8,7.3
c0.2,0.2,0.4,0.1,0.4,0.5C84.1,1006.9,83.5,1007,82.8,1007z"/>
<path fill="#444345" d="M48.8,1014.1c-3,0-5.5,2.4-5.5,5.4s2.4,5.5,5.4,5.5s5.5-2.4,5.5-5.4
C54.2,1016.6,51.8,1014.2,48.8,1014.1z"/>
<path fill="#444345" d="M78.6,1014.5c-3,0-5.5,2.4-5.5,5.4c0,3,2.4,5.5,5.4,5.5s5.5-2.4,5.5-5.4
C84.1,1017,81.6,1014.5,78.6,1014.5z"/>
<path fill="#444345" d="M247.8,1026.3c0-0.9-2.4-1.7-10.3-0.7c0,0,1.9-1.6,2.7-1.9c0.8-0.3,4.2-2.4,3.6-5.1
c-0.6-2.7-1.6-1.1-2.9,1.1c-1.1,2.1-2.7,4-4.9,5.3c0,0-0.7-4.2-3.1-4.4c-0.8,0-4,0-7.7,0.4l-0.7,0.1c-0.4,0-0.9,0.1-1.3,0.2
c0,0.1-0.2,0.1-0.2,0.2v4.6c0,0.4-0.1,0.7-0.5,0.7s-0.5-0.3-0.5-0.7v-4.6l0,0c-0.9,0.1-1.3,0.2-1.8,0.3c0,0-7.1,1.1-11.8,2.5
h-0.1c-0.1,0-0.2,0.1-0.3,0.1c-0.3,0.1-0.6,0.2-0.9,0.3c-0.2,0.1-0.4,0.1-0.6,0.2c-0.1,0-0.1,0.1-0.2,0.1
c-0.1,0-0.2,0.1-0.3,0.1l0,0c-0.9,0.4-1.6,0.6-2.4,1.1c0,0-0.8,0.4-0.3,1.5c0.3,0.7,4.2,2.4,12,3.6v-3.5c0-0.4,0.1-0.7,0.5-0.7
s0.5,0.3,0.5,0.7v3.7c0.9,0.1,1.3,0.1,1.7,0.2l0.9,0.1c2.6,0.3,5.1,0.5,9.9,0.6v-2.9c0-0.4,0.1-0.7,0.5-0.7s0.5,0.3,0.5,0.7v2.9
h0.8c1.1,0,1.6,0,2.6-0.1c0,0,2.5,0.2,2.7-4.4c0,0,4.4-0.8,4,4.2c-0.2,3.7,3,3.8,3,1.1c0-2.5-0.7-5.4-5.5-6.4c0,0,3.9,0.5,7,1.1
C247.5,1028.4,247.8,1027.3,247.8,1026.3z"/>
</g>
<g>
<polygon fill="#444345" points="678.1,1020.6 677.4,1020.6 650.5,985.8 642.4,985.8 642.4,1038 654,1038 654,1003.2
653.4,1003.2 680.4,1038 687.7,1038 687.7,987.7 678.1,987.7 "/>
<polygon fill="#444345" points="706.1,1038 731.3,1038 731.3,1028.3 714.8,1028.3 714.8,1015.7 731.3,1015.7 731.3,1007
714.8,1007 714.8,994.4 731.3,994.4 731.3,987.7 706.1,987.7 "/>
<polygon fill="#444345" points="744.8,994.4 755.4,994.4 755.4,1038 764.1,1038 764.1,994.4 776.6,994.4 776.6,987.7
744.8,987.7 "/>
<polygon fill="#444345" points="832.4,1022.5 832.3,1022.5 821.6,985.8 815.8,985.8 805.5,1022.5 805.5,1022.5 795.1,987.7
784.6,987.7 800.9,1038 808.2,1038 817.9,1007 818.1,1007 828.2,1038 835.6,1038 853,987.7 842.4,987.7 "/>
<path fill="#444345" d="M888.7,985.4c-15.2,0-25.3,11.7-25.3,26.9c0,15,9.7,27.1,25.3,27.1c15.6,0,25.3-12,25.3-27.1
C914.1,997.1,904,985.4,888.7,985.4z M888.7,1029.6c-11.1,0-15-9.7-15-17.6c0-8.3,5.6-16.6,15-16.6c9.5,0,15,8.4,15,16.6
C903.7,1019.8,899.8,1029.6,888.7,1029.6z"/>
<path fill="#444345" d="M959.8,1002.7c0-10.9-7.1-15-17.1-15h-14.4v50.2h11.6v-20.3h-0.7l12.5,20.3h12.1l-14.5-21.4
C956.3,1015.5,959.8,1009.1,959.8,1002.7z M940.4,1010.9h-0.5v-16.5h0.6c5.3,0,9.3,1.7,9.3,8
C949.9,1008.7,945.9,1010.9,940.4,1010.9z"/>
<polygon fill="#444345" points="1015.5,987.7 1003.2,987.7 987.4,1008 987.2,1008 987.2,987.7 976.6,987.7 976.6,1038
987.2,1038 987.2,1013.8 987.4,1013.8 1003.7,1038 1016.6,1038 996.1,1010.9 "/>
<path fill="#444345" d="M360.6,873.3c-25,0-41.6,19.1-41.6,44c0,24.7,15.9,44.3,41.6,44.3c25.6,0,41.6-19.6,41.6-44.3
C402.1,892.4,385.6,873.3,360.6,873.3z M360.6,945.5c-18.1,0-24.6-15.9-24.6-28.8c0-13.6,9.2-27.3,24.6-27.3
s24.6,13.7,24.6,27.3C385.2,929.6,378.8,945.5,360.6,945.5z"/>
<path fill="#444345" d="M443.5,876.6h-22.4v83.1h15.4v-31.9h9.3c17.2,0,26.9-8,26.9-25.8C472.6,883,461.1,876.6,443.5,876.6z
M441,915.3h-4.4v-26.1h4c9.2,0,15.4,1.9,15.4,12.8C456,912.9,450.7,915.3,441,915.3z"/>
<polygon fill="#444345" points="491.7,959.7 535.1,959.7 535.1,945.2 508.1,945.2 508.1,923 533.3,923 533.3,908.5 508.1,908.5
508.1,889.2 535.1,889.2 535.1,876.6 491.7,876.6 "/>
<polygon fill="#444345" points="612.4,932.7 612.7,932.7 568.6,872.8 556.4,872.8 556.4,959.7 573.8,959.7 573.8,901.7
573.3,901.7 617.6,961.6 629.8,961.6 629.8,876.6 612.4,876.6 "/>
<polygon fill="#444345" points="695.5,959.7 711.9,959.7 711.9,923 736.1,923 736.1,908.5 711.9,908.5 711.9,889.2 738,889.2
738,876.6 695.5,876.6 "/>
<path fill="#444345" d="M795.8,961.6c25.6,0,41.6-19.6,41.6-44.3c0-24.9-16.5-44-41.6-44s-41.6,19.1-41.6,44
C754.4,942,770.3,961.6,795.8,961.6z M795.8,889.4c15.4,0,24.6,13.7,24.6,27.3c0,13-6.4,28.8-24.6,28.8
c-18.1,0-24.6-15.9-24.6-28.8C771.3,903.1,780.4,889.4,795.8,889.4z"/>
<path fill="#444345" d="M894.1,873.3c-25,0-41.6,19.1-41.6,44c0,24.7,15.9,44.3,41.6,44.3c25.6,0,41.6-19.6,41.6-44.3
C935.6,892.4,919.3,873.3,894.1,873.3z M894.1,945.5c-18.1,0-24.6-15.9-24.6-28.8c0-13.6,9.2-27.3,24.6-27.3
c15.4,0,24.6,13.7,24.6,27.3C918.7,929.6,912.3,945.5,894.1,945.5z"/>
<path fill="#444345" d="M1018.7,918.2c0-24-16.2-41.6-40.6-41.6h-21.8v83.1h21.8C1002,959.7,1018.7,941.8,1018.7,918.2z
M971.8,945.2v-56.1h2.1c18.5,0,27.9,9.7,27.9,28c0,16.6-7.9,28-27.9,28L971.8,945.2L971.8,945.2z"/>
</g>
</g>
<g>
<path d="M1039.4,1045.1h-1.2c-0.1-0.4-0.2-0.6-0.3-0.7l-0.5-0.5l-0.2-0.3l-0.1-0.3c-0.1,0-0.2-0.1-0.3-0.3h-0.1l-0.3-0.5
l-0.3-0.3l-0.3-0.3c-0.6-0.5-1.3-1.1-2.1-2c-0.7-0.9-1.1-1.3-1.1-1.3l-0.3-0.3h-0.7l0.1-0.1l-0.3,0.3l0.1-0.1
c-0.1,0.1-0.3,0.3-0.5,0.5l-1.3,1.3v-0.1l-1.3,1.3l-0.9,0.9l0,0c-1.2,1.2-1.9,1.9-2.2,2.1v0.1c0,0.1-0.1,0.3-0.5,0.7l-0.6-0.3
l-0.4-0.1c0-0.3-0.1-0.4-0.1-0.5l-0.2-0.1c-0.1-0.3-0.3-0.5-0.4-0.5l-1.7-1.7c0,0,0.1,0.1,0.1,0.1s0,0.1,0,0.1s-0.1,0.1-0.3,0.1
l0.1-1.1l0.9-0.9c0.3-0.2,0.7-0.5,1.1-0.9l0.7-0.7c0.2-0.1,0.4-0.3,0.7-0.7l1.7-1.7v0.1l0.1-0.1h-0.1c0.8-0.7,1.2-1.1,1.3-1.1
l1.7-1.7c0.4-0.4,0.9-0.9,1.5-1.3l0.5-0.7l0.5-0.5l0.5,0.2c0.1,0.1,0.2,0.1,0.2,0.1l1,0.9c0.2,0.1,0.5,0.4,0.8,0.8
c0.3,0.3,0.5,0.6,0.6,0.7l0.7,0.7v0.1l5.8,6c0.3,0.3,0.5,0.5,0.7,0.7c0.2,0.2,0.5,0.4,0.7,0.7l-0.3,0.5l-0.5,0.5h0.1
c-0.4,0.1-0.6,0.3-0.7,0.7l-1.1,1.1c-0.1,0.1-0.3,0.3-0.3,0.3L1039.4,1045.1L1039.4,1045.1
C1039.4,1044.9,1039.4,1044.9,1039.4,1045.1z M1021.5,1041l-0.3,0.3v0.3h0.1c0.1,0,0.1,0.1,0.2,0.1l0.7,0.7
c0.1,0.1,0.3,0.3,0.7,0.6c0.7,0.6,0.9,0.9,0.9,1.1l0.1,0.3l0.1-0.1c0.1,0.1,0.1,0.1,0.2,0.3l0.1-0.1v0.1l0.1-0.1h-0.1l0.1-0.1
c0,0-0.1,0-0.1-0.1c0-0.1,0-0.1-0.1-0.1l1.1-1.1l0.1,0.1l2.2-2.1l0.1,0.1l2.7-2.7l0.1,0.1c0.3-0.2,0.7-0.6,1.1-1.1h0.1l0.1-0.1
c1.3,1.4,2.6,2.8,3.8,4c0.5,0.4,0.8,0.7,0.9,0.9l0.7,0.6l0.1,0.1c0.3,0.3,0.5,0.6,0.8,0.8l0.5,0.5l-0.1,0.1
c0.1,0.1,0.1,0.1,0.1,0.3v0.1h0.3l0.9-0.9c0.8-0.9,1.5-1.5,1.9-1.7c0-0.1,0.1-0.2,0.3-0.3l-0.1-0.1l-0.1,0.1c0,0,0-0.1-0.1-0.1
s-0.1,0-0.1,0.1l-1.1-1.1l0.1-0.1l-0.3-0.3c0,0-0.1,0-0.1-0.1l0.1-0.1l-1.9-1.9c-0.5-0.5-0.9-1-1.5-1.5c-0.5-0.5-0.9-0.9-1.1-1.2
l-0.7-0.7h0.1l-1.1-1.1c-0.1-0.1-0.3-0.3-0.5-0.5l-1.7-1.6c-0.1,0-0.1,0-0.1,0.1c-0.1-0.1-0.1-0.1-0.3-0.1l-0.2,0.1h0.1l-2.1,1.9
h0.1l-1.9,1.9c-0.4,0.3-0.8,0.7-1.3,1.1l-1.5,1.4l-0.2,0.1l-1.1,1.1l-0.3,0.3c-0.3,0.2-0.5,0.5-0.7,0.7s-0.5,0.5-0.9,0.9
L1021.5,1041z"/>
</g>
</g>
</g>
<g id="OFN_beta__x28_new_x29_" display="none">
<g display="inline">
<text transform="matrix(0.9994 3.560383e-02 -3.560383e-02 0.9994 1024.377 998.5481)" fill="#444345" font-family="'BubblegumSans-Regular'" font-size="26.8582">BETA</text>
<text transform="matrix(3.560383e-02 -0.9994 0.9994 3.560383e-02 1038.5093 1045.8531)" fill="#444345" font-family="'BubblegumSans-Regular'" font-size="29.5441">&gt;</text>
<g>
<g>
<path fill="#444345" d="M156.5,1047.3v-20.9c0-2.3-2.1-4-4.4-4h-33.4c-2.4,0-4.6,1.6-4.6,4v20.9c0,2.3,2.4,4.2,4.6,4.2h33.4
C154.4,1051.4,156.5,1049.6,156.5,1047.3z M118.8,1026.3h33.8v21.3h-33.8V1026.3z"/>
<path fill="#444345" d="M197.5,895.5c-8.4,16.7-11.9,18.9-11.9,25.8c0,6.6,5.6,12.2,12.3,12.2c6.6,0,12.3-5.4,12.3-12.2
c0-7-3.1-10.9-11.9-25.8C198,895.1,197.7,895.1,197.5,895.5z M194.2,921.1c0,2.2-1.3,3-2.5,3c-1.5,0-2.5-1.1-2.5-2.6
c0-4.8,2.4-8,4.4-10.8c0.7-0.9,1.3-1.7,1.7-2.5C195.4,907.9,194.2,917.1,194.2,921.1z"/>
<path fill="#444345" d="M92.5,1032.2c-2.5-1.6-7.5-4.6-7.5-4.6s0,0,0,6.3c0,6.3,10.6,8.6,10.6,8.6
C95.4,1039.5,95.1,1033.8,92.5,1032.2z"/>
<path fill="#444345" d="M92.5,1043.5c-2.5-1.6-7.5-4.6-7.5-4.6s0,0,0,6.3c0,6.3,10.6,8.6,10.6,8.6
C95.4,1050.9,95.1,1045.2,92.5,1043.5z"/>
<path fill="#444345" d="M95.5,1065.2c-0.2-3-0.4-8.6-2.9-10.3c-2.5-1.6-7.7-4.6-7.7-4.6s0,0,0,6.3
C85,1062.9,95.5,1065.2,95.5,1065.2z"/>
<path fill="#444345" d="M99.1,1042.5c0,0,11-2.4,11-8.6c0-6.3,0-6.3,0-6.3s-6.2,3-8.7,4.6C98.8,1033.8,99.3,1039.5,99.1,1042.5z
"/>
<path fill="#444345" d="M99.1,1053.8c0,0,11-2.3,11-8.6c0-6.2,0-6.3,0-6.3s-6.2,3-8.7,4.6C98.8,1045.2,99.3,1050.9,99.1,1053.8z
"/>
<path fill="#444345" d="M110.1,1056.6c0-6.3,0-6.3,0-6.3s-6.1,2.9-8.6,4.6c-2.5,1.6-2.4,7.3-2.5,10.3
C99,1065.2,110.1,1062.9,110.1,1056.6z"/>
<path fill="#444345" d="M101.1,1025.9c0-2.9-0.7-6.6-4-10.3c0,0-3.9,4.8-3.9,9.5c0,3.1,1.7,5.7,3.9,8.4
C97.1,1033.7,101.1,1029,101.1,1025.9z"/>
<path fill="#444345" d="M84.3,851.2c0.8,0,1.5-0.1,2.2-0.4c1.6,1.5,3.7,2.2,5.8,2.2c2.1,0,4.2-0.8,5.8-2.2
c0.7,0.3,1.5,0.4,2.2,0.4c3.5,0,6.3-2.8,6.3-6.3s-2.8-6.3-6.3-6.3c-0.3,0-0.6,0-0.9,0.1c-1.6-2.4-4.2-3.7-7.1-3.7
c-2.9,0-5.5,1.3-7.1,3.7c-0.3,0-0.6-0.1-0.9-0.1c-3.5,0-6.3,2.8-6.3,6.3C78.2,848.4,81,851.2,84.3,851.2z"/>
<path fill="#444345" d="M94,862c0,0.9,0.8,1.7,1.8,1.7c0.9,0,1.7-0.8,1.7-1.7s-1.7-3.6-1.7-3.6S94,860.9,94,862z"/>
<path fill="#444345" d="M99.1,858.3c0.9,0,1.8-0.8,1.8-1.7s-1.8-3.6-1.8-3.6s-1.7,2.6-1.7,3.6C97.3,857.5,98.2,858.3,99.1,858.3
z"/>
<path fill="#444345" d="M92,859.2c0-0.9-1.7-3.6-1.7-3.6s-1.8,2.6-1.8,3.6s0.8,1.7,1.8,1.7C91.2,861,92,860.2,92,859.2z"/>
<path fill="#444345" d="M8.8,1010.5c0,6.4,5.2,11.7,11.7,11.7s11.7-5.2,11.7-11.7s-5.2-11.7-11.7-11.7S8.8,1004,8.8,1010.5z
M29.1,1010.5c0,4.8-4,8.8-8.7,8.8c-4.8,0-8.8-4-8.8-8.8c0-4.8,4-8.8,8.8-8.8S29.1,1005.7,29.1,1010.5z"/>
<polygon fill="#444345" points="16,1014.9 22,1012 24.8,1006.1 19,1009.1 "/>
<path fill="#444345" d="M113.9,866.3c0-0.1-0.1-0.2-0.1-0.3L113.9,866.3L113.9,866.3z"/>
<path fill="#444345" d="M110.6,876.1c7.1-2,14.4,3.1,15.4,10.5c0,0.3,0.1,0.6,0.1,0.9c0.3,0,0.6,0.1,0.9,0.1
c6-0.2,12.1-0.2,18.1-0.5c-2.5,0.7-4.4,3-4.4,5.7c0,3.3,2.7,6,6,6s6-2.7,6-6c0-3-2.2-5.4-5-5.9c4.4-0.3,3.6-0.2,4.4-4.2
c0.4-1.9,0.6-3.9,0.8-5.8c0.2-1.8-0.3-2.2-2.1-2.4c-2.7-0.1-5.1-0.2-7.9-0.3c-0.1,0-0.2-0.1-0.2-0.2c0-2,0.5-6.8,0.5-6.8
s-0.9-0.8-1.9-0.1c0,2.4,0,4.6,0,7.1c0,0-3.6-0.1-8.2-0.2c-0.2,0-0.9-0.4-1.3-1.1c-0.7-1.9-2.4-5.6-4.4-11.4
c0,0-1.1-2.4-3.8-2.4c-2.1,0-13.4,0-13.4,0v14.2c0,0-0.8,0.4-1.5,0.5C108.2,876.1,108.7,876.5,110.6,876.1z M149.8,892.9
c0,1.7-1.5,3.1-3.1,3.1c-1.7,0-3.1-1.5-3.1-3.1c0-1.7,1.5-3.1,3.1-3.1C148.4,889.8,149.8,891.1,149.8,892.9z M113.8,866v-2.7h11
l3.5,10.5l0.1,0.1c-4.7-0.1-10.1,0-14.6,0.2V866z"/>
<path fill="#444345" d="M113.3,877.3c-6,0-10.8,4.8-10.8,10.8c0,6,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8
C124.1,882.1,119.3,877.3,113.3,877.3z M113.3,894.1c-3.3,0-6-2.7-6-6c0-3.3,2.7-6,6-6s6,2.7,6,6
C119.3,891.4,116.6,894.1,113.3,894.1z"/>
<path fill="#444345" d="M87.2,1074.3l-7.9-4.2c0.5-1.7,0.5-3.7,0-5.6c-1.6-5.5-7.9-8.9-13.4-7.3c-5.6,1.6-8.8,7.3-7.1,12.8
c1.6,5.5,7.9,8.9,13.4,7.3c1.8-0.6,3.5-1.5,4.6-2.8l7.9,4.4c0.8,0.4,1.7,0.1,2.2-0.7l1.1-1.9C88.4,1075.5,88,1074.8,87.2,1074.3
z M70.8,1073.2c-3.2,0.9-7-1.1-7.9-4.2c-0.9-3.2,0.9-6.6,4.2-7.5c3.2-0.9,7,1.1,7.9,4.2C75.9,1069,74.1,1072.3,70.8,1073.2z"/>
<path fill="#444345" d="M42.4,987.3c6-6.8,2.7-11.7,1.7-13.6c-0.9-1.9-1.3-4.7-1.3-4.7l0.2-0.9l0.2-1.1
c-1.3-0.4-2.7,0.3-2.7,0.3c0.3,2.1-0.3,4.4-0.6,5.3c-0.4,0.9-1.6,2.8-2.2,4c-0.6,1.1-2.1,4.7-9.9,8.1
c-7.9,3.4-18.3,0.3-18.3,0.3c-2.7-0.7-4.9,0.4-4.9,0.4L4,986.3l0.1,0.8l-0.3,0.5l0.1,0.6c7.7,11.9,23.6,7.9,23.6,7.9
S36.4,994,42.4,987.3z"/>
<path fill="#444345" d="M215.2,1059.3c3.5-0.1,6.8-0.7,10.1-2c1.1-0.5,1.5-1.3,1.6-2.5c0.1-0.7,0.1-1.3,0.1-1.9
c0-0.1,0-0.1,0-0.2c0-0.1-0.3-0.4-0.7-0.4c-1.6-0.1-1.9-0.5-2.4-2c-0.4-1.1-0.7-2.1-1.1-3.1c3.9-0.9,3.4-3.7,2-7.3
c-1.1,1.6-0.3,2.1-2.1,2.5c-1.7,0.4-3,1.3-3.8,3c-0.1,0.3-0.3,0.7-0.5,1.1c-0.2-2,0.7-3.2,2.4-4.7c-0.8-0.8-4-0.4-4.8-0.9
c-3.1-2.2-17.5-4.8-26.5,2c-0.5-0.5-0.9-0.9-1.5-1.3c2.1-0.9,2.9-2,2.5-3.7c-0.3-1.3-1.3-2-2.4-1.9c-1.9,0.1-2.6,0.9-2.9,4.2
c-0.7-0.7-1.1-1.1-1.9-1.9c0,0.6-0.2,1.1-0.1,1.5c0.3,0.9,1.1,1.5,1.9,1.8c0.7,0.1,1.1,0.5,1.3,1.1c0.2,0.4,0.4,0.9,0.8,1.1
c0.9,0.9,1.1,2.1,1.1,3.5c0,3,0.1,6,0.5,9c0.4,3.2,1.1,6.3,2.6,9.2c0.5,0.9,1.1,0.9,1.9,0.8c0.3-0.1,0.6-0.8,0.6-1.1
c0.2-2.4,1.3-4.4,2.4-6.4c4.2,1.3,8.3,1.5,12.5,1.3c0.2,0,0.6,0.4,0.8,0.7c0.8,1.5,1.5,3.2,2.2,4.8c0.4,0.9,1.3,0.9,2,0.8
c0.2-0.1,0.3-0.9,0.3-1.3c0-1.7,0-3.6,0-5.3c0.2-0.1,0.3-0.1,0.3-0.2C214.7,1059.3,215.1,1059.3,215.2,1059.3z M187.2,1039.8
c-0.5-1.1-0.2-1.9,0.6-2c0.5-0.1,1.1-0.1,1.1,0.6C189.1,1039.2,188.5,1039.7,187.2,1039.8z"/>
<path fill="#444345" d="M33.5,924.2c6.6-0.6,8.9-3.9,10.8-10.3c1.1-3.9,1.3-7.7,1.5-11.8c-0.3-3.3-0.3-6.6-0.7-9.9
c-0.7-4.6-1.8-9.3-4-13.4c-1.7-3.3-2.2-5.3-5.9-5.9c-4-0.5-8.4,1-10.1,5.6c-0.5,1.3-1.1,2.4-1.3,3.7c-0.7,2.8-2.4,5-4.4,7
c-5.8,5.3-7.7,12.1-6.4,19.6C14.5,918.6,23.5,925.1,33.5,924.2z M21.2,893.3c3.5-3.3,6-6.8,7.1-11.5c0.2-0.9,0.7-1.8,1.1-2.6
c1.3-2.3,4.2-2.7,6.1-0.8c0.8,0.9,1.3,1.9,1.7,2.9c2.8,6.6,4,13.7,4,19.9c0,4.7-0.3,8.4-1.5,11.9c-1.7,5-5.3,7.5-10.1,7
c-4-0.4-7.3-2.4-9.9-5.5C15.2,908.4,15.4,898.6,21.2,893.3z"/>
<path fill="#444345" d="M29.5,917.1c3.2,0.3,5.6-0.7,7.1-3.6c2.8-5.6,3-11.3,1.1-17.2c-0.4-1.3-1.3-2.2-2.5-2.7
c-3.5-1.5-7.1-1.5-10.5-0.1c-1.6,0.8-3.2,1.8-3.9,3.6c-0.4,0.9-0.3,1.6,0.7,2.1c1.5,0.8,3,1.5,4.6,2.4c0.5,0.3,0.9,0.7,1.3,0.9
c0,0.1-0.1,0.3-0.2,0.4c-0.4-0.1-0.8-0.1-1.1-0.2c-1.7-0.5-3.5-1.1-5.2-1.5c-0.9-0.3-1.5,0.1-1.7,0.9c-0.1,0.4-0.2,0.8-0.2,1.1
C17.9,910,22.8,916.4,29.5,917.1z"/>
<path fill="#444345" d="M30.6,889c0.9,0.3,1.9,0.5,2.9,0.7c1.9-0.1,2.7-0.6,2.7-2.5c0-1.3-0.3-2.8-0.7-4.2c-0.3-1.1-1.1-2-2.4-2
c-1.3-0.1-2.5,0.5-3,1.7c-0.5,1.1-0.9,2.4-1.1,3.8C28.7,887.8,29.1,888.5,30.6,889z"/>
<path fill="#444345" d="M56.9,983.4c-0.4,0.1-0.9-0.1-0.9-0.5c0,0-0.5-1.3-2-2.9c-0.4-0.4-0.8-0.7-1.1-0.9
c-0.6-0.5-1.3-0.9-1.8-1.6c0.9,8.1,4.4,14,8.3,14c4.7,0,8.6-8.4,8.6-18.9s-4-18.9-8.7-18.9c-3.1,0-5.8,3.7-7.3,9.1
c0.6,0.9,1.1,1.3,1.9,1.8c0.4,0.3,0.9,0.7,1.3,1.1c1.9,1.8,2.4,3.5,2.4,3.6s0,0.1,0,0.2c0,0.3-0.2,0.6-0.6,0.7s-0.9-0.1-0.9-0.5
c0,0-0.5-1.3-2-2.9c-0.4-0.4-0.8-0.7-1.1-0.9c-0.5-0.3-0.9-0.7-1.3-1.1c-0.2,0.9-0.4,1.8-0.5,2.8c0.7,2.4,1.6,3.1,2.8,4
c0.4,0.3,0.9,0.7,1.3,1.1c1.9,1.8,2.4,3.5,2.4,3.6s0,0.1,0,0.2c0,0.3-0.2,0.6-0.6,0.7s-0.9-0.1-0.9-0.5c0,0-0.5-1.3-2-2.9
c-0.4-0.4-0.8-0.7-1.1-0.9c-0.7-0.5-1.5-1.1-2-1.9c0,0.6,0,1.1,0,1.7c0.7,3.5,1.7,4.4,3.1,5.3c0.4,0.3,0.9,0.7,1.3,1.1
c1.9,1.8,2.4,3.5,2.4,3.6c0,0.1,0,0.1,0,0.2C57.5,983,57.3,983.3,56.9,983.4z"/>
<path fill="#444345" d="M196.9,877c1.6,1.8,3.6,3.6,6,3.8c1.7,0.3,3.9-0.9,5.2-0.9c2.8,0,2.2,0.7,5.2,0.7c2.9,0,8.5-7,9.9-14.2
c0.3-1.8,0-4.9-1.3-7.9c-1.6-3.5-6.4-4.8-9.5-4.2c-0.8,0.1-2.5,0.5-3.9,0.7c0.3-0.9,0.9-2.6,2.6-3.5c0.5-0.3,0.7-0.9,0.4-1.3
c-0.3-0.5-0.9-0.7-1.3-0.4c-2.7,1.5-3.6,4.2-3.8,5.4c-1.3-0.3-4.4-0.8-5.8-0.8c-1.7,0.1-3.4,0.6-4.9,1.7c-1.3,1.1-2,2.5-2.6,4
c-0.8,2.2-1.1,4.4-0.8,6.8C192.8,870.8,194.4,874.1,196.9,877z M202.8,858.9c1.5,0,2.7,1.1,2.7,2.5c0,1.8-1.3,3.3-2.8,3.3
c-1.1,0-2.1-1.5-2.1-3.2C200.8,860,201.5,858.9,202.8,858.9z"/>
<path fill="#444345" d="M204.7,852.3c1.1,0.1,2.4,0.2,2.9-0.9c0.6-1.1-0.3-2.2-1.1-3.1c-1.8-1.9-4.6-2.3-7.7-0.9
c0.4,0.7,0.8,1.3,1.1,1.8C200.9,851,202.6,852,204.7,852.3z"/>
<path fill="#444345" d="M133.7,858.3c1.9-4,4.6-7.1,4.6-7.1c4,1.5,10.8,3.2,15.6-0.2c6.4-4.6,5.8-14.6,15-19.5
c2.1-1.1-18.1-5.9-28.7,0.2c-7.9,4.5-7.3,12-7.1,14.6c10.1-12,25.2-11.4,25.2-11.4s-21.4,7.4-27.7,22.2
C130.2,858.1,133.1,859.6,133.7,858.3z"/>
<path fill="#444345" d="M212,1007c4.8-9.9-0.6-17-2.7-19.6c-2.1,18.9-17.9,28.5-17.9,28.5s16.7-21.8,13.2-41
c-0.3-1.5-4.2-1.1-3.9,0.7c0.8,5.4,0.2,10.3,0.2,10.3c-5,1.1-13,4-15.8,10.7c-3.5,8.9,4,18.7-2,29.9
C181.8,1029.2,205.5,1020.4,212,1007z"/>
<path fill="#444345" d="M37.2,932.9c-2,1.5-1.6,5.4-0.1,7.5c1.5,1.9,5.3,3.4,7.3,1.8c0.4-0.3,1.6-1.1,1.6-1.1
c2.2,1.7,3.6,0,4.6,1.3c1.1,1.5,3.8,4.7,4.6,5.8c0.9,1.1,2.4,1.9,3.2,1.3c0.8-0.6,3.5-2.5,4.6-3.3c1.1-0.8,1.1-1.8,0.5-2.6
c-0.6-0.8-2.2-0.6-3-1.5c-0.8-0.9-3.1-3.8-3.8-4.7c-0.9-1.3-0.1-2.7,1.6-3.4c11.8-4.6,16,2.3,19.7-0.5
c2.8-2.1-0.3-11.2-6.6-19.3s-14.6-13.4-17.4-11.1C49.5,906.8,61,914.9,37.2,932.9z M57.2,907.8c0.7-0.5,6.4,2.8,11.5,9.1
c4.9,6.3,6.3,12.1,5.6,12.6c-0.7,0.5-6.4-2-11.4-8.3C57.9,914.9,56.6,908.3,57.2,907.8z"/>
<path fill="#444345" d="M15,980.9c8.2,0,15-3.9,15-5.9c0,0,0-0.6,0-6.2c0-5.7-10.3-10.3-10.3-14.4c0-4,10.3-8.7,10.3-14.4
c0-5.7,0-6.2,0-6.2c0-2.1-6.8-5.9-15-5.9s-15,3.8-15,5.8c0,0,0,0.6,0,6.2c0,5.7,10.3,10.3,10.3,14.4c0,4-10.3,8.7-10.3,14.4
c0,5.7,0,6.2,0,6.2C0,977.1,6.8,980.9,15,980.9z M3.5,934.1c1.8-1.1,5.3-2.9,10.9-2.9s10.6,2.9,10.6,2.9
c0.4,0.2,1.8,1.1,0.9,1.6c-2.2,1.3-6.6,2.7-11.6,2.7s-9.3-1.5-11.5-2.8C1.8,935,3.5,934.1,3.5,934.1z M2.9,968.8
c0-1.7,2.7-4.4,4.7-6.4c2.8-2.7,5.4-4.7,5.4-7.9c0-3.2-2.7-5.2-5.5-7.9c-2-2-4.8-4.7-4.8-6.4l-0.1-2.6c2.7,1.5,7.1,2.9,11.7,2.9
c4.7,0,9.1-1.3,11.8-2.9l-0.1,2.6c0,1.7-2.8,4.4-4.8,6.4c-2.8,2.7-5.4,4.7-5.4,7.9c0,3.2,2.2,5.2,5,7.9c2,2,4.4,4.7,4.4,6.4v3.5
c-1.9-1.3-9.5-2-9.5-5.9c0-1.9-2.7-1.9-2.7,0c0,3.9-8.1,4.6-10.1,5.9v-3.5H2.9z"/>
<path fill="#444345" d="M210.9,900.8c0,11,8.9,19.9,19.9,19.9c11,0,19.9-8.9,19.9-19.9c0-10.9-8.9-19.9-19.9-19.9
C219.8,880.9,210.9,889.8,210.9,900.8z M236.2,884.7c6.7,2.2,11.5,8.6,11.5,16c0,3.9-1.3,7.5-3.5,10.3c-0.6-0.5-1.3-1.8-0.7-3.2
c0.6-1.3,0.8-4.6,0.7-5.8c-0.1-1.3-0.8-4.2-2.5-4.2c-1.7,0-2.9-0.6-4-2.7c-2.1-4.2,4-5.1,1.8-7.5c-0.6-0.7-3.7,2.7-4.2-1.8
C235.5,885.7,235.8,885.1,236.2,884.7z M240.2,914.9c-2.7,1.7-5.9,2.8-9.4,2.8c-1.8,0-3.7-0.3-5.3-0.9c0.9-0.6,1.1-1.3,2-1.3
c1.1,0,1.9-0.4,3.1-0.7c1.1-0.2,3-1.3,4.6-1.5C236.7,913.3,239.4,913.5,240.2,914.9z M228.4,884c-0.4,0.8-1.5,1.1-2.1,1.7
c-1.5,1.3-2,1.1-2.8,2.3c-0.8,1.3-3.3,3-3.3,3.9s1.3,1.9,1.8,1.7c0.7-0.2,2.4-0.2,3.3,0.2c0.9,0.4,8.1,0.7,5.8,6.8
c-0.7,1.9-3.9,1.5-4.7,4.7c-0.1,0.5-0.6,2.4-0.6,3.1c-0.1,0.9,0.7,4.8-0.3,4.8s-3.6-3.4-3.6-4c0-0.6-0.7-2.8-0.7-4.6
s-3.2-1.8-3.2-4.2c0-2.2,1.7-3.3,1.3-4.4c-0.4-1.1-3.4-1.1-4.6-1.3C217.1,889,222.2,884.9,228.4,884z"/>
<path fill="#444345" d="M135.7,1029.6c-4,0-7.3,3.3-7.3,7.3s3.3,7.3,7.3,7.3c4,0,7.3-3.3,7.3-7.3
C142.9,1032.9,139.7,1029.6,135.7,1029.6z M132.5,1040c0-0.2-0.3-0.9-0.3-1.6c0-0.7-1.1-0.7-1.1-1.5c0-0.8,0.7-1.3,0.5-1.6
c-0.1-0.4-1.3-0.4-1.6-0.5c0.8-2,2.7-3.6,4.9-4c-0.2,0.3-0.6,0.4-0.8,0.6c-0.5,0.5-0.8,0.4-1.1,0.9s-1.1,1.1-1.1,1.5
c0,0.3,0.5,0.7,0.7,0.7c0.2-0.1,0.9-0.1,1.1,0.1c0.4,0.1,3,0.3,2.1,2.4c-0.3,0.7-1.5,0.6-1.7,1.7c-0.1,0.2-0.2,0.9-0.2,1.1
c0,0.4,0.3,1.7-0.1,1.7C133.5,1041.4,132.5,1040.2,132.5,1040z M135.7,1043.1c-0.7,0-1.3-0.1-1.9-0.3c0.4-0.2,0.4-0.5,0.8-0.5
s0.7-0.2,1.1-0.3c0.4-0.1,1.1-0.5,1.6-0.5c0.5,0,1.5,0,1.8,0.5C138.1,1042.7,137,1043.1,135.7,1043.1z M140.7,1040.6
c-0.2-0.2-0.5-0.7-0.2-1.1c0.2-0.5,0.3-1.6,0.2-2.1c-0.1-0.5-0.3-1.5-0.9-1.5s-1.1-0.2-1.5-0.9c-0.8-1.5,1.5-1.8,0.7-2.7
c-0.2-0.3-1.3,0.9-1.5-0.7c0-0.1,0.1-0.3,0.3-0.5c2.4,0.9,4.2,3.2,4.2,5.9C141.9,1038.4,141.4,1039.6,140.7,1040.6z"/>
<path fill="#444345" d="M44.9,1061.1c0,0.3,0,0.5,0,0.8c0.1,1.7,1.5,3.2,3.4,3.2c1.7,0,3.2-1.3,3.4-3c0.1-0.3,0.1-0.6,0.1-0.9
c0-0.9,0.4-1.3,1.1-1.5c6.4-1.5,11.4-6.6,12.4-13c0.1-0.8,0.1-1.5,0.4-2.1c0.6-0.5,1.5-0.9,1.7-1.5c0.2-0.5-0.4-1.3-0.6-2.1
c1.1-1.1,1.1-1.6-0.2-2.9c1.3-1.3,1.3-1.9-0.1-3.2c0.9-0.4,1.3-1.1,0.9-2c-0.3-0.6-1.1-0.9-1.6-1.3c-0.1,0.1-0.1,0.2-0.2,0.2
c-0.1-0.6-0.1-1.1-0.4-1.5c-0.4-0.5-0.9-1.1-1.5-1.1c-0.3-0.1-0.9,0.6-1.1,0.9c-0.7,1.3-1.1,2.8-1.7,4.2s-1.3,2.7-2.2,3.9
c-2.7,3.4-6.3,4.4-10.4,3.6c-4-0.9-6.8-3.3-7.9-7.3c-0.2-0.8-0.2-1.5-0.4-2.3c0.9-0.6,2.1-0.9,1.6-2.2c-0.2-0.7-1.1-1.1-2-1.7
c0-0.5,0.2-1.5-0.9-1.9c-0.9-0.4-1.6,0.2-2.2,1.1c-0.7-0.8-1.3-1.6-2.4-1.1c-0.6,0.4-0.9,1.3-1.5,2.2c-0.7,0-1.8-0.1-2,1.3
c-0.1,0.9,0.6,1.5,2.4,2c-1.1,1.3-3,1.3-4.2,2.4c1.1,0.6,2,1.1,3.1,1.7c0.6,0.3,0.8,0.7,0.7,1.3c-0.2,2.1-0.3,4.4-0.5,6.4
c-0.8,9.2,5.5,14.3,11.5,15.9C44.7,1059.8,45,1060,44.9,1061.1z M35.7,1034.1c-0.3,0-0.7-0.4-1.3-0.8c0.7-0.4,0.9-0.9,1.3-0.9
c0.3,0,0.9,0.6,0.8,0.8C36.3,1033.6,35.9,1034.1,35.7,1034.1z"/>
<path fill="#444345" d="M211.6,940.4h-6.4c-1.1,0-2.7,0.7-3.4,1.6l-8.5,10.9c-0.7,0.9-0.3,0.9,0.9,0.9h34.6c1.1,0,1.6,0,0.9-0.9
l-7.4-11c-0.7-0.9-2.1-1.5-3.3-1.5h-1.6v-3.9h-5.8V940.4z"/>
<path fill="#444345" d="M219.2,930.1l0.5-0.1c1.1-0.2,2-1.1,2.7-2.2c0.7-1.1,0.8-3.6,0.6-4.9c-0.7,2-2.1,2.7-3.7,3.4
c-0.4,0.2-0.9,0.4-1.3,0.5c-0.5,0.2-0.9,0.4-1.5,0.6c-1.5,0.8-2.1,2-2.4,4c-0.2,0.8-0.3,1.6-0.3,2.8c0.8-2,1.6-3,3.3-3.6
C217.8,930.5,218.5,930.3,219.2,930.1z"/>
<path fill="#444345" d="M227,969.3h0.9v-11.9c0-1.1,0-1.6,0-1.6H227h-1.3h-15h-1.3h-11h-4v2.2v11.3h4h2.7v-8
c0,0,0.2,0.3,1.1,0.3h5.2c0,0,0.5-1.1,0.5-0.2v7.9h1.5h1.3h15L227,969.3L227,969.3z M222.2,965.5c0,0.2,0.7,0.9,0.5,0.9h-5.7
c-0.2,0-0.6-0.8-0.6-0.9v-5.7c0-0.2,0.4-0.1,0.6-0.1h5.7c0.2,0-0.5-0.1-0.5,0.1V965.5z"/>
<path fill="#444345" d="M143.1,1056.3c0-0.6-0.5-0.9-1.1-0.9h-13.4c-0.6,0-1.1,0.4-1.1,0.9c0,0.6,0.5,0.9,1.1,0.9h13.4
C142.7,1057.3,143.1,1056.9,143.1,1056.3z"/>
<rect x="131.4" y="1052.5" fill="#444345" width="9.7" height="2.9"/>
<path fill="#444345" d="M117.8,828.2c-4.6,0.8-7.9,4.6-8.2,9.1l8.7-0.5L117.8,828.2z"/>
<path fill="#444345" d="M119.7,839.3l-9.9,0.5c0.9,4.8,5.2,8.4,10.3,8.1c5.5-0.3,9.7-4.9,9.4-10.4c-0.3-5-4.2-9-9.1-9.4l0.5,9.9
C120.9,838.7,120.3,839.2,119.7,839.3z"/>
<path fill="#444345" d="M78.2,866c0.4,0,0.9-0.6,1.3-0.7s0.9-0.6,1.1-0.8l5.5-3.9c0.3-0.2,0.5-0.6,0.5-0.9
c0-0.3-0.2-0.6-0.5-0.8l-5.5-3.8c-0.3-0.2-0.8-0.9-1.1-1.1c-0.5-0.1-0.9-0.7-1.3-0.7H62.5l1.8,12.6H78.2L78.2,866z"/>
<path fill="#444345" d="M41,865.1l5.5,3.8c0.3,0.2,0.8,0.5,1.1,0.7c0.5,0.1,0.9,0.4,1.3,0.4h8.1V890c0,0.5,0.6,0.2,1.1,0.2h2
c0.5,0,0.7,0.3,0.7-0.2v-39.7c0-0.5-0.2-1.6-0.7-1.6h-2c-0.5,0-1.1,1.1-1.1,1.6v9h-8c-0.4,0-0.9,0-1.3,0.1s-0.9,0.3-1.1,0.5
l-5.5,3.8c-0.3,0.2-0.5,0.5-0.5,0.8C40.6,864.7,40.8,864.9,41,865.1z"/>
<path fill="#444345" d="M72.4,874.2v31.6c0,2.2,2.4,4.6,4.6,4.6h15.4c2.2,0,4.2-2.4,4.2-4.6v-31.6c0-2.2-2-3.4-4.2-3.4H77
C74.8,870.8,72.4,872,72.4,874.2z M84.7,908.2c-1.5,0-2.8-0.9-2.8-2s1.3-2,2.8-2s2.8,0.9,2.8,2
C87.5,907.2,86.3,908.2,84.7,908.2z M93.7,875.7v26.1H76.3v-26.1H93.7z"/>
<path fill="#444345" d="M162,850.1c0,13.2,13.8,30.4,13.8,30.4s13.8-17.2,13.8-30.4c0-7.7-6.2-13.8-13.8-13.8
C168.2,836.1,162,842.3,162,850.1z M175.8,842.7c4.2,0,7.5,3.4,7.5,7.5c0,4.2-3.4,7.5-7.5,7.5c-4.2,0-7.5-3.4-7.5-7.5
C168.3,846.1,171.8,842.7,175.8,842.7z"/>
<path fill="#444345" d="M88.9,887.4c0-2.4-1.8-4.2-4.2-4.2s-4.2,1.8-4.2,4.2c0,4,4.2,9.1,4.2,9.1S88.9,891.4,88.9,887.4z
M82.4,887.6c0-1.3,0.9-2.2,2.2-2.2c1.3,0,2.2,0.9,2.2,2.2c0,1.3-0.9,2.2-2.2,2.2C83.5,889.8,82.4,888.8,82.4,887.6z"/>
<path fill="#444345" d="M177.1,885.5l-2.4,2.1l-2.4-2.1c-3.4-3.1-9-3.1-12.4,0c-3.9,3.6-3.9,9.3,0,12.8l14.7,13.5l14.7-13.5
c3.9-3.6,3.9-9.3,0-12.8C186.1,882.4,180.4,882.4,177.1,885.5z"/>
<path fill="#444345" d="M237.1,987.3l-3.3,2.8c-0.3,0.2-0.3,0.7-0.1,0.9l18.9,21.4c0.4,0.5,1.1,0.6,1.7,0.1l2.2-1.8
c0.5-0.5,0.6-1.3,0.1-1.7l-18.7-21.6C237.8,986.9,237.4,986.9,237.1,987.3z"/>
<path fill="#444345" d="M236.1,973.1c-2.9,0.3-6.6,3-8.4,4.2c-2.4,1.6-3.3,2.6-3.5,2.7c-0.7,0.6-0.1,1.9-1.3,3.1
c-1.3,1.1-2.1,0.3-2.9,0.9c-0.4,0.3-1.5,1.1-1.7,1.3c-0.3,0.3-0.4,0.7-0.1,1.1c0,0,2.9,3.2,3.1,3.5c0.2,0.3,0.9,0.5,1.3,0.2
c0.4-0.4,1.5-1.3,1.6-1.5c0.2-0.2-0.1-1.9,0.8-2.7c2.1-1.6,3.9-0.5,6.2,2.2c0.3,0.3,0.7-0.1,0.9-0.2c0.2-0.2,3.3-3,3.5-3.1
c0.2-0.1,0.3-0.4,0.1-0.7c-0.2-0.3-1.1-1.5-1.6-2.1c-4.2-5.4,11.2-9,8.9-9.1C241.6,973,236.7,973,236.1,973.1z"/>
<path fill="#444345" d="M224.1,1010.9l2.1,2.1c0.5,0.5,1.3,0.3,1.7-0.2l11.1-10.9l-3.4-3.9l-11.6,11.2
C223.7,1009.6,223.7,1010.4,224.1,1010.9z"/>
<path fill="#444345" d="M247.9,985.9c-0.2,0.3-0.4,0.6-0.7,0.9l-3.1,3.2l3.1,3.6l3.8-3.6c0.2-0.2,0.6-0.5,0.9-0.7
c0.1,0,0.1,0,0.2-0.1c0.3-0.1,0.6,0,0.9,0.2c0.7,0.5,1.3,0.9,1.9,1.5c0.5,0.4,0.9,0.4,1.3-0.1c0.6-0.7,1.1-1.3,1.7-1.9
c0.9-1.1,1.9-2.1,2.9-3.2c1.6-1.7,2.4-3.7,2.4-5.8c0-0.8,0-1.5-0.2-2.4c-0.3-2-1.3-3-3.3-3.3c-0.5-0.1-1.1-0.2-1.5-0.1
c-0.6,0-1.3,0-1.8,0.1c-1.5,0.1-3,0.5-4.2,1.6c-0.9,0.9-1.9,1.8-2.9,2.7c-1.1,1.1-2.2,2-3.3,3.1c-0.3,0.3-0.4,0.6,0,0.9
c0.7,0.7,1.3,1.5,1.9,2.1c0.3,0.3,0.4,0.5,0.2,0.9C248,985.6,247.9,985.6,247.9,985.9z M250.3,985.4l4.7-4.4
c0.1-0.1,0.4-0.1,0.5,0c0.1,0.1,0.1,0.3,0,0.5l-4.2,5c-0.1,0.1-0.2-0.7-0.3,0.3l0,0c-0.1,0-0.2-0.2-0.2-0.2l-0.6-0.6
c-0.1-0.1-0.1-0.2-0.1-0.3C250.2,985.6,250.3,985.4,250.3,985.4z"/>
<path fill="#444345" d="M237.6,934c0,0.8-0.1,1.5,0.6,1.5h10.1v2.5c0,0.6-0.4,0.4,0.2,0.4h4c0.6,0,0.7,0.2,0.7-0.4v-2.5h9.5
c0.8,0,1.1-0.9,1.1-1.5v-5.2h-26.1L237.6,934L237.6,934z"/>
<path fill="#444345" d="M251.2,948.8V947c0-0.3-0.2-0.6-0.5-0.6s-0.5,0.3-0.5,0.6v1.7c-2.9,0.3-4.8,2.5-4.8,5.1
c0,2.9,2.2,5.2,5.1,5.2c2.9,0,5.2-2.4,5.2-5.2C255.7,951.3,254.1,949.1,251.2,948.8z"/>
<path fill="#444345" d="M261.5,939.4h-22c-1.1,0-2,1.1-2.2,2.2l-2.6,22.8c-0.1,0.6,0.1,1.5,0.6,2c0.4,0.5,1.1,0.9,1.6,0.9h27.3
c0.7,0,1.3-0.5,1.6-0.9c0.4-0.5,0.6-1.1,0.6-1.8l-2.6-23C263.5,940.6,262.5,939.4,261.5,939.4z M250.4,963c-5,0-9.1-4-9.1-9.1
s4-9.1,9.1-9.1c5,0,9.1,4,9.1,9.1S255.4,963,250.4,963z"/>
<path fill="#444345" d="M155,1069.4v0.4h11.3c0.6,0,1.1-0.9,1.1-1.5c0-0.6-0.5-1.5-1.1-1.5H155h-1.3h-2.4c-3,0-5.4,1.9-6.2,4.8
h-7.9v2.9h7.9c0.8,2.9,3.2,5.8,6.2,5.8h2.4l0,0h12.6c0.6,0,1.1-0.9,1.1-1.5s-0.5-1.5-1.1-1.5H155c-0.4,0-0.7-0.1-0.7-0.5
c0-0.4,0.3-0.5,0.7-0.5h11.3c0.6,0,1.1-0.4,1.1-0.9c0-0.6-0.5-0.9-1.1-0.9H155l0,0c-0.4,0-0.7-0.6-0.7-0.9
c0-0.4,0.3-0.9,0.7-0.9h11.3c0.6,0,1.1-0.4,1.1-0.9c0-0.6-0.5-0.9-1.1-0.9h-10.7v-0.4c-0.9,0-0.9-0.1-0.9-0.5
C154.6,1069.5,154.6,1069.4,155,1069.4z"/>
<path fill="#444345" d="M105.5,1076.6h27.3c1.3,0,3.3-0.7,3.3-1.6v-3.3c0-0.9-2.1-1.8-3.3-1.8h-27.3c-1.8,0-3.3,1.5-3.3,3.4
C102.4,1075,103.9,1076.6,105.5,1076.6z"/>
<path fill="#444345" d="M165.8,1086.7c0-1.8-1.5-3.4-3.4-3.4h-28.2c-1.3,0-1.9,0.6-2.9,1.6v3.4c0.9,0.9,1.6,1.7,2.9,1.7h28.2
C164.3,1090.1,165.8,1088.6,165.8,1086.7z"/>
<path fill="#444345" d="M131.4,1088.2v-2.9h-4h-5.8H96.6c0,0-2.5,1.1,1.3,2.8c5.7,2.4,10.3,2.8,14.7,3.4
c1.5,0.2,6.6,1.3,9.9-1.5c1.1-1.1,2.4-1.8,3.4-1.8H131.4z"/>
<path fill="#444345" d="M169.3,1059.4l8.2-0.8c-0.1-0.9-0.3-1.8-0.3-2.7c-0.1-2.3-0.2-4.6-0.3-7c-0.1-1.7,0-3.5,0-5.2
c0.1-2,0.2-4.2,0.3-6.2c0.1-1.6,0.2-3.4,0.4-5c0.2-2,0.5-4,0.8-6c0.2-1.5,0.5-3.2,0.7-4.7c0.1-0.5-0.2-0.9-0.7-0.9
c-0.3-0.1-0.6-0.1-0.9-0.1c-4.2,0-8.5,0-12.4,0c0,0,0,0,0,0.1c-0.9,0-1.9,0-2.9,0c-0.6,0-0.7,0-0.7,0.6
c-0.1,0.8-0.2,1.5-0.2,2.2c0,1.5,0,3.1,0.1,4.6c0,1.5,0.1,3.1,0.2,4.6c0.1,1.5,0.2,3.1,0.3,4.6c0.1,1.5,0.2,2.8,0.3,4.2
c0.1,1.9,0.3,3.9,0.5,5.8c0.1,1.6,0.3,3.2,0.4,4.8c0.2,1.5,0.3,3.2,0.5,4.8c0.1,0.8,0.2,1.5,0.3,2.2c0,0.2,0.1,0.4,0.4,0.4
c0.5,0,0.9-0.1,1.5-0.1c0.8-0.1,1.6-0.1,2.4-0.2C168.6,1059.5,168.9,1059.4,169.3,1059.4z M174.8,1023.7c0.7,0,1.1,0.4,1.1,1.1
c0,0.6-0.5,1.1-1.1,1.1c-0.6,0-1.1-0.5-1.1-1.1C173.7,1024.1,174.2,1023.7,174.8,1023.7z"/>
<path fill="#444345" d="M175.7,1082.3c-0.5,1.5,0.9,3.3,2.6,3.3c1.3,0,2.5-0.9,2.9-2.4c0.3-1.3,0.3-2.5,0.1-3.8
c-0.5-2.6-1.1-5.2-1.5-7.7c-0.4-2-0.9-4-1.3-6.1c-0.3-1.5-0.6-3.1-0.7-4.6v-0.1l-5.2,0.5c0.2,0.9,0.4,2,0.6,3
c0.6,3.2,1.1,6.3,1.8,9.4c0.5,1.9,0.9,4,1.3,5.9c0.1,0.4,0,0.9-0.1,1.3C176,1081.3,175.8,1081.8,175.7,1082.3z"/>
<path fill="#444345" d="M85.5,1019.1c1.3,0.1,2.6-0.1,4-0.2c0.1,0,0.1-0.1,0.1-0.2c0.6-1.1-0.1-2.9-1.3-3.4c0-1.1,0.2-2.4,0-3.6
c-0.2-1.5-0.2-3.5-1.1-4.6c-2-2.9-5-6.3-7.5-8.9c-1.7-1.9-3.6-2.2-6.2-2.2c-10.1-0.1-20.1-0.2-30.1-0.3c-3.2,0-4.4,1.3-4.4,4.4
c-0.1,4.9-0.1,9.9-0.2,15c-1.1-0.1-1.3,0.5-1.3,1.3c0,0.4,0,0.8,0,1.3c0,0.7,0.3,1.1,0.9,1.1c0.9,0,1.7,0,2.7,0
c0.9,0.1,1.3-0.3,1.5-1.1c0.9-2.8,3.1-4.4,6-4.4c2.9,0,5.1,1.6,6,4.6c0.3,0.9,0.8,1.1,1.6,1.1c4.8,0,9.7,0.1,14.6,0.2
c0.9,0,1.5-0.4,1.7-1.3c0.9-2.7,3.2-4.4,6-4.4c2.8,0,4.9,1.6,5.9,4.4C84.6,1018.3,85.1,1019.1,85.5,1019.1z M82.8,1007
L82.8,1007l-9.5,0.4c-0.7,0-1.3-0.4-1.3-1.1l0.1-6.8c0-0.7,0.6-1.3,1.3-1.3l3,0.1c0.1,0,0.3,0,0.4,0.1c0.4,0.1,0.6,0.2,6.8,7.3
c0.2,0.2,0.4,0.1,0.4,0.5C84.1,1006.9,83.5,1007,82.8,1007z"/>
<path fill="#444345" d="M48.8,1014.1c-3,0-5.5,2.4-5.5,5.4s2.4,5.5,5.4,5.5s5.5-2.4,5.5-5.4
C54.2,1016.6,51.8,1014.2,48.8,1014.1z"/>
<path fill="#444345" d="M78.6,1014.5c-3,0-5.5,2.4-5.5,5.4c0,3,2.4,5.5,5.4,5.5s5.5-2.4,5.5-5.4
C84.1,1017,81.6,1014.5,78.6,1014.5z"/>
<path fill="#444345" d="M247.8,1026.3c0-0.9-2.4-1.7-10.3-0.7c0,0,1.9-1.6,2.7-1.9c0.8-0.3,4.2-2.4,3.6-5.1
c-0.6-2.7-1.6-1.1-2.9,1.1c-1.1,2.1-2.7,4-4.9,5.3c0,0-0.7-4.2-3.1-4.4c-0.8,0-4,0-7.7,0.4l-0.7,0.1c-0.4,0-0.9,0.1-1.3,0.2
c0,0.1-0.2,0.1-0.2,0.2v4.6c0,0.4-0.1,0.7-0.5,0.7s-0.5-0.3-0.5-0.7v-4.6l0,0c-0.9,0.1-1.3,0.2-1.8,0.3c0,0-7.1,1.1-11.8,2.5
h-0.1c-0.1,0-0.2,0.1-0.3,0.1c-0.3,0.1-0.6,0.2-0.9,0.3c-0.2,0.1-0.4,0.1-0.6,0.2c-0.1,0-0.1,0.1-0.2,0.1
c-0.1,0-0.2,0.1-0.3,0.1l0,0c-0.9,0.4-1.6,0.6-2.4,1.1c0,0-0.8,0.4-0.3,1.5c0.3,0.7,4.2,2.4,12,3.6v-3.5c0-0.4,0.1-0.7,0.5-0.7
s0.5,0.3,0.5,0.7v3.7c0.9,0.1,1.3,0.1,1.7,0.2l0.9,0.1c2.6,0.3,5.1,0.5,9.9,0.6v-2.9c0-0.4,0.1-0.7,0.5-0.7s0.5,0.3,0.5,0.7v2.9
h0.8c1.1,0,1.6,0,2.6-0.1c0,0,2.5,0.2,2.7-4.4c0,0,4.4-0.8,4,4.2c-0.2,3.7,3,3.8,3,1.1c0-2.5-0.7-5.4-5.5-6.4c0,0,3.9,0.5,7,1.1
C247.5,1028.4,247.8,1027.3,247.8,1026.3z"/>
</g>
<g>
<polygon fill="#444345" points="678.1,1020.6 677.4,1020.6 650.5,985.8 642.4,985.8 642.4,1038 654,1038 654,1003.2
653.4,1003.2 680.4,1038 687.7,1038 687.7,987.7 678.1,987.7 "/>
<polygon fill="#444345" points="706.1,1038 731.3,1038 731.3,1028.3 714.8,1028.3 714.8,1015.7 731.3,1015.7 731.3,1007
714.8,1007 714.8,994.4 731.3,994.4 731.3,987.7 706.1,987.7 "/>
<polygon fill="#444345" points="744.8,994.4 755.4,994.4 755.4,1038 764.1,1038 764.1,994.4 776.6,994.4 776.6,987.7
744.8,987.7 "/>
<polygon fill="#444345" points="832.4,1022.5 832.3,1022.5 821.6,985.8 815.8,985.8 805.5,1022.5 805.5,1022.5 795.1,987.7
784.6,987.7 800.9,1038 808.2,1038 817.9,1007 818.1,1007 828.2,1038 835.6,1038 853,987.7 842.4,987.7 "/>
<path fill="#444345" d="M888.7,985.4c-15.2,0-25.3,11.7-25.3,26.9c0,15,9.7,27.1,25.3,27.1c15.6,0,25.3-12,25.3-27.1
C914.1,997.1,904,985.4,888.7,985.4z M888.7,1029.6c-11.1,0-15-9.7-15-17.6c0-8.3,5.6-16.6,15-16.6c9.5,0,15,8.4,15,16.6
C903.7,1019.8,899.8,1029.6,888.7,1029.6z"/>
<path fill="#444345" d="M959.8,1002.7c0-10.9-7.1-15-17.1-15h-14.4v50.2h11.6v-20.3h-0.7l12.5,20.3h12.1l-14.5-21.4
C956.3,1015.5,959.8,1009.1,959.8,1002.7z M940.4,1010.9h-0.5v-16.5h0.6c5.3,0,9.3,1.7,9.3,8
C949.9,1008.7,945.9,1010.9,940.4,1010.9z"/>
<polygon fill="#444345" points="1015.5,987.7 1003.2,987.7 987.4,1008 987.2,1008 987.2,987.7 976.6,987.7 976.6,1038
987.2,1038 987.2,1013.8 987.4,1013.8 1003.7,1038 1016.6,1038 996.1,1010.9 "/>
<path fill="#444345" d="M360.6,873.3c-25,0-41.6,19.1-41.6,44c0,24.7,15.9,44.3,41.6,44.3c25.6,0,41.6-19.6,41.6-44.3
C402.1,892.4,385.6,873.3,360.6,873.3z M360.6,945.5c-18.1,0-24.6-15.9-24.6-28.8c0-13.6,9.2-27.3,24.6-27.3
s24.6,13.7,24.6,27.3C385.2,929.6,378.8,945.5,360.6,945.5z"/>
<path fill="#444345" d="M443.5,876.6h-22.4v83.1h15.4v-31.9h9.3c17.2,0,26.9-8,26.9-25.8C472.6,883,461.1,876.6,443.5,876.6z
M441,915.3h-4.4v-26.1h4c9.2,0,15.4,1.9,15.4,12.8C456,912.9,450.7,915.3,441,915.3z"/>
<polygon fill="#444345" points="491.7,959.7 535.1,959.7 535.1,945.2 508.1,945.2 508.1,923 533.3,923 533.3,908.5 508.1,908.5
508.1,889.2 535.1,889.2 535.1,876.6 491.7,876.6 "/>
<polygon fill="#444345" points="612.4,932.7 612.7,932.7 568.6,872.8 556.4,872.8 556.4,959.7 573.8,959.7 573.8,901.7
573.3,901.7 617.6,961.6 629.8,961.6 629.8,876.6 612.4,876.6 "/>
<polygon fill="#444345" points="695.5,959.7 711.9,959.7 711.9,923 736.1,923 736.1,908.5 711.9,908.5 711.9,889.2 738,889.2
738,876.6 695.5,876.6 "/>
<path fill="#444345" d="M795.8,961.6c25.6,0,41.6-19.6,41.6-44.3c0-24.9-16.5-44-41.6-44s-41.6,19.1-41.6,44
C754.4,942,770.3,961.6,795.8,961.6z M795.8,889.4c15.4,0,24.6,13.7,24.6,27.3c0,13-6.4,28.8-24.6,28.8
c-18.1,0-24.6-15.9-24.6-28.8C771.3,903.1,780.4,889.4,795.8,889.4z"/>
<path fill="#444345" d="M894.1,873.3c-25,0-41.6,19.1-41.6,44c0,24.7,15.9,44.3,41.6,44.3c25.6,0,41.6-19.6,41.6-44.3
C935.6,892.4,919.3,873.3,894.1,873.3z M894.1,945.5c-18.1,0-24.6-15.9-24.6-28.8c0-13.6,9.2-27.3,24.6-27.3
c15.4,0,24.6,13.7,24.6,27.3C918.7,929.6,912.3,945.5,894.1,945.5z"/>
<path fill="#444345" d="M1018.7,918.2c0-24-16.2-41.6-40.6-41.6h-21.8v83.1h21.8C1002,959.7,1018.7,941.8,1018.7,918.2z
M971.8,945.2v-56.1h2.1c18.5,0,27.9,9.7,27.9,28c0,16.6-7.9,28-27.9,28L971.8,945.2L971.8,945.2z"/>
</g>
</g>
</g>
</g>
<g id="OFN_beta__x28_outlined_x29_">
<g>
<g>
<path fill="#FFFFFF" d="M787.9,977.7l0.2-5.2c0-0.4,0-0.5,0-0.6c-0.1-0.1-0.2-0.3-0.4-0.7c-0.1-0.3-0.2-0.6-0.2-0.7v0
c0.1,0,0.3-0.1,0.9-0.1c0.5,0,1.1,0,1.6,0c0.5,0,1,0.1,1.4,0.1c0.4,0.1,0.9,0.2,1.2,0.3c0.4,0.1,0.7,0.4,1,0.6
c0.2,0.3,0.3,0.6,0.3,0.9s-0.1,0.6-0.2,0.9c-0.1,0.3-0.3,0.5-0.5,0.6c-0.3,0.3-0.6,0.4-1,0.6c0,0,0,0,0,0s0.1,0,0.2,0.1
s0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.4,0.2c0.2,0.1,0.3,0.2,0.4,0.3s0.2,0.2,0.4,0.4c0.2,0.3,0.4,0.8,0.3,1.3c0,0.5-0.2,1-0.5,1.5
c-0.3,0.4-0.8,0.8-1.4,1.1c-1.1,0.5-2.4,0.7-3.8,0.6l-0.7-0.1c0,0,0-0.4,0-1C787.9,978.6,787.9,978.2,787.9,977.7z M789.8,978.8
c0.6,0,1.2-0.1,1.7-0.5c0.5-0.3,0.9-0.8,0.9-1.2c0-0.3-0.1-0.6-0.4-0.9c-0.4-0.4-1.1-0.6-1.9-0.6c-0.2,0-0.3,0-0.3,0
s0,0.4-0.1,1.3C789.6,977.7,789.6,978.3,789.8,978.8C789.7,978.8,789.7,978.8,789.8,978.8z M791,973.9c0.2-0.1,0.4-0.2,0.6-0.4
c0.2-0.2,0.3-0.4,0.3-0.6c0-0.2,0-0.4-0.2-0.5s-0.3-0.2-0.5-0.3c-0.2-0.1-0.4-0.1-0.5-0.2c-0.2,0-0.3-0.1-0.5-0.1s-0.2,0-0.3,0
c0,0,0,0.4-0.1,1.1c0,0.7-0.1,1.1-0.1,1.2c0,0,0.1,0,0.1,0c0.1,0,0.2,0,0.4-0.1C790.5,974.1,790.8,974.1,791,973.9z"/>
<path fill="#FFFFFF" d="M796.1,974.6l0.1-1.5c0-0.4,0-0.6,0-0.6c-0.1-0.1-0.2-0.3-0.4-0.8c-0.1-0.4-0.2-0.6-0.2-0.8
c0.1-0.1,1.7-0.1,4.8,0c0.8,0,1.2,0.1,1.2,0.1c0,0.2-0.1,0.4-0.1,0.6c-0.1,0.2-0.2,0.4-0.3,0.5s-0.2,0.2-0.2,0.2c0,0-0.2,0-0.5,0
c-0.3,0-0.8,0-1.4,0c-0.6,0-0.9,0.1-1,0.1c-0.1,0.1-0.1,0.5-0.1,1.5v0.6c0.4,0,0.9,0,1.6,0c0.7,0,1.1,0.1,1.1,0.1
c0,0.3-0.1,0.7-0.4,1.1c-0.1,0.1-0.1,0.2-0.2,0.2c-0.2,0-0.6,0-1.2,0c-0.6,0-0.9,0.1-1,0.1c0,0,0,0.4-0.1,1.2c0,0.8,0,1.2,0,1.2
c0.1,0.1,0.9,0.2,2.4,0.3c0.6,0,1,0,1.2,0s0.3,0,0.3,0c0,0.2-0.1,0.5-0.2,0.8c-0.2,0.3-0.3,0.5-0.5,0.7c-0.1,0.1-0.9,0.1-2.5,0
c-1.5-0.1-2.4-0.1-2.4-0.2c-0.1,0-0.1-0.5,0-1.3c0-0.9,0.1-1.7,0.1-2.6c-0.2-0.1-0.3-0.4-0.4-0.7s-0.2-0.6-0.2-0.8
C795.3,974.6,795.6,974.6,796.1,974.6z"/>
<path fill="#FFFFFF" d="M803.8,979.1l0.3-5.7c0-0.5,0-0.7,0-0.7c0,0-0.1,0-0.2,0c-0.3,0-0.8,0-1.5,0.1l-0.4,0l0-0.3
c0-0.4,0.1-0.8,0.3-1.1l0.1-0.2c0.7,0,1.5,0,2.4,0c0.9,0,1.7,0,2.4,0c0.7,0,1.1,0.1,1.1,0.1c0,0.3,0,0.6-0.1,1
c-0.1,0.4-0.1,0.6-0.2,0.6c-0.2-0.1-0.6-0.1-1.2-0.1c-0.6,0-0.9,0-0.9,0c-0.1,0.1-0.1,1.3-0.2,3.6c-0.1,2.3,0,3.7,0.3,4.2l0,0
c0,0.1-0.2,0.1-0.5,0.2c-0.3,0.1-0.6,0.1-0.9,0.1c-0.3,0-0.5-0.1-0.7-0.1C803.8,980.6,803.8,980.1,803.8,979.1z"/>
<path fill="#FFFFFF" d="M812.2,977.5c-0.1,0-0.5,0-1.2-0.1c-0.6,0-1,0-1.2,0c-0.5,1.6-0.9,2.7-1,3.4c0,0-0.1,0-0.3,0
c-0.2,0-0.4,0-0.7-0.1c-0.5-0.1-0.8-0.2-0.8-0.2c0-0.4,0.4-1.4,1.1-3.1c-0.1-0.1-0.2-0.3-0.4-0.6c-0.1-0.3-0.2-0.6-0.2-0.8
c0,0,0.4,0,1.1,0c0.8-2.2,1.3-3.3,1.4-3.4c0,0,0.2-0.1,0.5-0.1s0.5-0.1,0.5-0.1l0-0.2c0-0.1,0-0.3,0-0.4c0-0.1,0-0.2,0-0.3
c0,0,0.1-0.1,0.2-0.2c0.4-0.2,0.9-0.3,1.4-0.3c0.1,0.5,0.2,1.2,0.3,2.1c0.1,0.9,0.4,2.1,0.8,3.9c0.4,1.7,0.8,2.9,1.1,3.6l0.1,0.2
c0,0-0.1,0.1-0.3,0.2c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.5,0.1-0.8,0.1c-0.1,0-0.3-0.5-0.5-1.6S812.2,978,812.2,977.5z
M811.9,976.1c-0.3-1.3-0.4-2.1-0.4-2.2c0-0.2,0-0.2-0.1-0.2s0,0-0.1,0.1c-0.1,0.1-0.2,0.5-0.5,1.1c-0.2,0.6-0.4,1-0.5,1.2
C811.3,976,811.9,976,811.9,976.1z"/>
</g>
<g>
<path fill="#FFFFFF" d="M791.1,1003.2c-0.1-0.1-0.5-1.3-1.3-3.4l-0.4-1.1c0,0,0-0.1,0-0.1c-0.1,0.1-0.5,0.9-1.2,2.1
c-0.6,1.3-1,2-1.1,2.1c-0.7,0-1.1-0.1-1.2-0.4c0.1-0.3,0.4-1,0.9-1.9c0.5-0.9,1-1.8,1.4-2.5l0.7-1.2c0.1-0.1,0.3-0.1,0.6-0.2h0.1
l0.5,0.1c1,3.1,1.7,5.1,2,6.1C791.9,1003,791.5,1003.2,791.1,1003.2L791.1,1003.2z"/>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M344.7,1004.5v-10.6c0-1.2-1.1-2-2.2-2h-17c-1.2,0-2.4,0.8-2.4,2v10.6c0,1.2,1.2,2.1,2.4,2.1h17
C343.6,1006.6,344.7,1005.6,344.7,1004.5z M325.5,993.8h17.2v10.8h-17.2V993.8z"/>
<path fill="#FFFFFF" d="M365.6,927.2c-4.3,8.5-6.1,9.6-6.1,13.1c0,3.4,2.8,6.2,6.3,6.2c3.4,0,6.3-2.8,6.3-6.2
c0-3.6-1.6-5.6-6.1-13.1C365.8,927,365.7,927,365.6,927.2z M363.9,940.2c0,1.1-0.7,1.5-1.3,1.5c-0.8,0-1.3-0.6-1.3-1.3
c0-2.5,1.2-4.1,2.3-5.5c0.3-0.4,0.6-0.9,0.9-1.3C364.5,933.5,363.9,938.1,363.9,940.2z"/>
<path fill="#FFFFFF" d="M312.1,996.8c-1.3-0.8-3.8-2.4-3.8-2.4s0,0,0,3.2s5.4,4.4,5.4,4.4C313.6,1000.5,313.5,997.6,312.1,996.8
z"/>
<path fill="#FFFFFF" d="M312.1,1002.5c-1.3-0.8-3.8-2.4-3.8-2.4s0,0,0,3.2s5.4,4.4,5.4,4.4
C313.6,1006.3,313.5,1003.4,312.1,1002.5z"/>
<path fill="#FFFFFF" d="M313.7,1013.6c-0.1-1.5-0.2-4.4-1.5-5.3c-1.3-0.8-3.9-2.4-3.9-2.4s0,0,0,3.2S313.7,1013.6,313.7,1013.6z
"/>
<path fill="#FFFFFF" d="M315.5,1002c0,0,5.6-1.2,5.6-4.4c0-3.2,0-3.2,0-3.2s-3.1,1.5-4.4,2.4
C315.3,997.6,315.6,1000.5,315.5,1002z"/>
<path fill="#FFFFFF" d="M315.5,1007.8c0,0,5.6-1.2,5.6-4.4c0-3.2,0-3.2,0-3.2s-3.1,1.5-4.4,2.4
C315.3,1003.4,315.6,1006.3,315.5,1007.8z"/>
<path fill="#FFFFFF" d="M321.1,1009.2c0-3.2,0-3.2,0-3.2s-3.1,1.5-4.4,2.4c-1.3,0.8-1.2,3.7-1.3,5.3
C315.4,1013.6,321.1,1012.4,321.1,1009.2z"/>
<path fill="#FFFFFF" d="M316.5,993.6c0-1.5-0.3-3.4-2.1-5.2c0,0-2,2.5-2,4.9c0,1.6,0.9,2.9,2,4.3
C314.4,997.5,316.5,995.1,316.5,993.6z"/>
<path fill="#FFFFFF" d="M307.9,904.6c0.4,0,0.8,0,1.1-0.2c0.8,0.8,1.9,1.1,2.9,1.1c1.1,0,2.2-0.4,2.9-1.1
c0.3,0.1,0.8,0.2,1.1,0.2c1.8,0,3.2-1.4,3.2-3.2s-1.4-3.2-3.2-3.2c-0.1,0-0.3,0-0.4,0c-0.8-1.2-2.2-1.9-3.6-1.9
c-1.5,0-2.8,0.7-3.6,1.9c-0.1,0-0.3,0-0.4,0c-1.8,0-3.2,1.4-3.2,3.2C304.8,903.2,306.2,904.6,307.9,904.6z"/>
<path fill="#FFFFFF" d="M312.9,910.1c0,0.5,0.4,0.9,0.9,0.9c0.5,0,0.9-0.4,0.9-0.9s-0.9-1.8-0.9-1.8S312.9,909.5,312.9,910.1z"
/>
<path fill="#FFFFFF" d="M315.5,908.2c0.5,0,0.9-0.4,0.9-0.9s-0.9-1.8-0.9-1.8s-0.9,1.3-0.9,1.8
C314.5,907.8,315,908.2,315.5,908.2z"/>
<path fill="#FFFFFF" d="M311.8,908.7c0-0.5-0.9-1.8-0.9-1.8s-0.9,1.3-0.9,1.8c0,0.5,0.4,0.9,0.9,0.9
C311.4,909.6,311.8,909.2,311.8,908.7z"/>
<path fill="#FFFFFF" d="M269.5,985.7c0,3.3,2.7,5.9,5.9,5.9c3.3,0,5.9-2.7,5.9-5.9c0-3.3-2.7-5.9-5.9-5.9
S269.5,982.4,269.5,985.7z M279.8,985.7c0,2.5-2,4.5-4.4,4.5c-2.5,0-4.5-2-4.5-4.5s2-4.5,4.5-4.5
C277.9,981.2,279.8,983.3,279.8,985.7z"/>
<polygon fill="#FFFFFF" points="273.2,987.9 276.2,986.5 277.7,983.5 274.7,985 "/>
<path fill="#FFFFFF" d="M323,912.3c0,0,0-0.1,0-0.1L323,912.3L323,912.3z"/>
<path fill="#FFFFFF" d="M321.3,917.3c3.6-1,7.3,1.6,7.8,5.4c0,0.1,0,0.3,0,0.5c0.1,0,0.3,0,0.4,0c3-0.1,6.2-0.1,9.2-0.2
c-1.3,0.3-2.2,1.5-2.2,2.9c0,1.7,1.4,3,3,3s3-1.4,3-3c0-1.5-1.1-2.8-2.6-3c2.3-0.1,1.8-0.1,2.2-2.1c0.2-1,0.3-2,0.4-2.9
c0.1-0.9-0.1-1.1-1.1-1.2c-1.4,0-2.6-0.1-4-0.1c0,0-0.1,0-0.1-0.1c0-1,0.2-3.5,0.2-3.5s-0.5-0.4-1,0c0,1.2,0,2.3,0,3.6
c0,0-1.8,0-4.2-0.1c-0.1,0-0.5-0.2-0.6-0.5c-0.3-1-1.2-2.8-2.2-5.8c0,0-0.6-1.2-1.9-1.2c-1.1,0-6.8,0-6.8,0v7.2
c0,0-0.4,0.2-0.8,0.2C320.1,917.3,320.4,917.5,321.3,917.3z M341.3,925.8c0,0.9-0.8,1.6-1.6,1.6c-0.9,0-1.6-0.8-1.6-1.6
c0-0.9,0.8-1.6,1.6-1.6C340.6,924.2,341.3,924.9,341.3,925.8z M323,912.1v-1.4h5.6l1.8,5.4l0,0c-2.4,0-5.2,0-7.4,0.1V912.1z"/>
<path fill="#FFFFFF" d="M322.7,917.9c-3,0-5.5,2.5-5.5,5.5s2.5,5.5,5.5,5.5c3,0,5.5-2.5,5.5-5.5S325.8,917.9,322.7,917.9z
M322.7,926.5c-1.7,0-3-1.4-3-3s1.4-3,3-3c1.7,0,3,1.4,3,3S324.4,926.5,322.7,926.5z"/>
<path fill="#FFFFFF" d="M309.4,1018.2l-4-2.2c0.2-0.9,0.2-1.9,0-2.8c-0.8-2.8-4-4.5-6.8-3.7c-2.8,0.8-4.5,3.7-3.6,6.5
c0.8,2.8,4,4.5,6.8,3.7c0.9-0.3,1.8-0.8,2.4-1.4l4,2.2c0.4,0.2,0.9,0,1.1-0.3l0.5-1C310,1018.8,309.8,1018.5,309.4,1018.2z
M301.1,1017.6c-1.6,0.5-3.6-0.5-4-2.2c-0.5-1.6,0.5-3.4,2.1-3.8c1.6-0.5,3.6,0.5,4,2.2C303.7,1015.5,302.7,1017.2,301.1,1017.6
z"/>
<path fill="#FFFFFF" d="M286.6,973.9c3-3.5,1.4-5.9,0.9-6.9c-0.5-1-0.6-2.4-0.6-2.4l0.1-0.5l0.1-0.5c-0.7-0.2-1.4,0.1-1.4,0.1
c0.1,1.1-0.1,2.3-0.3,2.7c-0.2,0.5-0.8,1.4-1.1,2s-1.1,2.4-5.1,4.1c-4,1.7-9.3,0.1-9.3,0.1c-1.4-0.3-2.5,0.2-2.5,0.2l-0.3,0.5
l0,0.4l-0.1,0.2l0,0.3c3.9,6.1,12,4,12,4S283.5,977.3,286.6,973.9z"/>
<path fill="#FFFFFF" d="M374.6,1010.6c1.8,0,3.5-0.3,5.1-1c0.6-0.2,0.8-0.6,0.8-1.3c0-0.3,0-0.7,0-1c0,0,0,0,0-0.1
c0,0-0.1-0.2-0.3-0.2c-0.8,0-1-0.2-1.2-1c-0.2-0.5-0.3-1.1-0.6-1.6c2-0.5,1.7-1.9,1-3.7c-0.6,0.8-0.1,1.1-1.1,1.3
c-0.9,0.2-1.5,0.7-1.9,1.5c0,0.1-0.1,0.3-0.2,0.6c-0.1-1,0.3-1.6,1.2-2.4c-0.4-0.4-2-0.2-2.5-0.5c-1.6-1.1-8.9-2.5-13.5,1
c-0.2-0.2-0.5-0.4-0.8-0.6c1.1-0.4,1.5-1,1.3-1.9c-0.1-0.6-0.6-1-1.2-1c-1,0-1.3,0.5-1.5,2.1c-0.3-0.3-0.6-0.6-1-1
c0,0.3-0.1,0.5,0,0.8c0.1,0.5,0.5,0.8,1,0.9c0.3,0,0.5,0.2,0.7,0.5c0.1,0.2,0.2,0.4,0.4,0.6c0.5,0.5,0.5,1.1,0.5,1.8
c0,1.5,0,3,0.2,4.6c0.2,1.6,0.6,3.2,1.3,4.7c0.2,0.5,0.6,0.5,1,0.4c0.1,0,0.3-0.4,0.3-0.6c0.1-1.2,0.6-2.2,1.2-3.2
c2.1,0.6,4.2,0.8,6.4,0.6c0.1,0,0.3,0.2,0.4,0.3c0.4,0.8,0.8,1.6,1.1,2.5c0.2,0.5,0.6,0.5,1,0.4c0.1,0,0.1-0.4,0.1-0.7
c0-0.9,0-1.8,0-2.7c0.1,0,0.1,0,0.1-0.1C374.4,1010.6,374.5,1010.6,374.6,1010.6z M360.3,1000.6c-0.2-0.6-0.1-1,0.3-1
c0.2,0,0.5,0,0.6,0.3C361.3,1000.3,361,1000.6,360.3,1000.6z"/>
<path fill="#FFFFFF" d="M282.1,941.8c3.4-0.3,4.5-2,5.5-5.3c0.6-2,0.7-3.9,0.8-6c-0.1-1.7-0.1-3.4-0.3-5.1
c-0.3-2.4-0.9-4.7-2.1-6.8c-0.9-1.7-1.1-2.7-3-3c-2-0.3-4.3,0.5-5.2,2.8c-0.2,0.6-0.5,1.2-0.7,1.9c-0.3,1.4-1.2,2.6-2.3,3.6
c-2.9,2.7-3.9,6.2-3.2,10C272.4,938.9,277,942.2,282.1,941.8z M275.8,926c1.8-1.7,3-3.5,3.6-5.8c0.1-0.5,0.3-0.9,0.6-1.3
c0.7-1.2,2.2-1.4,3.1-0.4c0.4,0.4,0.7,1,0.9,1.5c1.4,3.4,2,7,2.1,10.1c0,2.4-0.1,4.3-0.8,6.1c-0.9,2.6-2.7,3.8-5.1,3.6
c-2.1-0.2-3.7-1.2-5-2.8C272.7,933.7,272.9,928.7,275.8,926z"/>
<path fill="#FFFFFF" d="M280,938.1c1.6,0.1,2.8-0.3,3.6-1.8c1.4-2.8,1.5-5.7,0.5-8.8c-0.2-0.6-0.7-1.1-1.3-1.4
c-1.8-0.8-3.6-0.8-5.4,0c-0.8,0.4-1.6,0.9-2,1.8c-0.2,0.5-0.1,0.8,0.3,1.1c0.8,0.4,1.5,0.8,2.3,1.2c0.2,0.1,0.4,0.3,0.7,0.5
c0,0,0,0.1-0.1,0.2c-0.2,0-0.4,0-0.6-0.1c-0.9-0.2-1.8-0.5-2.7-0.8c-0.5-0.1-0.8,0-0.9,0.5c0,0.2-0.1,0.4-0.1,0.6
C274.1,934.6,276.6,937.8,280,938.1z"/>
<path fill="#FFFFFF" d="M280.6,923.8c0.5,0.1,1,0.2,1.5,0.3c1,0,1.4-0.3,1.4-1.3c0-0.7-0.1-1.4-0.3-2.1c-0.1-0.6-0.5-1-1.2-1
c-0.7,0-1.3,0.2-1.5,0.9c-0.2,0.6-0.4,1.2-0.6,1.9C279.6,923.2,279.8,923.6,280.6,923.8z"/>
<path fill="#FFFFFF" d="M294,971.9c-0.2,0-0.4,0-0.5-0.2c0,0-0.2-0.7-1-1.5c-0.2-0.2-0.4-0.3-0.6-0.5c-0.3-0.2-0.6-0.5-0.9-0.8
c0.5,4.1,2.2,7.1,4.2,7.1c2.4,0,4.4-4.3,4.4-9.6s-2-9.6-4.4-9.6c-1.6,0-2.9,1.9-3.7,4.6c0.3,0.4,0.6,0.7,1,0.9
c0.2,0.1,0.4,0.3,0.6,0.5c1,0.9,1.2,1.8,1.2,1.8c0,0,0,0,0,0.1c0,0.1-0.1,0.3-0.3,0.3c-0.2,0-0.4,0-0.5-0.2c0,0-0.2-0.7-1-1.5
c-0.2-0.2-0.4-0.3-0.6-0.5c-0.2-0.1-0.4-0.3-0.7-0.5c-0.1,0.4-0.2,0.9-0.2,1.4c0.3,1.2,0.8,1.6,1.4,2c0.2,0.1,0.4,0.3,0.6,0.5
c1,0.9,1.2,1.8,1.2,1.8c0,0,0,0,0,0.1c0,0.1-0.1,0.3-0.3,0.3c-0.2,0-0.4,0-0.5-0.2c0,0-0.2-0.7-1-1.5c-0.2-0.2-0.4-0.3-0.6-0.5
c-0.3-0.2-0.8-0.5-1-1c0,0.3,0,0.6,0,0.9c0.3,1.8,0.9,2.2,1.6,2.7c0.2,0.1,0.4,0.3,0.6,0.5c1,0.9,1.2,1.8,1.2,1.8c0,0,0,0,0,0.1
C294.3,971.7,294.2,971.9,294,971.9z"/>
<path fill="#FFFFFF" d="M365.3,917.7c0.8,0.9,1.8,1.8,3,1.9c0.9,0.1,2-0.4,2.7-0.4c1.4,0,1.1,0.3,2.7,0.3c1.5,0,4.3-3.6,5-7.2
c0.1-0.9,0-2.5-0.7-4c-0.8-1.8-3.3-2.5-4.8-2.2c-0.4,0-1.3,0.2-2,0.3c0.1-0.5,0.5-1.3,1.3-1.8c0.2-0.1,0.3-0.4,0.2-0.7
c-0.1-0.2-0.4-0.3-0.7-0.2c-1.4,0.8-1.8,2.2-1.9,2.8c-0.6-0.1-2.3-0.4-2.9-0.4c-0.9,0-1.7,0.3-2.5,0.9c-0.7,0.5-1,1.3-1.3,2.1
c-0.4,1.1-0.5,2.3-0.4,3.5C363.2,914.6,364,916.3,365.3,917.7z M368.3,908.5c0.8,0,1.4,0.6,1.4,1.3c0,0.9-0.6,1.7-1.4,1.7
c-0.6,0-1.1-0.8-1.1-1.6C367.2,909.1,367.6,908.5,368.3,908.5z"/>
<path fill="#FFFFFF" d="M369.3,905.2c0.5,0,1.2,0.1,1.5-0.5c0.3-0.6-0.1-1.1-0.5-1.6c-0.9-1-2.4-1.2-3.9-0.5
c0.2,0.3,0.4,0.6,0.5,0.9C367.3,904.5,368.2,905,369.3,905.2z"/>
<path fill="#FFFFFF" d="M333.1,908.2c1-2.1,2.4-3.6,2.4-3.6c2,0.8,5.5,1.6,8-0.1c3.3-2.3,2.9-7.4,7.6-10c1.1-0.6-9.2-3-14.6,0.1
c-4,2.3-3.7,6.1-3.6,7.5c5.2-6.1,12.8-5.8,12.8-5.8s-10.9,3.8-14.1,11.3C331.3,908.1,332.8,908.9,333.1,908.2z"/>
<path fill="#FFFFFF" d="M373,983.9c2.5-5-0.3-8.7-1.4-10c-1.1,9.6-9.1,14.5-9.1,14.5s8.5-11.1,6.7-20.9c-0.1-0.8-2.1-0.6-2,0.3
c0.4,2.8,0.1,5.3,0.1,5.3c-2.6,0.6-6.6,2.1-8,5.5c-1.8,4.5,2,9.5-1,15.2C357.6,995.2,369.6,990.7,373,983.9z"/>
<path fill="#FFFFFF" d="M283.9,946.2c-1,0.8-0.8,2.8,0,3.8c0.8,1,2.7,1.7,3.7,0.9c0.2-0.1,0.8-0.6,0.8-0.6
c1.1,0.9,1.8,0,2.3,0.6c0.6,0.8,1.9,2.4,2.4,2.9c0.4,0.5,1.2,1,1.6,0.7c0.4-0.3,1.8-1.3,2.3-1.7c0.5-0.4,0.5-0.9,0.2-1.3
s-1.1-0.3-1.5-0.8c-0.4-0.4-1.6-1.9-1.9-2.4c-0.5-0.6,0-1.4,0.8-1.7c6-2.3,8.2,1.2,10-0.2c1.4-1.1-0.1-5.7-3.4-9.8
c-3.2-4.1-7.4-6.8-8.9-5.6C290.2,932.9,296,937.1,283.9,946.2z M294.1,933.4c0.3-0.2,3.3,1.4,5.8,4.6c2.5,3.2,3.2,6.2,2.8,6.4
c-0.4,0.2-3.2-1-5.8-4.2C294.5,937,293.8,933.7,294.1,933.4z"/>
<path fill="#FFFFFF" d="M272.6,970.7c4.2,0,7.6-2,7.6-3c0,0,0-0.3,0-3.1c0-2.9-5.2-5.3-5.2-7.3c0-2.1,5.2-4.4,5.2-7.3
s0-3.1,0-3.1c0-1.1-3.5-3-7.6-3c-4.2,0-7.6,1.9-7.6,3c0,0,0,0.3,0,3.1c0,2.9,5.2,5.3,5.2,7.3c0,2.1-5.2,4.4-5.2,7.3s0,3.1,0,3.1
C265,968.7,268.5,970.7,272.6,970.7z M266.8,946.8c0.9-0.6,2.7-1.5,5.6-1.5c2.9,0,5.4,1.5,5.4,1.5c0.2,0.1,0.9,0.5,0.4,0.8
c-1.1,0.7-3.4,1.4-5.9,1.4c-2.6,0-4.7-0.8-5.8-1.4C265.9,947.2,266.8,946.8,266.8,946.8z M266.5,964.5c0-0.9,1.4-2.3,2.4-3.3
c1.4-1.4,2.8-2.4,2.8-4c0-1.6-1.4-2.7-2.8-4c-1-1-2.5-2.4-2.5-3.3l0-1.3c1.4,0.8,3.6,1.5,5.9,1.5c2.4,0,4.6-0.7,6-1.5l0,1.3
c0,0.9-1.4,2.3-2.5,3.3c-1.4,1.4-2.8,2.4-2.8,4c0,1.6,1.1,2.7,2.6,4c1,1,2.3,2.4,2.3,3.3v1.8c-1-0.6-4.8-1-4.8-3
c0-1-1.4-1-1.4,0c0,2-4.1,2.3-5.1,3L266.5,964.5L266.5,964.5z"/>
<path fill="#FFFFFF" d="M372.4,929.8c0,5.6,4.5,10.1,10.1,10.1c5.6,0,10.1-4.5,10.1-10.1c0-5.6-4.5-10.1-10.1-10.1
C376.9,919.7,372.4,924.2,372.4,929.8z M385.3,921.6c3.4,1.1,5.9,4.4,5.9,8.1c0,2-0.7,3.8-1.8,5.3c-0.3-0.2-0.6-0.9-0.3-1.6
c0.3-0.7,0.4-2.3,0.3-2.9c0-0.6-0.4-2.1-1.3-2.2c-0.9,0-1.5-0.3-2-1.4c-1.1-2.2,2.1-2.6,0.9-3.8c-0.3-0.3-1.9,1.4-2.1-0.9
C385,922.1,385.1,921.9,385.3,921.6z M387.3,937c-1.4,0.9-3,1.4-4.8,1.4c-0.9,0-1.9-0.1-2.7-0.4c0.5-0.3,0.6-0.6,1-0.6
c0.5,0,1-0.2,1.6-0.3c0.5-0.1,1.5-0.6,2.4-0.8C385.5,936.2,386.9,936.3,387.3,937z M381.3,921.3c-0.2,0.4-0.8,0.6-1.1,0.9
c-0.8,0.6-1,0.5-1.4,1.2c-0.4,0.6-1.7,1.5-1.7,2s0.6,1,0.9,0.9c0.3-0.1,1.2-0.1,1.7,0.1c0.5,0.2,4.1,0.3,2.9,3.5
c-0.3,1-2,0.8-2.4,2.4c0,0.2-0.3,1.2-0.3,1.6c0,0.5,0.3,2.5-0.1,2.5c-0.5,0-1.8-1.7-1.8-2.1c0-0.3-0.3-1.4-0.3-2.4
s-1.6-0.9-1.6-2.2c0-1.1,0.9-1.7,0.7-2.2c-0.2-0.5-1.7-0.5-2.4-0.6C375.6,923.8,378.2,921.7,381.3,921.3z"/>
<path fill="#FFFFFF" d="M334.1,995.5c-2,0-3.7,1.7-3.7,3.7s1.7,3.7,3.7,3.7c2,0,3.7-1.7,3.7-3.7
C337.8,997.1,336.1,995.5,334.1,995.5z M332.5,1000.7c0-0.1-0.1-0.5-0.1-0.8s-0.6-0.3-0.6-0.8c0-0.4,0.3-0.6,0.2-0.8
c0-0.2-0.6-0.2-0.8-0.2c0.4-1,1.4-1.8,2.5-2c-0.1,0.1-0.3,0.2-0.4,0.3c-0.2,0.2-0.4,0.2-0.5,0.4c-0.1,0.2-0.6,0.5-0.6,0.8
c0,0.1,0.2,0.3,0.3,0.3c0.1,0,0.4,0,0.6,0c0.2,0,1.5,0.1,1.1,1.2c-0.1,0.3-0.8,0.3-0.9,0.9c0,0.1-0.1,0.4-0.1,0.6
c0,0.2,0.1,0.9,0,0.9C333,1001.5,332.5,1000.8,332.5,1000.7z M334.1,1002.3c-0.3,0-0.7,0-1-0.1c0.2-0.1,0.2-0.2,0.4-0.2
c0.2,0,0.3-0.1,0.6-0.1c0.2,0,0.5-0.2,0.8-0.2c0.2,0,0.8,0,0.9,0.2C335.3,1002.1,334.8,1002.3,334.1,1002.3z M336.6,1001.1
c-0.1-0.1-0.2-0.3-0.1-0.6c0.1-0.2,0.1-0.8,0.1-1.1c0-0.2-0.1-0.8-0.5-0.8c-0.3,0-0.5-0.1-0.8-0.5c-0.4-0.8,0.8-0.9,0.3-1.4
c-0.1-0.1-0.7,0.5-0.8-0.3c0,0,0-0.1,0.1-0.2c1.2,0.4,2.2,1.6,2.2,3C337.3,999.9,337,1000.5,336.6,1001.1z"/>
<path fill="#FFFFFF" d="M287.9,1011.5c0,0.1,0,0.2,0,0.4c0,0.9,0.8,1.6,1.7,1.6c0.9,0,1.6-0.6,1.7-1.5c0-0.1,0-0.3,0-0.4
c0-0.5,0.2-0.6,0.6-0.8c3.3-0.8,5.8-3.4,6.3-6.6c0-0.4,0-0.8,0.2-1.1c0.3-0.2,0.8-0.4,0.9-0.8c0.1-0.2-0.2-0.7-0.3-1.1
c0.5-0.5,0.5-0.8-0.1-1.5c0.7-0.6,0.7-1,0-1.6c0.4-0.2,0.7-0.6,0.5-1c-0.1-0.3-0.5-0.5-0.8-0.7c0,0,0,0.1-0.1,0.1
c0-0.3,0-0.6-0.2-0.8c-0.2-0.2-0.5-0.5-0.8-0.6c-0.1,0-0.5,0.3-0.6,0.5c-0.3,0.7-0.5,1.4-0.9,2.1c-0.3,0.7-0.7,1.4-1.1,2
c-1.4,1.7-3.2,2.3-5.3,1.8c-2.1-0.4-3.5-1.7-4-3.7c-0.1-0.4-0.1-0.8-0.2-1.2c0.4-0.3,1.1-0.5,0.8-1.1c-0.1-0.3-0.6-0.5-1-0.9
c0-0.2,0.1-0.8-0.4-1c-0.5-0.2-0.8,0.1-1.1,0.6c-0.3-0.4-0.7-0.8-1.2-0.5c-0.3,0.2-0.4,0.7-0.8,1.1c-0.3,0-0.9,0-1,0.6
c0,0.4,0.3,0.8,1.2,1c-0.6,0.7-1.5,0.6-2.2,1.2c0.5,0.3,1,0.6,1.6,0.9c0.3,0.1,0.4,0.3,0.3,0.6c-0.1,1.1-0.1,2.2-0.2,3.3
c-0.4,4.7,2.8,7.3,5.8,8.1C287.7,1010.8,287.9,1010.9,287.9,1011.5z M283.2,997.7c-0.1,0-0.3-0.2-0.7-0.4
c0.3-0.2,0.5-0.4,0.7-0.4c0.1,0,0.4,0.3,0.4,0.4C283.5,997.5,283.3,997.7,283.2,997.7z"/>
<path fill="#FFFFFF" d="M372.7,950h-3.3c-0.6,0-1.4,0.3-1.7,0.8l-4.3,5.6c-0.3,0.5-0.1,0.5,0.4,0.5h17.6c0.6,0,0.8,0,0.5-0.5
l-3.8-5.6c-0.3-0.5-1.1-0.8-1.7-0.8h-0.8v-2h-2.9V950z"/>
<path fill="#FFFFFF" d="M376.6,944.8l0.2,0c0.5-0.1,1-0.5,1.4-1.1c0.3-0.6,0.4-1.8,0.3-2.5c-0.3,1-1.1,1.4-1.9,1.7
c-0.2,0.1-0.4,0.2-0.6,0.2c-0.2,0.1-0.5,0.2-0.8,0.3c-0.8,0.4-1.1,1-1.2,2c-0.1,0.4-0.1,0.8-0.1,1.4c0.4-1,0.8-1.5,1.7-1.8
C375.9,945,376.3,944.9,376.6,944.8z"/>
<path fill="#FFFFFF" d="M380.6,964.8h0.5v-6.1c0-0.6,0-0.8,0-0.8h-0.5h-0.7h-7.7h-0.7H366h-2.1v1.1v5.7h2.1h1.4v-4.1
c0,0,0.1,0.1,0.5,0.1h2.7c0,0,0.2-0.5,0.2-0.1v4h0.8h0.7h7.7H380.6L380.6,964.8z M378.1,962.8c0,0.1,0.3,0.5,0.2,0.5h-2.9
c-0.1,0-0.3-0.4-0.3-0.5v-2.9c0-0.1,0.2,0,0.3,0h2.9c0.1,0-0.2,0-0.2,0V962.8z"/>
<path fill="#FFFFFF" d="M337.9,1009c0-0.3-0.2-0.5-0.5-0.5h-6.8c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5h6.8
C337.7,1009.5,337.9,1009.3,337.9,1009z"/>
<rect x="331.9" y="1007.1" fill="#FFFFFF" width="4.9" height="1.5"/>
<path fill="#FFFFFF" d="M325,892.9c-2.3,0.4-4,2.3-4.2,4.6l4.4-0.2L325,892.9z"/>
<path fill="#FFFFFF" d="M326,898.6l-5.1,0.2c0.4,2.5,2.7,4.3,5.2,4.1c2.8-0.1,4.9-2.5,4.8-5.3c-0.1-2.6-2.2-4.6-4.6-4.8l0.2,5.1
C326.5,898.2,326.2,898.5,326,898.6z"/>
<path fill="#FFFFFF" d="M304.8,912.1c0.2,0,0.4-0.3,0.7-0.3c0.2,0,0.4-0.3,0.6-0.4l2.8-2c0.1-0.1,0.2-0.3,0.2-0.4
c0-0.1-0.1-0.3-0.2-0.4l-2.8-1.9c-0.1-0.1-0.4-0.4-0.6-0.5c-0.2,0-0.5-0.3-0.7-0.3h-8l0.9,6.4H304.8L304.8,912.1z"/>
<path fill="#FFFFFF" d="M285.9,911.7l2.8,1.9c0.1,0.1,0.4,0.2,0.6,0.3c0.2,0,0.5,0.2,0.7,0.2h4.1v10.2c0,0.2,0.3,0.1,0.5,0.1h1
c0.2,0,0.3,0.1,0.3-0.1v-20.2c0-0.2-0.1-0.8-0.3-0.8h-1c-0.2,0-0.5,0.6-0.5,0.8v4.6H290c-0.2,0-0.4,0-0.7,0s-0.4,0.1-0.6,0.2
l-2.8,1.9c-0.1,0.1-0.2,0.2-0.2,0.4C285.7,911.4,285.8,911.5,285.9,911.7z"/>
<path fill="#FFFFFF" d="M301.9,916.3v16.1c0,1.1,1.2,2.4,2.3,2.4h7.8c1.1,0,2.2-1.2,2.2-2.4v-16.1c0-1.1-1-1.7-2.2-1.7h-7.8
C303.1,914.6,301.9,915.2,301.9,916.3z M308.2,933.6c-0.8,0-1.4-0.4-1.4-1c0-0.6,0.6-1,1.4-1s1.4,0.4,1.4,1
C309.6,933.1,308.9,933.6,308.2,933.6z M312.7,917.1v13.3h-8.9v-13.3H312.7z"/>
<path fill="#FFFFFF" d="M347.5,904c0,6.7,7,15.5,7,15.5s7-8.8,7-15.5c0-3.9-3.1-7-7-7C350.7,896.9,347.5,900.1,347.5,904z
M354.5,900.3c2.1,0,3.8,1.7,3.8,3.8c0,2.1-1.7,3.8-3.8,3.8c-2.1,0-3.8-1.7-3.8-3.8C350.7,902,352.5,900.3,354.5,900.3z"/>
<path fill="#FFFFFF" d="M310.3,923c0-1.2-0.9-2.1-2.1-2.1s-2.1,0.9-2.1,2.1c0,2,2.1,4.6,2.1,4.6S310.3,925.1,310.3,923z
M307,923.1c0-0.6,0.5-1.1,1.1-1.1s1.1,0.5,1.1,1.1s-0.5,1.1-1.1,1.1C307.5,924.2,307,923.7,307,923.1z"/>
<path fill="#FFFFFF" d="M355.2,922.1l-1.2,1.1l-1.2-1.1c-1.7-1.6-4.6-1.6-6.3,0c-2,1.8-2,4.7,0,6.5l7.5,6.9l7.5-6.9
c2-1.8,2-4.7,0-6.5C359.7,920.5,356.9,920.5,355.2,922.1z"/>
<path fill="#FFFFFF" d="M385.7,973.9l-1.7,1.4c-0.1,0.1-0.1,0.3,0,0.4l9.6,10.9c0.2,0.2,0.6,0.3,0.9,0l1.1-0.9
c0.2-0.2,0.3-0.6,0-0.9l-9.5-11C386.1,973.7,385.9,973.7,385.7,973.9z"/>
<path fill="#FFFFFF" d="M385.2,966.7c-1.5,0.1-3.4,1.5-4.3,2.2c-1.2,0.8-1.7,1.3-1.8,1.4c-0.3,0.3,0,1-0.7,1.6
c-0.6,0.6-1.1,0.1-1.5,0.5c-0.2,0.1-0.8,0.6-0.9,0.7c-0.1,0.1-0.2,0.3,0,0.5c0,0,1.5,1.6,1.6,1.8c0.1,0.1,0.4,0.2,0.6,0.1
c0.2-0.2,0.8-0.6,0.8-0.8c0.1-0.1,0-1,0.4-1.4c1.1-0.8,2-0.2,3.1,1.1c0.1,0.1,0.3,0,0.4-0.1c0.1-0.1,1.7-1.5,1.8-1.6
c0.1,0,0.1-0.2,0-0.3c-0.1-0.1-0.6-0.8-0.8-1.1c-2.1-2.8,5.7-4.6,4.5-4.6C388,966.6,385.6,966.6,385.2,966.7z"/>
<path fill="#FFFFFF" d="M379.1,985.9l1.1,1.1c0.2,0.2,0.6,0.1,0.9-0.1l5.6-5.6l-1.7-2l-5.9,5.7
C378.9,985.3,378.9,985.7,379.1,985.9z"/>
<path fill="#FFFFFF" d="M391.2,973.2c-0.1,0.1-0.2,0.3-0.3,0.4l-1.6,1.6l1.6,1.8l1.9-1.8c0.1-0.1,0.3-0.2,0.4-0.3c0,0,0,0,0.1,0
c0.1,0,0.3,0,0.4,0.1c0.3,0.2,0.7,0.5,1,0.8c0.2,0.2,0.4,0.2,0.7,0c0.3-0.3,0.6-0.6,0.9-1c0.5-0.5,1-1.1,1.5-1.6
c0.8-0.9,1.2-1.9,1.2-2.9c0-0.4,0-0.8-0.1-1.2c-0.1-1-0.6-1.5-1.7-1.7c-0.2,0-0.5-0.1-0.8,0c-0.3,0-0.6,0-0.9,0
c-0.8,0-1.5,0.2-2.2,0.8c-0.5,0.4-1,0.9-1.5,1.4c-0.5,0.5-1.1,1-1.7,1.6c-0.1,0.1-0.2,0.3,0,0.4c0.3,0.3,0.6,0.8,1,1.1
c0.1,0.1,0.2,0.2,0.1,0.4C391.3,973,391.2,973.1,391.2,973.2z M392.5,972.9l2.4-2.2c0,0,0.2,0,0.2,0c0,0,0,0.1,0,0.2l-2.1,2.6
c0,0-0.1-0.3-0.1,0.1l0,0c0,0-0.1-0.1-0.1-0.1l-0.3-0.3c0,0,0-0.1,0-0.1C392.4,973,392.5,972.9,392.5,972.9z"/>
<path fill="#FFFFFF" d="M386,946.8c0,0.4,0,0.8,0.3,0.8h5.1v1.3c0,0.3-0.2,0.2,0.1,0.2h2c0.3,0,0.3,0.1,0.3-0.2v-1.3h4.9
c0.4,0,0.5-0.4,0.5-0.8v-2.7H386L386,946.8L386,946.8z"/>
<path fill="#FFFFFF" d="M392.9,954.3v-0.9c0-0.1-0.1-0.3-0.2-0.3s-0.2,0.1-0.2,0.3v0.9c-1.5,0.1-2.5,1.3-2.5,2.6
c0,1.5,1.1,2.7,2.6,2.7c1.5,0,2.7-1.2,2.7-2.7C395.2,955.6,394.4,954.4,392.9,954.3z"/>
<path fill="#FFFFFF" d="M398.2,949.5H387c-0.6,0-1,0.5-1.1,1.1l-1.3,11.6c0,0.3,0,0.8,0.3,1c0.2,0.2,0.5,0.5,0.8,0.5h13.9
c0.3,0,0.6-0.2,0.8-0.5c0.2-0.2,0.3-0.6,0.3-0.9l-1.3-11.7C399.2,950.1,398.7,949.5,398.2,949.5z M392.5,961.5
c-2.6,0-4.6-2.1-4.6-4.6s2.1-4.6,4.6-4.6c2.6,0,4.6,2.1,4.6,4.6S395.1,961.5,392.5,961.5z"/>
<path fill="#FFFFFF" d="M343.9,1015.7v0.2h5.7c0.3,0,0.5-0.4,0.5-0.8s-0.2-0.8-0.5-0.8h-5.7h-0.7H342c-1.5,0-2.8,1-3.1,2.5h-4
v1.5h4c0.4,1.5,1.6,2.9,3.1,2.9h1.2l0,0h6.4c0.3,0,0.5-0.4,0.5-0.8s-0.2-0.8-0.5-0.8h-5.7c-0.2,0-0.3,0-0.3-0.2
c0-0.2,0.1-0.2,0.3-0.2h5.7c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5h-5.7l0,0c-0.2,0-0.3-0.3-0.3-0.5
c0-0.2,0.1-0.5,0.3-0.5h5.7c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5h-5.5v-0.2c-0.5,0-0.5,0-0.5-0.2
C343.7,1015.8,343.7,1015.7,343.9,1015.7z"/>
<path fill="#FFFFFF" d="M318.8,1019.4h13.9c0.6,0,1.7-0.3,1.7-0.8v-1.7c0-0.5-1.1-0.9-1.7-0.9h-13.9c-0.9,0-1.7,0.8-1.7,1.7
C317.1,1018.6,317.9,1019.4,318.8,1019.4z"/>
<path fill="#FFFFFF" d="M349.5,1024.5c0-0.9-0.8-1.7-1.7-1.7h-14.4c-0.6,0-1,0.3-1.5,0.8v1.7c0.5,0.5,0.8,0.9,1.5,0.9h14.4
C348.7,1026.3,349.5,1025.5,349.5,1024.5z"/>
<path fill="#FFFFFF" d="M331.9,1025.3v-1.5h-2H327h-12.8c0,0-1.3,0.6,0.6,1.4c2.9,1.2,5.2,1.4,7.5,1.7c0.8,0.1,3.4,0.7,5-0.8
c0.6-0.5,1.2-0.9,1.7-0.9H331.9z"/>
<path fill="#FFFFFF" d="M351.2,1010.6l4.2-0.4c0-0.4-0.1-0.9-0.1-1.4c0-1.2-0.1-2.4-0.1-3.6c0-0.9,0-1.8,0-2.7
c0-1,0.1-2.1,0.1-3.1c0-0.8,0.1-1.7,0.2-2.6c0.1-1,0.2-2,0.4-3c0.1-0.8,0.2-1.6,0.3-2.4c0-0.2-0.1-0.4-0.3-0.5
c-0.1,0-0.3,0-0.4,0c-2.1,0-4.3,0-6.3,0c0,0,0,0,0,0c-0.5,0-1,0-1.5,0c-0.3,0-0.3,0-0.3,0.3c0,0.4-0.1,0.8-0.1,1.1
c0,0.8,0,1.6,0,2.4c0,0.8,0,1.6,0.1,2.4c0,0.8,0.1,1.6,0.1,2.4c0,0.8,0.1,1.4,0.1,2.2c0,1,0.1,2,0.2,2.9c0,0.8,0.1,1.6,0.2,2.5
c0.1,0.8,0.1,1.6,0.2,2.5c0,0.4,0.1,0.8,0.1,1.1c0,0.1,0,0.2,0.2,0.2c0.2,0,0.5,0,0.8,0c0.4,0,0.8,0,1.2-0.1
C350.9,1010.7,351,1010.6,351.2,1010.6z M354,992.4c0.3,0,0.6,0.2,0.6,0.5c0,0.3-0.2,0.5-0.5,0.5c-0.3,0-0.5-0.2-0.6-0.6
C353.5,992.6,353.7,992.4,354,992.4z"/>
<path fill="#FFFFFF" d="M354.5,1022.3c-0.2,0.8,0.5,1.7,1.3,1.7c0.7,0,1.3-0.5,1.5-1.2c0.1-0.6,0.1-1.3,0-1.9
c-0.2-1.3-0.5-2.7-0.8-3.9c-0.2-1-0.4-2.1-0.6-3.1c-0.1-0.8-0.3-1.6-0.3-2.4v0l-2.7,0.2c0.1,0.5,0.2,1,0.3,1.5
c0.3,1.6,0.5,3.2,0.9,4.8c0.2,1,0.4,2,0.7,3c0,0.2,0,0.4,0,0.6C354.6,1021.8,354.5,1022,354.5,1022.3z"/>
<path fill="#FFFFFF" d="M308.5,990.1c0.7,0,1.3,0,2-0.1c0,0,0,0,0-0.1c0.3-0.6,0-1.5-0.7-1.7c0-0.6,0.1-1.2,0-1.8
c-0.1-0.8-0.1-1.8-0.5-2.4c-1-1.5-2.6-3.2-3.8-4.5c-0.9-1-1.8-1.1-3.1-1.1c-5.1,0-10.2-0.1-15.4-0.1c-1.6,0-2.3,0.6-2.3,2.2
c0,2.5,0,5-0.1,7.7c-0.5,0-0.7,0.2-0.6,0.7c0,0.2,0,0.4,0,0.6c0,0.3,0.1,0.5,0.5,0.5c0.4,0,0.9,0,1.4,0c0.4,0,0.6-0.1,0.8-0.5
c0.4-1.4,1.6-2.3,3-2.3c1.5,0,2.6,0.8,3,2.3c0.1,0.5,0.4,0.6,0.8,0.6c2.5,0,5,0,7.4,0.1c0.5,0,0.8-0.2,0.9-0.6
c0.4-1.4,1.6-2.2,3-2.2c1.4,0,2.5,0.8,3,2.2C308.1,989.7,308.3,990.1,308.5,990.1z M307.2,983.9L307.2,983.9l-4.8,0.2
c-0.3,0-0.6-0.2-0.6-0.5l0-3.5c0-0.3,0.3-0.6,0.7-0.6l1.5,0c0,0,0.1,0,0.2,0c0.2,0,0.3,0.1,3.5,3.7c0.1,0.1,0.2,0,0.2,0.2
C307.8,983.9,307.5,983.9,307.2,983.9z"/>
<path fill="#FFFFFF" d="M289.9,987.5c-1.5,0-2.8,1.2-2.8,2.8s1.2,2.8,2.8,2.8s2.8-1.2,2.8-2.8
C292.6,988.8,291.4,987.6,289.9,987.5z"/>
<path fill="#FFFFFF" d="M305,987.7c-1.5,0-2.8,1.2-2.8,2.8s1.2,2.8,2.8,2.8s2.8-1.2,2.8-2.8C307.8,989,306.6,987.7,305,987.7z"
/>
<path fill="#FFFFFF" d="M391.2,993.8c0-0.4-1.2-0.9-5.2-0.3c0,0,1-0.8,1.4-1c0.4-0.1,2.2-1.2,1.8-2.6c-0.3-1.4-0.8-0.5-1.5,0.5
c-0.6,1.1-1.4,2.1-2.5,2.7c0,0-0.3-2.2-1.6-2.2c-0.4,0-2.1,0-3.9,0.2l-0.3,0c-0.2,0-0.5,0-0.7,0.1c0,0-0.1,0-0.1,0.1v2.3
c0,0.2,0,0.3-0.2,0.3c-0.2,0-0.2-0.1-0.2-0.3v-2.3l0,0c-0.5,0-0.6,0.1-0.9,0.1c0,0-3.6,0.5-6,1.3h0c0,0-0.1,0-0.1,0
c-0.1,0-0.3,0.1-0.4,0.1c-0.1,0-0.2,0-0.3,0.1c0,0,0,0-0.1,0c0,0-0.1,0-0.1,0l0,0c-0.4,0.2-0.8,0.3-1.2,0.5c0,0-0.4,0.2-0.1,0.8
c0.1,0.3,2.2,1.2,6.1,1.8v-1.8c0-0.2,0-0.3,0.2-0.3c0.2,0,0.2,0.1,0.2,0.3v1.9c0.5,0,0.6,0,0.9,0.1l0.4,0
c1.3,0.1,2.6,0.2,5.1,0.3v-1.5c0-0.2,0-0.3,0.2-0.3c0.2,0,0.2,0.1,0.2,0.3v1.5h0.4c0.5,0,0.8,0,1.3,0c0,0,1.3,0.1,1.4-2.3
c0,0,2.2-0.4,2.1,2.2c-0.1,1.9,1.5,1.9,1.5,0.6c0-1.3-0.3-2.8-2.8-3.3c0,0,2,0.2,3.6,0.5C391,994.8,391.2,994.3,391.2,993.8z"/>
</g>
<g>
<polygon fill="#FFFFFF" points="610.4,990.8 610,990.8 596.3,973.1 592.1,973.1 592.1,999.7 598,999.7 598,982 597.7,982
611.5,999.7 615.2,999.7 615.2,974.1 610.4,974.1 "/>
<polygon fill="#FFFFFF" points="624.6,999.7 637.4,999.7 637.4,994.8 629,994.8 629,988.4 637.4,988.4 637.4,983.9 629,983.9
629,977.5 637.4,977.5 637.4,974.1 624.6,974.1 "/>
<polygon fill="#FFFFFF" points="644.3,977.5 649.7,977.5 649.7,999.7 654.1,999.7 654.1,977.5 660.5,977.5 660.5,974.1
644.3,974.1 "/>
<polygon fill="#FFFFFF" points="688.9,991.8 688.9,991.8 683.4,973.1 680.4,973.1 675.2,991.8 675.2,991.8 669.9,974.1
664.5,974.1 672.9,999.7 676.6,999.7 681.5,983.9 681.6,983.9 686.8,999.7 690.5,999.7 699.4,974.1 694,974.1 "/>
<path fill="#FFFFFF" d="M717.6,972.9c-7.8,0-12.9,5.9-12.9,13.7c0,7.7,5,13.8,12.9,13.8c8,0,12.9-6.1,12.9-13.8
C730.5,978.9,725.3,972.9,717.6,972.9z M717.6,995.4c-5.6,0-7.6-5-7.6-9c0-4.2,2.8-8.4,7.6-8.4c4.8,0,7.6,4.3,7.6,8.4
C725.2,990.4,723.2,995.4,717.6,995.4z"/>
<path fill="#FFFFFF" d="M753.8,981.7c0-5.6-3.6-7.6-8.7-7.6h-7.3v25.6h5.9v-10.3h-0.3l6.4,10.3h6.2l-7.4-10.9
C752,988.2,753.8,985,753.8,981.7z M743.9,985.9h-0.2v-8.4h0.3c2.7,0,4.7,0.9,4.7,4.1C748.7,984.8,746.7,985.9,743.9,985.9z"/>
<polygon fill="#FFFFFF" points="782.2,974.1 775.9,974.1 767.8,984.4 767.7,984.4 767.7,974.1 762.3,974.1 762.3,999.7
767.7,999.7 767.7,987.4 767.8,987.4 776.2,999.7 782.7,999.7 772.3,985.9 "/>
<path fill="#FFFFFF" d="M448.7,915.8c-12.8,0-21.2,9.7-21.2,22.4c0,12.6,8.1,22.6,21.2,22.6c13.1,0,21.2-10,21.2-22.6
C469.8,925.6,461.4,915.8,448.7,915.8z M448.7,952.6c-9.2,0-12.5-8.1-12.5-14.7c0-6.9,4.7-13.9,12.5-13.9s12.5,7,12.5,13.9
C461.2,944.5,457.9,952.6,448.7,952.6z"/>
<path fill="#FFFFFF" d="M490.9,917.5h-11.4v42.3h7.9v-16.2h4.7c8.8,0,13.7-4.1,13.7-13.1C505.7,920.8,499.8,917.5,490.9,917.5z
M489.6,937.2h-2.2v-13.3h2c4.7,0,7.8,1,7.8,6.5C497.2,936,494.5,937.2,489.6,937.2z"/>
<polygon fill="#FFFFFF" points="515.4,959.8 537.5,959.8 537.5,952.5 523.7,952.5 523.7,941.2 536.6,941.2 536.6,933.8
523.7,933.8 523.7,923.9 537.5,923.9 537.5,917.5 515.4,917.5 "/>
<polygon fill="#FFFFFF" points="576.9,946.1 577,946.1 554.5,915.6 548.4,915.6 548.4,959.8 557.2,959.8 557.2,930.3 557,930.3
579.5,960.8 585.7,960.8 585.7,917.5 576.9,917.5 "/>
<polygon fill="#FFFFFF" points="619.2,959.8 627.6,959.8 627.6,941.2 639.9,941.2 639.9,933.8 627.6,933.8 627.6,923.9
640.9,923.9 640.9,917.5 619.2,917.5 "/>
<path fill="#FFFFFF" d="M670.3,960.8c13,0,21.2-10,21.2-22.6c0-12.7-8.4-22.4-21.2-22.4c-12.8,0-21.2,9.7-21.2,22.4
C649.2,950.8,657.3,960.8,670.3,960.8z M670.3,924c7.9,0,12.5,7,12.5,13.9c0,6.6-3.3,14.7-12.5,14.7c-9.2,0-12.5-8.1-12.5-14.7
C657.8,931,662.4,924,670.3,924z"/>
<path fill="#FFFFFF" d="M720.3,915.8c-12.8,0-21.2,9.7-21.2,22.4c0,12.6,8.1,22.6,21.2,22.6s21.2-10,21.2-22.6
C741.5,925.6,733.1,915.8,720.3,915.8z M720.3,952.6c-9.2,0-12.5-8.1-12.5-14.7c0-6.9,4.7-13.9,12.5-13.9
c7.9,0,12.5,7,12.5,13.9C732.9,944.5,729.6,952.6,720.3,952.6z"/>
<path fill="#FFFFFF" d="M783.8,938.7c0-12.2-8.3-21.2-20.7-21.2H752v42.3h11.1C775.3,959.8,783.8,950.7,783.8,938.7z
M759.9,952.5v-28.6h1.1c9.4,0,14.2,5,14.2,14.3c0,8.4-4,14.3-14.2,14.3L759.9,952.5L759.9,952.5z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -1,3 +1,3 @@
angular.module("ofn.admin", ["ngResource", "ngAnimate", "ofn.dropdown", "admin.products", "infinite-scroll"]).config ($httpProvider) ->
angular.module("ofn.admin", ["ngResource", "ngAnimate", "ofn.dropdown", "admin.products", "admin.taxons", "infinite-scroll"]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content")
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -22,5 +22,11 @@
//= require ./payment_methods/payment_methods
//= require ./products/products
//= require ./shipping_methods/shipping_methods
//= require ./side_menu/side_menu
//= require ./taxons/taxons
//= require ./utils/utils
//= require ./users/users
//= require textAngular.min.js
//= require textAngular-sanitize.min.js
//= require_tree .

View File

@@ -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()

View File

@@ -1,9 +1,7 @@
angular.module("ofn.admin").controller "AdminProductEditCtrl", [
"$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "VariantUnitManager", "producers", "Taxons",
($scope, $timeout, $http, dataFetcher, DirtyProducts, VariantUnitManager, producers, Taxons) ->
$scope.updateStatusMessage =
text: ""
style: {}
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $http, BulkProducts, DisplayProperties, dataFetcher, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, SpreeApiAuth) ->
$scope.loading = true
$scope.StatusMessage = StatusMessage
$scope.columns =
producer: {name: "Producer", visible: true}
@@ -36,60 +34,35 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
$scope.filterTaxons = [{id: "0", name: ""}].concat $scope.taxons
$scope.producerFilter = "0"
$scope.categoryFilter = "0"
$scope.products = []
$scope.products = BulkProducts.products
$scope.filteredProducts = []
$scope.currentFilters = []
$scope.limit = 15
$scope.productsWithUnsavedVariants = []
$scope.query = ""
$scope.DisplayProperties = DisplayProperties
$scope.initialise = (spree_api_key) ->
authorise_api_reponse = ""
dataFetcher("/api/users/authorise_api?token=" + spree_api_key).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
$scope.fetchProducts()
else if authorise_api_reponse.hasOwnProperty("error")
$scope.api_error_msg = authorise_api_reponse("error")
else
api_error_msg = "You don't have an API key yet. An attempt was made to generate one, but you are currently not authorised, please contact your site administrator for access."
$scope.initialise = ->
SpreeApiAuth.authorise()
.then ->
$scope.spree_api_key_ok = true
$scope.fetchProducts()
.catch (message) ->
$scope.api_error_msg = message
$scope.$watchCollection '[query, producerFilter, categoryFilter]', ->
$scope.limit = 15 # Reset limit whenever searching
$scope.fetchProducts = -> # WARNING: returns a promise
$scope.fetchProducts = ->
$scope.loading = true
queryString = $scope.currentFilters.reduce (qs,f) ->
return qs + "q[#{f.property.db_column}_#{f.predicate.predicate}]=#{f.value};"
, ""
return dataFetcher("/api/products/bulk_products?page=1;per_page=20;#{queryString}").then (data) ->
$scope.resetProducts data.products
BulkProducts.fetch($scope.currentFilters).then ->
$scope.resetProducts()
$scope.loading = false
if data.pages > 1
for page in [2..data.pages]
dataFetcher("/api/products/bulk_products?page=#{page};per_page=20;#{queryString}").then (data) ->
for product in data.products
$scope.unpackProduct product
$scope.products.push product
$scope.resetProducts = (data) ->
$scope.products = data
$scope.resetProducts = ->
DirtyProducts.clear()
$scope.setMessage $scope.updateStatusMessage, "", {}, false
$scope.displayProperties ||= {}
angular.forEach $scope.products, (product) ->
$scope.unpackProduct product
$scope.unpackProduct = (product) ->
$scope.displayProperties ||= {}
$scope.displayProperties[product.id] ||= showVariants: false
#$scope.matchProducer product
$scope.loadVariantUnit product
StatusMessage.clear()
# $scope.matchProducer = (product) ->
# for producer in $scope.producers
@@ -97,37 +70,6 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
# product.producer = producer
# break
$scope.loadVariantUnit = (product) ->
product.variant_unit_with_scale =
if product.variant_unit && product.variant_unit_scale && product.variant_unit != 'items'
"#{product.variant_unit}_#{product.variant_unit_scale}"
else if product.variant_unit
product.variant_unit
else
null
$scope.loadVariantUnitValues product if product.variants
$scope.loadVariantUnitValue product, product.master if product.master
$scope.loadVariantUnitValues = (product) ->
for variant in product.variants
$scope.loadVariantUnitValue product, variant
$scope.loadVariantUnitValue = (product, variant) ->
unit_value = $scope.variantUnitValue product, variant
unit_value = if unit_value? then unit_value else ''
variant.unit_value_with_description = "#{unit_value} #{variant.unit_description || ''}".trim()
$scope.variantUnitValue = (product, variant) ->
if variant.unit_value?
if product.variant_unit_scale
variant.unit_value / product.variant_unit_scale
else
variant.unit_value
else
null
$scope.updateOnHand = (product) ->
on_demand_variants = []
@@ -173,7 +115,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
on_hand: null
price: null
$scope.productsWithUnsavedVariants.push product
$scope.displayProperties[product.id].showVariants = true
DisplayProperties.setShowVariants product.id, true
$scope.nextVariantId = ->
@@ -181,12 +123,6 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
$scope.variantIdCounter -= 1
$scope.variantIdCounter
$scope.updateVariantLists = (server_products) ->
for product in $scope.productsWithUnsavedVariants
server_product = $scope.findProduct(product.id, server_products)
product.variants = server_product.variants
$scope.loadVariantUnitValues product
$scope.deleteProduct = (product) ->
if confirm("Are you sure?")
$http(
@@ -216,18 +152,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
$scope.cloneProduct = (product) ->
dataFetcher("/admin/products/" + product.permalink_live + "/clone.json").then (data) ->
# Ideally we would use Spree's built in respond_override helper here to redirect the
# user after a successful clone with .json in the accept headers
# However, at the time of writing there appears to be an issue which causes the
# respond_with block in the destroy action of Spree::Admin::Product to break
# when a respond_overrride for the clone action is used.
id = data.product.id
dataFetcher("/api/products/" + id + "?template=bulk_show").then (data) ->
newProduct = data
$scope.unpackProduct newProduct
$scope.products.push newProduct
BulkProducts.cloneProduct product
$scope.hasVariants = (product) ->
product.variants.length > 0
@@ -255,7 +180,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
if productsToSubmit.length > 0
$scope.updateProducts productsToSubmit # Don't submit an empty list
else
$scope.setMessage $scope.updateStatusMessage, "No changes to save.", color: "grey", 3000
StatusMessage.display 'alert', 'No changes to save.'
$scope.updateProducts = (productsToSubmit) ->
@@ -268,7 +193,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
filters: $scope.currentFilters
).success((data) ->
DirtyProducts.clear()
$scope.updateVariantLists(data.products)
BulkProducts.updateVariantLists(data.products, $scope.productsWithUnsavedVariants)
$timeout -> $scope.displaySuccess()
).error (data, status) ->
if status == 400 && data.errors? && data.errors.length > 0
@@ -302,57 +227,36 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
if variant.hasOwnProperty("unit_value_with_description")
match = variant.unit_value_with_description.match(/^([\d\.]+(?= |$)|)( |)(.*)$/)
if match
product = $scope.findProduct(product.id, $scope.products)
product = BulkProducts.find product.id
variant.unit_value = parseFloat(match[1])
variant.unit_value = null if isNaN(variant.unit_value)
variant.unit_value *= product.variant_unit_scale if variant.unit_value && product.variant_unit_scale
variant.unit_description = match[3]
$scope.findProduct = (id, product_list) ->
products = (product for product in product_list when product.id == id)
if products.length == 0 then null else products[0]
$scope.incrementLimit = ->
if $scope.limit < $scope.products.length
$scope.limit = $scope.limit + 5
$scope.setMessage = (model, text, style, timeout) ->
model.text = text
model.style = style
$timeout.cancel model.timeout if model.timeout
if timeout
model.timeout = $timeout(->
$scope.setMessage model, "", {}, false
, timeout, true)
$scope.displayUpdating = ->
$scope.setMessage $scope.updateStatusMessage, "Saving...",
color: "#FF9906"
, false
StatusMessage.display 'progress', 'Saving...'
$scope.displaySuccess = ->
$scope.setMessage $scope.updateStatusMessage, "Changes saved.",
color: "#9fc820"
, 3000
StatusMessage.display 'success', 'Changes saved.'
$scope.displayFailure = (failMessage) ->
$scope.setMessage $scope.updateStatusMessage, "Saving failed. " + failMessage,
color: "#DA5354"
, false
StatusMessage.display 'failure', "Saving failed. #{failMessage}"
$scope.displayDirtyProducts = ->
if DirtyProducts.count() > 0
message = if DirtyProducts.count() == 1 then "one product" else DirtyProducts.count() + " products"
$scope.setMessage $scope.updateStatusMessage, "Changes to " + message + " remain unsaved.",
color: "gray"
, false
StatusMessage.display 'notice', "Changes to #{message} remain unsaved."
else
$scope.setMessage $scope.updateStatusMessage, "", {}, false
]
StatusMessage.clear()
filterSubmitProducts = (productsToFilter) ->
filteredProducts = []
@@ -384,8 +288,8 @@ filterSubmitProducts = (productsToFilter) ->
if product.hasOwnProperty("name")
filteredProduct.name = product.name
hasUpdatableProperty = true
if product.hasOwnProperty("producer")
filteredProduct.supplier_id = product.producer
if product.hasOwnProperty("producer_id")
filteredProduct.supplier_id = product.producer_id
hasUpdatableProperty = true
if product.hasOwnProperty("price")
filteredProduct.price = product.price
@@ -400,8 +304,8 @@ filterSubmitProducts = (productsToFilter) ->
if product.hasOwnProperty("on_hand") and filteredVariants.length == 0 #only update if no variants present
filteredProduct.on_hand = product.on_hand
hasUpdatableProperty = true
if product.hasOwnProperty("category")
filteredProduct.primary_taxon_id = product.category
if product.hasOwnProperty("category_id")
filteredProduct.primary_taxon_id = product.category_id
hasUpdatableProperty = true
if product.hasOwnProperty("available_on")
filteredProduct.available_on = product.available_on

View File

@@ -1,9 +1,10 @@
angular.module("ofn.admin").controller "AdminEnterpriseRelationshipsCtrl", ($scope, EnterpriseRelationships, Enterprises) ->
$scope.EnterpriseRelationships = EnterpriseRelationships
$scope.Enterprises = Enterprises
$scope.permissions = {}
$scope.create = ->
$scope.EnterpriseRelationships.create($scope.parent_id, $scope.child_id)
$scope.EnterpriseRelationships.create($scope.parent_id, $scope.child_id, $scope.permissions)
$scope.delete = (enterprise_relationship) ->
if confirm("Are you sure?")

View File

@@ -0,0 +1,11 @@
angular.module("ofn.admin").controller "AdminEnterpriseRolesCtrl", ($scope, EnterpriseRoles, Users, Enterprises) ->
$scope.EnterpriseRoles = EnterpriseRoles
$scope.Users = Users
$scope.Enterprises = Enterprises
$scope.create = ->
$scope.EnterpriseRoles.create($scope.user_id, $scope.enterprise_id)
$scope.delete = (enterprise_role) ->
if confirm("Are you sure?")
$scope.EnterpriseRoles.delete enterprise_role

View File

@@ -0,0 +1,7 @@
angular.module("ofn.admin").controller "ProvidersCtrl", ($scope, paymentMethod) ->
if paymentMethod.type
$scope.include_html = "/admin/payment_methods/show_provider_preferences?" +
"provider_type=#{paymentMethod.type};" +
"pm_id=#{paymentMethod.id};"
else
$scope.include_html = ""

View File

@@ -0,0 +1,67 @@
angular.module("ofn.admin").controller "AdminVariantOverridesCtrl", ($scope, $timeout, Indexer, SpreeApiAuth, PagedFetcher, StatusMessage, hubs, producers, hubPermissions, VariantOverrides, DirtyVariantOverrides) ->
$scope.hubs = hubs
$scope.hub = null
$scope.products = []
$scope.producers = Indexer.index producers
$scope.hubPermissions = hubPermissions
$scope.variantOverrides = VariantOverrides.variantOverrides
$scope.StatusMessage = StatusMessage
$scope.initialise = ->
SpreeApiAuth.authorise()
.then ->
$scope.spree_api_key_ok = true
$scope.fetchProducts()
.catch (message) ->
$scope.api_error_msg = message
$scope.fetchProducts = ->
url = "/api/products/distributable?page=::page::;per_page=100"
PagedFetcher.fetch url, (data) => $scope.addProducts data.products
$scope.addProducts = (products) ->
$scope.products = $scope.products.concat products
VariantOverrides.ensureDataFor hubs, products
$scope.selectHub = ->
$scope.hub = (hub for hub in hubs when hub.id == $scope.hub_id)[0]
$scope.displayDirty = ->
if DirtyVariantOverrides.count() > 0
num = if DirtyVariantOverrides.count() == 1 then "one override" else "#{DirtyVariantOverrides.count()} overrides"
StatusMessage.display 'notice', "Changes to #{num} remain unsaved."
else
StatusMessage.clear()
$scope.update = ->
if DirtyVariantOverrides.count() == 0
StatusMessage.display 'alert', 'No changes to save.'
else
StatusMessage.display 'progress', 'Saving...'
DirtyVariantOverrides.save()
.success (updatedVos) ->
DirtyVariantOverrides.clear()
VariantOverrides.updateIds updatedVos
$timeout -> StatusMessage.display 'success', 'Changes saved.'
.error (data, status) ->
$timeout -> StatusMessage.display 'failure', $scope.updateError(data, status)
$scope.updateError = (data, status) ->
if status == 401
"I couldn't get authorisation to save those changes, so they remain unsaved."
else if status == 400 && data.errors?
errors = []
for field, field_errors of data.errors
errors = errors.concat field_errors
errors = errors.join ', '
"I had some trouble saving: #{errors}"
else
"Oh no! I was unable to save your changes."

View File

@@ -0,0 +1,7 @@
angular.module("ofn.admin").directive "providerPrefsFor", ($http) ->
link: (scope, element, attrs) ->
element.on "change blur load", ->
scope.$apply ->
scope.include_html = "/admin/payment_methods/show_provider_preferences?" +
"provider_type=#{element.val()};" +
"pm_id=#{attrs.providerPrefsFor};"

View File

@@ -1,19 +0,0 @@
angular.module("ofn.admin").directive "ofnTaxonAutocomplete", (Taxons) ->
# Adapted from Spree's existing taxon autocompletion
require: "ngModel"
link: (scope,element,attrs,ngModel) ->
setTimeout ->
element.select2
placeholder: "Category"
multiple: false
initSelection: (element, callback) ->
callback Taxons.findByID(scope.product.category)
query: (query) ->
query.callback { results: Taxons.findByTerm(query.term) }
formatResult: (taxon) ->
taxon.name
formatSelection: (taxon) ->
taxon.name
element.on "change", ->
scope.$apply ->
ngModel.$setViewValue element.val()

View File

@@ -1,18 +1,19 @@
angular.module("ofn.admin").directive "ofnToggleVariants", ->
angular.module("ofn.admin").directive "ofnToggleVariants", (DisplayProperties) ->
link: (scope, element, attrs) ->
if scope.displayProperties[scope.product.id].showVariants
if DisplayProperties.showVariants scope.product.id
element.removeClass "icon-chevron-right"
element.addClass "icon-chevron-down"
else
element.removeClass "icon-chevron-down"
element.addClass "icon-chevron-right"
element.on "click", ->
scope.$apply ->
if scope.displayProperties[scope.product.id].showVariants
scope.displayProperties[scope.product.id].showVariants = false
if DisplayProperties.showVariants scope.product.id
DisplayProperties.setShowVariants scope.product.id, false
element.removeClass "icon-chevron-down"
element.addClass "icon-chevron-right"
else
scope.displayProperties[scope.product.id].showVariants = true
DisplayProperties.setShowVariants scope.product.id, true
element.removeClass "icon-chevron-right"
element.addClass "icon-chevron-down"

View File

@@ -0,0 +1,9 @@
angular.module("ofn.admin").directive "ofnTrackVariantOverride", (DirtyVariantOverrides) ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
ngModel.$parsers.push (viewValue) ->
if ngModel.$dirty
variantOverride = scope.variantOverrides[scope.hub.id][scope.variant.id]
DirtyVariantOverrides.add variantOverride
scope.displayDirty()
viewValue

View File

@@ -0,0 +1,12 @@
angular.module("admin.enterprises")
.controller "changeTypeFormCtrl", ($scope, enterprise) ->
$scope.sells = enterprise.sells
$scope.producer_profile_only = enterprise.producer_profile_only
$scope.submitted = false
$scope.valid = (form) ->
$scope.submitted = !form.$valid
form.$valid
$scope.submit = (form) ->
event.preventDefault() unless $scope.valid(form)

View File

@@ -1,11 +1,22 @@
angular.module("admin.enterprises")
.controller "enterpriseCtrl", ($scope, Enterprise, PaymentMethods, ShippingMethods) ->
.controller "enterpriseCtrl", ($scope, NavigationCheck, Enterprise, PaymentMethods, ShippingMethods, SideMenu) ->
$scope.Enterprise = Enterprise.enterprise
$scope.PaymentMethods = PaymentMethods.paymentMethods
$scope.ShippingMethods = ShippingMethods.shippingMethods
$scope.navClear = NavigationCheck.clear
# htmlVariable is used by textAngular wysiwyg for the long descrtiption.
$scope.pristineEmail = $scope.Enterprise.email
$scope.menu = SideMenu
for PaymentMethod in $scope.PaymentMethods
PaymentMethod.selected = if PaymentMethod.id in $scope.Enterprise.payment_method_ids then true else false
# Provide a callback for generating warning messages displayed before leaving the page. This is passed in
# from a directive "nav-check" in the page - if we pass it here it will be called in the test suite,
# and on all new uses of this contoller, and we might not want that .
$scope.enterpriseNavCallback = ->
if $scope.enterprise.$dirty
"Your changes to the enterprise are not saved yet."
for payment_method in $scope.PaymentMethods
payment_method.selected = payment_method.id in $scope.Enterprise.payment_method_ids
$scope.paymentMethodsColor = ->
if $scope.PaymentMethods.length > 0
@@ -14,13 +25,13 @@ angular.module("admin.enterprises")
"red"
$scope.selectedPaymentMethodsCount = ->
$scope.PaymentMethods.reduce (count, PaymentMethod) ->
count++ if PaymentMethod.selected
$scope.PaymentMethods.reduce (count, payment_method) ->
count++ if payment_method.selected
count
, 0
for ShippingMethod in $scope.ShippingMethods
ShippingMethod.selected = if ShippingMethod.id in $scope.Enterprise.shipping_method_ids then true else false
for shipping_method in $scope.ShippingMethods
shipping_method.selected = shipping_method.id in $scope.Enterprise.shipping_method_ids
$scope.shippingMethodsColor = ->
if $scope.ShippingMethods.length > 0
@@ -29,7 +40,29 @@ angular.module("admin.enterprises")
"red"
$scope.selectedShippingMethodsCount = ->
$scope.ShippingMethods.reduce (count, ShippingMethod) ->
count++ if ShippingMethod.selected
$scope.ShippingMethods.reduce (count, shipping_method) ->
count++ if shipping_method.selected
count
, 0
, 0
$scope.$watch "Enterprise.is_primary_producer", (newValue, oldValue) ->
if !newValue && $scope.Enterprise.sells == "none"
$scope.menu.hide_item_by_name('Enterprise Fees')
else
$scope.menu.show_item_by_name('Enterprise Fees')
$scope.$watch "Enterprise.sells", (newValue, oldValue) ->
if newValue == "none"
$scope.menu.hide_item_by_name('Shipping Methods')
$scope.menu.hide_item_by_name('Payment Methods')
$scope.menu.hide_item_by_name('Shop Preferences')
if $scope.Enterprise.is_primary_producer
$scope.menu.show_item_by_name('Enterprise Fees')
else
$scope.menu.hide_item_by_name('Enterprise Fees')
else
$scope.menu.show_item_by_name('Shipping Methods')
$scope.menu.show_item_by_name('Payment Methods')
$scope.menu.show_item_by_name('Shop Preferences')
$scope.menu.show_item_by_name('Enterprise Fees')

View File

@@ -0,0 +1,21 @@
angular.module("admin.enterprises")
.controller "sideMenuCtrl", ($scope, Enterprise, SideMenu) ->
$scope.Enterprise = Enterprise.enterprise
$scope.menu = SideMenu
$scope.select = SideMenu.select
$scope.menu.setItems [
{ name: 'Primary Details', icon_class: "icon-user" }
{ name: 'Address', icon_class: "icon-map-marker" }
{ name: 'Contact', icon_class: "icon-phone" }
{ name: 'Social', icon_class: "icon-twitter" }
{ name: 'About', icon_class: "icon-pencil" }
{ name: 'Business Details', icon_class: "icon-briefcase" }
{ name: 'Images', icon_class: "icon-picture" }
{ name: "Shipping Methods", icon_class: "icon-truck" }
{ name: "Payment Methods", icon_class: "icon-money" }
{ name: "Enterprise Fees", icon_class: "icon-tasks" }
{ name: "Shop Preferences", icon_class: "icon-shopping-cart" }
]
$scope.select(0)

View File

@@ -1 +1 @@
angular.module("admin.enterprises", ["admin.payment_methods", "admin.shipping_methods"])
angular.module("admin.enterprises", [

View File

@@ -1,4 +1,5 @@
angular.module("admin.enterprises")
# Populate Enterprise.enterprise with enterprise json array from the page.
.factory 'Enterprise', (enterprise) ->
new class Enterprise
enterprise: enterprise
enterprise: enterprise

View File

@@ -1,4 +1,4 @@
angular.module("ofn.admin").filter "category", ($filter) ->
return (products, taxonID) ->
return products if taxonID == "0"
return $filter('filter')( products, { category: taxonID }, true )
return $filter('filter')( products, { category_id: taxonID }, true )

View File

@@ -0,0 +1,4 @@
angular.module("ofn.admin").filter "hubPermissions", ($filter) ->
return (products, hubPermissions, hub_id) ->
return [] if !hub_id
return $filter('filter')(products, ((product) -> hubPermissions[hub_id].indexOf(product.producer_id) > -1), true)

View File

@@ -1,4 +1,4 @@
angular.module("ofn.admin").filter "producer", ($filter) ->
return (products, producerID) ->
return products if producerID == "0"
$filter('filter')( products, { producer: producerID }, true )
$filter('filter')( products, { producer_id: producerID }, true )

View File

@@ -1,4 +1,4 @@
angular.module('order_cycle', ['ngResource'])
angular.module('admin.order_cycles', ['ngResource'])
.controller('AdminCreateOrderCycleCtrl', ['$scope', 'OrderCycle', 'Enterprise', 'EnterpriseFee', ($scope, OrderCycle, Enterprise, EnterpriseFee) ->
$scope.enterprises = Enterprise.index()
$scope.supplied_products = Enterprise.supplied_products
@@ -162,234 +162,6 @@ angular.module('order_cycle', ['ngResource'])
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
])
.factory('OrderCycle', ['$resource', '$window', ($resource, $window) ->
OrderCycle = $resource '/admin/order_cycles/:order_cycle_id.json', {}, {
'index': { method: 'GET', isArray: true}
'create': { method: 'POST'}
'update': { method: 'PUT'}}
{
order_cycle:
incoming_exchanges: []
outgoing_exchanges: []
coordinator_fees: []
loaded: false
exchangeSelectedVariants: (exchange) ->
numActiveVariants = 0
numActiveVariants++ for id, active of exchange.variants when active
numActiveVariants
exchangeDirection: (exchange) ->
if this.order_cycle.incoming_exchanges.indexOf(exchange) == -1 then 'outgoing' else 'incoming'
toggleProducts: (exchange) ->
exchange.showProducts = !exchange.showProducts
setExchangeVariants: (exchange, variants, selected) ->
exchange.variants[variant] = selected for variant in variants
addSupplier: (new_supplier_id) ->
this.order_cycle.incoming_exchanges.push({enterprise_id: new_supplier_id, incoming: true, active: true, variants: {}, enterprise_fees: []})
addDistributor: (new_distributor_id) ->
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
addCoordinatorFee: ->
this.order_cycle.coordinator_fees.push({})
removeCoordinatorFee: (index) ->
this.order_cycle.coordinator_fees.splice(index, 1)
addExchangeFee: (exchange) ->
exchange.enterprise_fees.push({})
removeExchangeFee: (exchange, index) ->
exchange.enterprise_fees.splice(index, 1)
productSuppliedToOrderCycle: (product) ->
product_variant_ids = (variant.id for variant in product.variants)
variant_ids = [product.master_id].concat(product_variant_ids)
incomingExchangesVariants = this.incomingExchangesVariants()
# TODO: This is an O(n^2) implementation of set intersection and thus is slooow.
# Use a better algorithm if needed.
# Also, incomingExchangesVariants is called every time, when it only needs to be
# called once per change to incoming variants. Some sort of caching?
ids = (variant_id for variant_id in variant_ids when incomingExchangesVariants.indexOf(variant_id) != -1)
ids.length > 0
variantSuppliedToOrderCycle: (variant) ->
this.incomingExchangesVariants().indexOf(variant.id) != -1
incomingExchangesVariants: ->
variant_ids = []
for exchange in this.order_cycle.incoming_exchanges
variant_ids.push(parseInt(id)) for id, active of exchange.variants when active
variant_ids
participatingEnterpriseIds: ->
suppliers = (exchange.enterprise_id for exchange in this.order_cycle.incoming_exchanges)
distributors = (exchange.enterprise_id for exchange in this.order_cycle.outgoing_exchanges)
jQuery.unique(suppliers.concat(distributors)).sort()
removeDistributionOfVariant: (variant_id) ->
for exchange in this.order_cycle.outgoing_exchanges
exchange.variants[variant_id] = false
load: (order_cycle_id) ->
service = this
OrderCycle.get {order_cycle_id: order_cycle_id}, (oc) ->
angular.extend(service.order_cycle, oc)
service.order_cycle.incoming_exchanges = []
service.order_cycle.outgoing_exchanges = []
for exchange in service.order_cycle.exchanges
if exchange.incoming
angular.extend(exchange, {enterprise_id: exchange.sender_id, active: true})
delete(exchange.receiver_id)
service.order_cycle.incoming_exchanges.push(exchange)
else
angular.extend(exchange, {enterprise_id: exchange.receiver_id, active: true})
delete(exchange.sender_id)
service.order_cycle.outgoing_exchanges.push(exchange)
delete(service.order_cycle.exchanges)
service.loaded = true
this.order_cycle
create: ->
oc = new OrderCycle({order_cycle: this.dataForSubmit()})
oc.$create (data) ->
if data['success']
$window.location = '/admin/order_cycles'
else
console.log('Failed to create order cycle')
update: ->
oc = new OrderCycle({order_cycle: this.dataForSubmit()})
oc.$update {order_cycle_id: this.order_cycle.id}, (data) ->
if data['success']
$window.location = '/admin/order_cycles'
else
console.log('Failed to update order cycle')
dataForSubmit: ->
data = this.deepCopy()
data = this.removeInactiveExchanges(data)
data = this.translateCoordinatorFees(data)
data = this.translateExchangeFees(data)
data
deepCopy: ->
data = angular.extend({}, this.order_cycle)
# Copy exchanges
data.incoming_exchanges = (angular.extend {}, exchange for exchange in this.order_cycle.incoming_exchanges) if this.order_cycle.incoming_exchanges?
data.outgoing_exchanges = (angular.extend {}, exchange for exchange in this.order_cycle.outgoing_exchanges) if this.order_cycle.outgoing_exchanges?
# Copy exchange fees
all_exchanges = (data.incoming_exchanges || []) + (data.outgoing_exchanges || [])
for exchange in all_exchanges
if exchange.enterprise_fees?
exchange.enterprise_fees = (angular.extend {}, fee for fee in exchange.enterprise_fees)
data
removeInactiveExchanges: (order_cycle) ->
order_cycle.incoming_exchanges =
(exchange for exchange in order_cycle.incoming_exchanges when exchange.active)
order_cycle.outgoing_exchanges =
(exchange for exchange in order_cycle.outgoing_exchanges when exchange.active)
order_cycle
translateCoordinatorFees: (order_cycle) ->
order_cycle.coordinator_fee_ids = (fee.id for fee in order_cycle.coordinator_fees)
delete order_cycle.coordinator_fees
order_cycle
translateExchangeFees: (order_cycle) ->
for exchange in order_cycle.incoming_exchanges
exchange.enterprise_fee_ids = (fee.id for fee in exchange.enterprise_fees)
delete exchange.enterprise_fees
for exchange in order_cycle.outgoing_exchanges
exchange.enterprise_fee_ids = (fee.id for fee in exchange.enterprise_fees)
delete exchange.enterprise_fees
order_cycle
}])
.factory('Enterprise', ['$resource', ($resource) ->
Enterprise = $resource('/admin/enterprises/:enterprise_id.json', {}, {'index': {method: 'GET', isArray: true}})
{
Enterprise: Enterprise
enterprises: {}
supplied_products: []
loaded: false
index: ->
service = this
Enterprise.index (data) ->
for enterprise in data
service.enterprises[enterprise.id] = enterprise
for product in enterprise.supplied_products
service.supplied_products.push(product)
service.loaded = true
this.enterprises
suppliedVariants: (enterprise_id) ->
vs = (this.variantsOf(product) for product in this.enterprises[enterprise_id].supplied_products)
[].concat vs...
variantsOf: (product) ->
if product.variants.length > 0
variant.id for variant in product.variants
else
[product.master_id]
totalVariants: (enterprise) ->
numVariants = 0
if enterprise
counts = for product in enterprise.supplied_products
numVariants += if product.variants.length == 0 then 1 else product.variants.length
numVariants
}])
.factory('EnterpriseFee', ['$resource', ($resource) ->
EnterpriseFee = $resource('/admin/enterprise_fees/:enterprise_fee_id.json', {}, {'index': {method: 'GET', isArray: true}})
{
EnterpriseFee: EnterpriseFee
enterprise_fees: {}
loaded: false
index: ->
service = this
EnterpriseFee.index (data) ->
service.enterprise_fees = data
service.loaded = true
forEnterprise: (enterprise_id) ->
enterprise_fee for enterprise_fee in this.enterprise_fees when enterprise_fee.enterprise_id == enterprise_id
}])
.directive('datetimepicker', ['$parse', ($parse) ->
(scope, element, attrs) ->
# using $parse instead of scope[attrs.datetimepicker] for cases

View File

@@ -0,0 +1,43 @@
angular.module('admin.order_cycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, OrderCycle, Enterprise, EnterpriseFee) ->
$scope.enterprises = Enterprise.index (enterprises) =>
$scope.init(enterprises)
$scope.enterprise_fees = EnterpriseFee.index()
$scope.order_cycle = OrderCycle.order_cycle
$scope.init = (enterprises) ->
enterprise = enterprises[Object.keys(enterprises)[0]]
OrderCycle.addSupplier enterprise.id
OrderCycle.addDistributor enterprise.id
$scope.outgoing_exchange = OrderCycle.order_cycle.outgoing_exchanges[0]
# All variants start as checked
OrderCycle.setExchangeVariants(OrderCycle.order_cycle.incoming_exchanges[0],
Enterprise.suppliedVariants(enterprise.id), true)
OrderCycle.order_cycle.coordinator_id = enterprise.id
$scope.loaded = ->
Enterprise.loaded && EnterpriseFee.loaded
$scope.removeDistributionOfVariant = angular.noop
$scope.setExchangeVariants = (exchange, variants, selected) ->
OrderCycle.setExchangeVariants(exchange, variants, selected)
$scope.suppliedVariants = (enterprise_id) ->
Enterprise.suppliedVariants(enterprise_id)
$scope.addCoordinatorFee = ($event) ->
$event.preventDefault()
OrderCycle.addCoordinatorFee()
$scope.removeCoordinatorFee = ($event, index) ->
$event.preventDefault()
OrderCycle.removeCoordinatorFee(index)
$scope.enterpriseFeesForEnterprise = (enterprise_id) ->
EnterpriseFee.forEnterprise(parseInt(enterprise_id))
$scope.submit = ->
OrderCycle.mirrorIncomingToOutgoingProducts()
OrderCycle.create()

View File

@@ -0,0 +1,37 @@
angular.module('admin.order_cycles').controller "AdminSimpleEditOrderCycleCtrl", ($scope, $location, OrderCycle, Enterprise, EnterpriseFee) ->
$scope.orderCycleId = ->
$location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1]
$scope.enterprises = Enterprise.index()
$scope.enterprise_fees = EnterpriseFee.index()
$scope.order_cycle = OrderCycle.load $scope.orderCycleId(), (order_cycle) =>
$scope.init()
$scope.loaded = ->
Enterprise.loaded && EnterpriseFee.loaded && OrderCycle.loaded
$scope.init = ->
$scope.outgoing_exchange = OrderCycle.order_cycle.outgoing_exchanges[0]
$scope.enterpriseFeesForEnterprise = (enterprise_id) ->
EnterpriseFee.forEnterprise(parseInt(enterprise_id))
$scope.removeDistributionOfVariant = angular.noop
$scope.setExchangeVariants = (exchange, variants, selected) ->
OrderCycle.setExchangeVariants(exchange, variants, selected)
$scope.suppliedVariants = (enterprise_id) ->
Enterprise.suppliedVariants(enterprise_id)
$scope.addCoordinatorFee = ($event) ->
$event.preventDefault()
OrderCycle.addCoordinatorFee()
$scope.removeCoordinatorFee = ($event, index) ->
$event.preventDefault()
OrderCycle.removeCoordinatorFee(index)
$scope.submit = ->
OrderCycle.mirrorIncomingToOutgoingProducts()
OrderCycle.update()

View File

@@ -0,0 +1,43 @@
angular.module('admin.order_cycles').factory('Enterprise', ($resource) ->
Enterprise = $resource('/admin/enterprises/for_order_cycle/:enterprise_id.json', {}, {'index': {method: 'GET', isArray: true}})
{
Enterprise: Enterprise
enterprises: {}
supplied_products: []
loaded: false
index: (callback=null) ->
service = this
Enterprise.index (data) ->
for enterprise in data
service.enterprises[enterprise.id] = enterprise
for product in enterprise.supplied_products
service.supplied_products.push(product)
service.loaded = true
(callback || angular.noop)(service.enterprises)
this.enterprises
suppliedVariants: (enterprise_id) ->
vs = (this.variantsOf(product) for product in this.enterprises[enterprise_id].supplied_products)
[].concat vs...
variantsOf: (product) ->
if product.variants.length > 0
variant.id for variant in product.variants
else
[product.master_id]
totalVariants: (enterprise) ->
numVariants = 0
if enterprise
counts = for product in enterprise.supplied_products
numVariants += if product.variants.length == 0 then 1 else product.variants.length
numVariants
})

View File

@@ -0,0 +1,18 @@
angular.module('admin.order_cycles').factory('EnterpriseFee', ($resource) ->
EnterpriseFee = $resource('/admin/enterprise_fees/:enterprise_fee_id.json', {}, {'index': {method: 'GET', isArray: true}})
{
EnterpriseFee: EnterpriseFee
enterprise_fees: {}
loaded: false
index: ->
service = this
EnterpriseFee.index (data) ->
service.enterprise_fees = data
service.loaded = true
forEnterprise: (enterprise_id) ->
enterprise_fee for enterprise_fee in this.enterprise_fees when enterprise_fee.enterprise_id == enterprise_id
})

View File

@@ -0,0 +1,179 @@
angular.module('admin.order_cycles').factory('OrderCycle', ($resource, $window) ->
OrderCycle = $resource '/admin/order_cycles/:order_cycle_id.json', {}, {
'index': { method: 'GET', isArray: true}
'create': { method: 'POST'}
'update': { method: 'PUT'}}
{
order_cycle:
incoming_exchanges: []
outgoing_exchanges: []
coordinator_fees: []
loaded: false
exchangeSelectedVariants: (exchange) ->
numActiveVariants = 0
numActiveVariants++ for id, active of exchange.variants when active
numActiveVariants
exchangeDirection: (exchange) ->
if this.order_cycle.incoming_exchanges.indexOf(exchange) == -1 then 'outgoing' else 'incoming'
toggleProducts: (exchange) ->
exchange.showProducts = !exchange.showProducts
setExchangeVariants: (exchange, variants, selected) ->
exchange.variants[variant] = selected for variant in variants
addSupplier: (new_supplier_id) ->
this.order_cycle.incoming_exchanges.push({enterprise_id: new_supplier_id, incoming: true, active: true, variants: {}, enterprise_fees: []})
addDistributor: (new_distributor_id) ->
this.order_cycle.outgoing_exchanges.push({enterprise_id: new_distributor_id, incoming: false, active: true, variants: {}, enterprise_fees: []})
removeExchange: (exchange) ->
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({})
removeCoordinatorFee: (index) ->
this.order_cycle.coordinator_fees.splice(index, 1)
addExchangeFee: (exchange) ->
exchange.enterprise_fees.push({})
removeExchangeFee: (exchange, index) ->
exchange.enterprise_fees.splice(index, 1)
productSuppliedToOrderCycle: (product) ->
product_variant_ids = (variant.id for variant in product.variants)
variant_ids = [product.master_id].concat(product_variant_ids)
incomingExchangesVariants = this.incomingExchangesVariants()
# TODO: This is an O(n^2) implementation of set intersection and thus is slooow.
# Use a better algorithm if needed.
# Also, incomingExchangesVariants is called every time, when it only needs to be
# called once per change to incoming variants. Some sort of caching?
ids = (variant_id for variant_id in variant_ids when incomingExchangesVariants.indexOf(variant_id) != -1)
ids.length > 0
variantSuppliedToOrderCycle: (variant) ->
this.incomingExchangesVariants().indexOf(variant.id) != -1
incomingExchangesVariants: ->
variant_ids = []
for exchange in this.order_cycle.incoming_exchanges
variant_ids.push(parseInt(id)) for id, active of exchange.variants when active
variant_ids
participatingEnterpriseIds: ->
suppliers = (exchange.enterprise_id for exchange in this.order_cycle.incoming_exchanges)
distributors = (exchange.enterprise_id for exchange in this.order_cycle.outgoing_exchanges)
jQuery.unique(suppliers.concat(distributors)).sort()
removeDistributionOfVariant: (variant_id) ->
for exchange in this.order_cycle.outgoing_exchanges
exchange.variants[variant_id] = false
load: (order_cycle_id, callback=null) ->
service = this
OrderCycle.get {order_cycle_id: order_cycle_id}, (oc) ->
angular.extend(service.order_cycle, oc)
service.order_cycle.incoming_exchanges = []
service.order_cycle.outgoing_exchanges = []
for exchange in service.order_cycle.exchanges
if exchange.incoming
angular.extend(exchange, {enterprise_id: exchange.sender_id, active: true})
delete(exchange.receiver_id)
service.order_cycle.incoming_exchanges.push(exchange)
else
angular.extend(exchange, {enterprise_id: exchange.receiver_id, active: true})
delete(exchange.sender_id)
service.order_cycle.outgoing_exchanges.push(exchange)
delete(service.order_cycle.exchanges)
service.loaded = true
(callback || angular.noop)(service.order_cycle)
this.order_cycle
create: ->
oc = new OrderCycle({order_cycle: this.dataForSubmit()})
oc.$create (data) ->
if data['success']
$window.location = '/admin/order_cycles'
else
console.log('Failed to create order cycle')
update: ->
oc = new OrderCycle({order_cycle: this.dataForSubmit()})
oc.$update {order_cycle_id: this.order_cycle.id}, (data) ->
if data['success']
$window.location = '/admin/order_cycles'
else
console.log('Failed to update order cycle')
dataForSubmit: ->
data = this.deepCopy()
data = this.removeInactiveExchanges(data)
data = this.translateCoordinatorFees(data)
data = this.translateExchangeFees(data)
data
deepCopy: ->
data = angular.extend({}, this.order_cycle)
# Copy exchanges
data.incoming_exchanges = (angular.extend {}, exchange for exchange in this.order_cycle.incoming_exchanges) if this.order_cycle.incoming_exchanges?
data.outgoing_exchanges = (angular.extend {}, exchange for exchange in this.order_cycle.outgoing_exchanges) if this.order_cycle.outgoing_exchanges?
# Copy exchange fees
all_exchanges = (data.incoming_exchanges || []) + (data.outgoing_exchanges || [])
for exchange in all_exchanges
if exchange.enterprise_fees?
exchange.enterprise_fees = (angular.extend {}, fee for fee in exchange.enterprise_fees)
data
removeInactiveExchanges: (order_cycle) ->
order_cycle.incoming_exchanges =
(exchange for exchange in order_cycle.incoming_exchanges when exchange.active)
order_cycle.outgoing_exchanges =
(exchange for exchange in order_cycle.outgoing_exchanges when exchange.active)
order_cycle
translateCoordinatorFees: (order_cycle) ->
order_cycle.coordinator_fee_ids = (fee.id for fee in order_cycle.coordinator_fees)
delete order_cycle.coordinator_fees
order_cycle
translateExchangeFees: (order_cycle) ->
for exchange in order_cycle.incoming_exchanges
exchange.enterprise_fee_ids = (fee.id for fee in exchange.enterprise_fees)
delete exchange.enterprise_fees
for exchange in order_cycle.outgoing_exchanges
exchange.enterprise_fee_ids = (fee.id for fee in exchange.enterprise_fees)
delete exchange.enterprise_fees
order_cycle
# In the simple UI, we don't list outgoing products. Instead, all products are considered
# part of both incoming and outgoing enterprises. This method mirrors the former to the
# latter **for order cycles with a single incoming and outgoing exchange only**.
mirrorIncomingToOutgoingProducts: ->
incoming = this.order_cycle.incoming_exchanges[0]
outgoing = this.order_cycle.outgoing_exchanges[0]
for id, active of incoming.variants
outgoing.variants[id] = active
})

View File

@@ -0,0 +1,74 @@
angular.module("ofn.admin").factory "BulkProducts", (PagedFetcher, dataFetcher) ->
new class BulkProducts
products: []
fetch: (filters, onComplete) ->
queryString = filters.reduce (qs,f) ->
return qs + "q[#{f.property.db_column}_#{f.predicate.predicate}]=#{f.value};"
, ""
url = "/api/products/bulk_products?page=::page::;per_page=20;#{queryString}"
PagedFetcher.fetch url, (data) => @addProducts data.products
cloneProduct: (product) ->
dataFetcher("/admin/products/" + product.permalink_live + "/clone.json").then (data) =>
# Ideally we would use Spree's built in respond_override helper here to redirect the
# user after a successful clone with .json in the accept headers
# However, at the time of writing there appears to be an issue which causes the
# respond_with block in the destroy action of Spree::Admin::Product to break
# when a respond_overrride for the clone action is used.
id = data.product.id
dataFetcher("/api/products/" + id + "?template=bulk_show").then (newProduct) =>
@addProducts [newProduct]
updateVariantLists: (serverProducts, productsWithUnsavedVariants) ->
for product in productsWithUnsavedVariants
server_product = @findProductInList(product.id, serverProducts)
product.variants = server_product.variants
@loadVariantUnitValues product
find: (id) ->
@findProductInList id, @products
findProductInList: (id, product_list) ->
products = (product for product in product_list when product.id == id)
if products.length == 0 then null else products[0]
addProducts: (products) ->
for product in products
@unpackProduct product
@products.push product
unpackProduct: (product) ->
#$scope.matchProducer product
@loadVariantUnit product
loadVariantUnit: (product) ->
product.variant_unit_with_scale =
if product.variant_unit && product.variant_unit_scale && product.variant_unit != 'items'
"#{product.variant_unit}_#{product.variant_unit_scale}"
else if product.variant_unit
product.variant_unit
else
null
@loadVariantUnitValues product if product.variants
@loadVariantUnitValue product, product.master if product.master
loadVariantUnitValues: (product) ->
for variant in product.variants
@loadVariantUnitValue product, variant
loadVariantUnitValue: (product, variant) ->
unit_value = @variantUnitValue product, variant
unit_value = if unit_value? then unit_value else ''
variant.unit_value_with_description = "#{unit_value} #{variant.unit_description || ''}".trim()
variantUnitValue: (product, variant) ->
if variant.unit_value?
if product.variant_unit_scale
variant.unit_value / product.variant_unit_scale
else
variant.unit_value
else
null

View File

@@ -0,0 +1,29 @@
angular.module("ofn.admin").factory "DirtyVariantOverrides", ($http) ->
new class DirtyVariantOverrides
dirtyVariantOverrides: {}
add: (vo) ->
@dirtyVariantOverrides[vo.hub_id] ||= {}
@dirtyVariantOverrides[vo.hub_id][vo.variant_id] = vo
count: ->
count = 0
for hub_id, vos of @dirtyVariantOverrides
count += Object.keys(vos).length
count
clear: ->
@dirtyVariantOverrides = {}
all: ->
all_vos = []
for hub_id, vos of @dirtyVariantOverrides
all_vos.push vo for variant_id, vo of vos
all_vos
save: ->
$http
method: "POST"
url: "/admin/variant_overrides/bulk_update"
data:
variant_overrides: @all()

View File

@@ -0,0 +1,14 @@
angular.module("ofn.admin").factory "DisplayProperties", ->
new class DisplayProperties
displayProperties: {}
showVariants: (product_id) ->
@initProduct product_id
@displayProperties[product_id].showVariants
setShowVariants: (product_id, showVariants) ->
@initProduct product_id
@displayProperties[product_id].showVariants = showVariants
initProduct: (product_id) ->
@displayProperties[product_id] ||= {showVariants: false}

View File

@@ -1,12 +1,17 @@
angular.module("ofn.admin").factory 'EnterpriseRelationships', ($http, enterprise_relationships) ->
new class EnterpriseRelationships
create_errors: ""
all_permissions: [
'add_to_order_cycle'
'manage_products'
]
constructor: ->
@enterprise_relationships = enterprise_relationships
create: (parent_id, child_id) ->
$http.post('/admin/enterprise_relationships', {enterprise_relationship: {parent_id: parent_id, child_id: child_id}}).success (data, status) =>
create: (parent_id, child_id, permissions) ->
permissions = (name for name, enabled of permissions when enabled)
$http.post('/admin/enterprise_relationships', {enterprise_relationship: {parent_id: parent_id, child_id: child_id, permissions_list: permissions}}).success (data, status) =>
@enterprise_relationships.unshift(data)
@create_errors = ""
@@ -16,3 +21,8 @@ angular.module("ofn.admin").factory 'EnterpriseRelationships', ($http, enterpris
delete: (er) ->
$http.delete('/admin/enterprise_relationships/' + er.id).success (data) =>
@enterprise_relationships.splice @enterprise_relationships.indexOf(er), 1
permission_presentation: (permission) ->
switch permission
when "add_to_order_cycle" then "to add to order cycle"
when "manage_products" then "to manage products"

View File

@@ -0,0 +1,18 @@
angular.module("ofn.admin").factory 'EnterpriseRoles', ($http, enterpriseRoles) ->
new class EnterpriseRoles
create_errors: ""
constructor: ->
@enterprise_roles = enterpriseRoles
create: (user_id, enterprise_id) ->
$http.post('/admin/enterprise_roles', {enterprise_role: {user_id: user_id, enterprise_id: enterprise_id}}).success (data, status) =>
@enterprise_roles.unshift(data)
@create_errors = ""
.error (response, status) =>
@create_errors = response.errors
delete: (er) ->
$http.delete('/admin/enterprise_roles/' + er.id).success (data) =>
@enterprise_roles.splice @enterprise_roles.indexOf(er), 1

View File

@@ -0,0 +1,13 @@
# Convert an array of objects into a hash, indexed by the objects' ids
#
# producers = [{id: 1, name: 'one'}, {id: 2, name: 'two'}]
# Indexer.index producers
# -> {1: {id: 1, name: 'one'}, 2: {id: 2, name: 'two'}}
angular.module("ofn.admin").factory 'Indexer', ->
new class Indexer
index: (data, key='id') ->
index = {}
for e in data
index[e[key]] = e
index

View File

@@ -0,0 +1,16 @@
angular.module("ofn.admin").factory "PagedFetcher", (dataFetcher) ->
new class PagedFetcher
# Given a URL like http://example.com/foo?page=::page::&per_page=20
# And the response includes an attribute pages with the number of pages to fetch
# Fetch each page async, and call the processData callback with the resulting data
fetch: (url, processData) ->
dataFetcher(@urlForPage(url, 1)).then (data) =>
processData data
if data.pages > 1
for page in [2..data.pages]
dataFetcher(@urlForPage(url, page)).then (data) ->
processData data
urlForPage: (url, page) ->
url.replace("::page::", page)

View File

@@ -0,0 +1,16 @@
angular.module("ofn.admin").factory "SpreeApiAuth", ($q, $http, SpreeApiKey) ->
new class SpreeApiAuth
authorise: ->
deferred = $q.defer()
$http.get("/api/users/authorise_api?token=" + SpreeApiKey)
.success (response) ->
if response?.success == "Use of API Authorised"
$http.defaults.headers.common["X-Spree-Token"] = SpreeApiKey
deferred.resolve()
.error (response) ->
error = response?.error || "You are unauthorised to access this page."
deferred.reject(error)
deferred.promise

View File

@@ -0,0 +1,26 @@
angular.module("ofn.admin").factory "StatusMessage", ($timeout) ->
new class StatusMessage
types:
progress: {timeout: false, style: {color: '#ff9906'}}
alert: {timeout: 5000, style: {color: 'grey'}}
notice: {timeout: false, style: {color: 'grey'}}
success: {timeout: 5000, style: {color: '#9fc820'}}
failure: {timeout: false, style: {color: '#da5354'}}
statusMessage:
text: ""
style: {}
display: (type, text) ->
@statusMessage.text = text
@statusMessage.style = @types[type].style
$timeout.cancel @statusMessage.timeout if @statusMessage.timeout
timeout = @types[type].timeout
if timeout
@statusMessage.timeout = $timeout =>
@clear()
, timeout, true
clear: ->
@statusMessage.text = ''
@statusMessage.style = {}

View File

@@ -1,15 +0,0 @@
angular.module("ofn.admin").factory "Taxons", (taxons, $filter) ->
new class Taxons
constructor: ->
@taxons = taxons
# For finding a single Taxon
findByID: (id) ->
$filter('filter')(@taxons, {id: id}, true)[0]
# For finding multiple Taxons represented by comma delimited string
findByIDs: (ids) ->
taxon for taxon in @taxons when taxon.id.toString() in ids.split(",")
findByTerm: (term) ->
$filter('filter')(@taxons, term)

View File

@@ -0,0 +1,4 @@
angular.module("ofn.admin").factory 'Users', (users) ->
new class Users
constructor: ->
@users = users

View File

@@ -0,0 +1,23 @@
angular.module("ofn.admin").factory "VariantOverrides", (variantOverrides, Indexer) ->
new class VariantOverrides
variantOverrides: {}
constructor: ->
for vo in variantOverrides
@variantOverrides[vo.hub_id] ||= {}
@variantOverrides[vo.hub_id][vo.variant_id] = vo
ensureDataFor: (hubs, products) ->
for hub in hubs
@variantOverrides[hub.id] ||= {}
for product in products
for variant in product.variants
@variantOverrides[hub.id][variant.id] ||=
variant_id: variant.id
hub_id: hub.id
price: ''
count_on_hand: ''
updateIds: (updatedVos) ->
for vo in updatedVos
@variantOverrides[vo.hub_id][vo.variant_id].id = vo.id

View File

@@ -0,0 +1,28 @@
angular.module("admin.side_menu")
.factory "SideMenu", ->
new class SideMenu
items: []
selected: null
setItems: (items) =>
@items = items
item.visible = true for item in @items
select: (index) =>
if index < @items.length
@selected.selected = false if @selected
@selected = @items[index]
@selected.selected = true
find_by_name: (name) =>
for item in @items when item.name is name
return item
null
hide_item_by_name: (name) =>
item = @find_by_name(name)
item.visible = false if item
show_item_by_name: (name) =>
item = @find_by_name(name)
item.visible = true if item

View File

@@ -0,0 +1 @@
angular.module("admin.side_menu", [])

View File

@@ -0,0 +1,30 @@
angular.module("admin.taxons").directive "ofnTaxonAutocomplete", (Taxons) ->
# Adapted from Spree's existing taxon autocompletion
scope: true
link: (scope,element,attrs) ->
multiple = scope.$eval attrs.multipleSelection
placeholder = attrs.placeholder
initalSelection = scope.$eval attrs.ngModel
setTimeout ->
element.select2
placeholder: placeholder
multiple: multiple
initSelection: (element, callback) ->
if multiple
callback Taxons.findByIDs(initalSelection)
else
callback Taxons.findByID(initalSelection)
query: (query) ->
query.callback { results: Taxons.findByTerm(query.term) }
formatResult: (taxon) ->
taxon.name
formatSelection: (taxon) ->
taxon.name
#Allows drag and drop
if multiple
element.select2("container").find("ul.select2-choices").sortable
containment: 'parent'
start: -> element.select2("onSortStart")
update: -> element.select2("onSortEnd")

View File

@@ -0,0 +1,19 @@
angular.module("admin.taxons").factory "Taxons", (taxons, $filter) ->
new class Taxons
taxons: taxons
taxonsByID: {}
constructor: ->
for taxon in @taxons
@taxonsByID[taxon.id] = taxon
# For finding a single Taxon
findByID: (id) ->
@taxonsByID[id]
# For finding multiple Taxons represented by comma delimited string
findByIDs: (ids) ->
@taxonsByID[taxon_id] for taxon_id in ids.split(",")
findByTerm: (term) ->
$filter('filter')(@taxons, term)

View File

@@ -0,0 +1 @@
angular.module("admin.taxons", [])

View File

@@ -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

View File

@@ -0,0 +1 @@
angular.module("admin.users", [])

View File

@@ -28,3 +28,10 @@ show_flash_error = function(message) {
}
}
}
$(document).ready(function(){
$('a.close').click(function(event){
event.preventDefault();
$(this).parent().slideUp(250);
});
});

View File

@@ -0,0 +1,10 @@
angular.module("admin.utils").directive "navCheckCallback", (NavigationCheck)->
restrict: 'A'
scope:
navCheckCallback: '&'
link: (scope,element,attributes) ->
# Provide a callback, otherwise this default will be used:
callback = scope.navCheckCallback()
callback ||= ->
"You will lose any unsaved work!"
NavigationCheck.register(callback)

View File

@@ -0,0 +1,47 @@
angular.module("admin.utils")
.factory "NavigationCheck", ($window, $rootScope) ->
new class NavigationCheck
callbacks = []
constructor: ->
if $window.addEventListener
$window.addEventListener "beforeunload", @onBeforeUnloadHandler
else
$window.onbeforeunload = @onBeforeUnloadHandler
$rootScope.$on "$locationChangeStart", @locationChangeStartHandler
# Action for regular browser navigation.
onBeforeUnloadHandler: ($event) =>
message = @getMessage()
if message
# following: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload
($event or $window.event).returnValue = message
message
# Action for angular navigation.
locationChangeStartHandler: ($event) =>
message = @getMessage()
if message and not $window.confirm(message)
$event.stopPropagation() if $event.stopPropagation
$event.preventDefault() if $event.preventDefault
$event.cancelBubble = true
$event.returnValue = false
# Runs callback functions to retreive most recently added non-empty message.
getMessage: ->
message = null
message = callback() ? message for callback in callbacks
message
register: (callback) =>
callbacks.push callback
clear: =>
if $window.addEventListener
$window.removeEventListener "beforeunload", @onBeforeUnloadHandler
else
$window.onbeforeunload = null
$rootScope.$on "$locationChangeStart", null

View File

@@ -0,0 +1 @@
angular.module("admin.utils", [])

View File

@@ -11,11 +11,12 @@
#= require lodash.underscore.js
#= require angular-scroll.min.js
#= require angular-google-maps.min.js
#= require angular-timer.min.js
#= require ../shared/mm-foundation-tpls-0.2.2.min.js
#= require ../shared/bindonce.min.js
#= require ../shared/ng-infinite-scroll.min.js
#= require ../shared/angular-local-storage.js
#= require angularjs-file-upload
#= require angular-rails-templates
#= require_tree ../templates

View File

@@ -13,8 +13,7 @@ $ ->
$(document).ready ->
$('#cart_adjustments').hide()
$('th.cart-adjustment-header').html('<a href="#">Distribution...</a>')
$('th.cart-adjustment-header a').click ->
$('#cart_adjustments').toggle()
$('th.cart-adjustment-header a').html('Distribution')
$(this).html('Item Handling Fees (included in item totals)')
false

View File

@@ -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

View File

@@ -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

View File

@@ -1,11 +1,28 @@
Darkswarm.controller "AccordionCtrl", ($scope, storage, $timeout, CurrentHub) ->
Darkswarm.controller "AccordionCtrl", ($scope, storage, $timeout, $document, CurrentHub) ->
$scope.accordion =
details: true
billing: false
shipping: false
payment: false
billing: false
$scope.accordionSections = ["details", "billing", "shipping", "payment"]
storage.bind $scope, "accordion", {storeName: "accordion_#{$scope.order.id}#{CurrentHub.hub.id}#{$scope.order.user_id}"}
$scope.show = (name)->
$scope.accordion[name] = true
$scope.show = (section)->
$scope.accordion[section] = true
$scope.$on 'purchaseFormInvalid', (event, form) ->
# Scroll to first invalid section
for section in $scope.accordionSections
if not form[section].$valid
$scope.show section
# If we call scrollTo() directly after show(), when one of the accordions above the
# scroll location is closed by show(), scrollTo() will scroll to the old location of
# the element. Putting this in a zero-length timeout is enough delay for the DOM to
# have updated.
$timeout ->
# Scrolling is confused by our position:fixed top bar - add an offset to scroll
# to the correct location, plus 5px buffer
offset_height = $("nav.top-bar").height() + 5
$document.scrollTo $("##{section}"), offset_height, 500
break

View File

@@ -1,22 +1,27 @@
Darkswarm.controller "CheckoutCtrl", ($scope, storage, Checkout, CurrentUser, CurrentHub) ->
$scope.Checkout = Checkout
$scope.submitted = false
# Bind to local storage
$scope.fieldsToBind = ["bill_address", "email", "payment_method_id", "shipping_method_id", "ship_address"]
prefix = "order_#{Checkout.order.id}#{CurrentUser?.id}#{CurrentHub.hub.id}"
for field in $scope.fieldsToBind
storage.bind $scope, "Checkout.order.#{field}",
storage.bind $scope, "Checkout.order.#{field}",
storeName: "#{prefix}_#{field}"
storage.bind $scope, "Checkout.ship_address_same_as_billing",
storage.bind $scope, "Checkout.ship_address_same_as_billing",
storeName: "#{prefix}_sameasbilling"
defaultValue: true
$scope.order = Checkout.order # Ordering is important
$scope.secrets = Checkout.secrets
$scope.enabled = if CurrentUser then true else false
$scope.enabled = !!CurrentUser
$scope.purchase = (event)->
$scope.purchase = (event, form) ->
event.preventDefault()
$scope.Checkout.submit()
$scope.submitted = true
if form.$valid
$scope.Checkout.submit()
else
$scope.$broadcast 'purchaseFormInvalid', form

View File

@@ -6,7 +6,7 @@ Darkswarm.controller "PaymentCtrl", ($scope, $timeout) ->
{key: "January", value: "1"},
{key: "February", value: "2"},
{key: "March", value: "3"},
{key: "April", value: "4"},
{key: "April", value: "4"},
{key: "May", value: "5"},
{key: "June", value: "6"},
{key: "July", value: "7"},
@@ -20,4 +20,8 @@ Darkswarm.controller "PaymentCtrl", ($scope, $timeout) ->
$scope.years = [moment().year()..(moment().year()+15)]
$scope.secrets.card_month = "1"
$scope.secrets.card_year = moment().year()
$timeout $scope.onTimeout
$scope.summary = ->
[$scope.Checkout.paymentMethod()?.name]
$timeout $scope.onTimeout

View File

@@ -3,5 +3,8 @@ Darkswarm.controller "ShippingCtrl", ($scope, $timeout, ShippingMethods) ->
$scope.ShippingMethods = ShippingMethods
$scope.name = "shipping"
$scope.nextPanel = "payment"
$scope.summary = ->
[$scope.Checkout.shippingMethod()?.name]
$timeout $scope.onTimeout

View File

@@ -0,0 +1,13 @@
angular.module('Darkswarm').controller "EnterpriseImageCtrl", ($scope, EnterpriseImageService) ->
$scope.imageStep = 'logo'
$scope.imageSteps = ['logo', 'promo']
$scope.imageUploader = EnterpriseImageService.imageUploader
$scope.imageSelect = (image_step) ->
EnterpriseImageService.imageSrc = null
$scope.imageStep = image_step
$scope.imageSrc = ->
EnterpriseImageService.imageSrc

View File

@@ -1,11 +1,14 @@
Darkswarm.controller "HubsCtrl", ($scope, Hubs, Search, $document, $rootScope, HashNavigation, FilterSelectorsService) ->
$scope.Hubs = Hubs
$scope.hubs = Hubs.visible
Darkswarm.controller "EnterprisesCtrl", ($scope, Enterprises, Search, $document, $rootScope, HashNavigation, FilterSelectorsService, EnterpriseModal) ->
$scope.Enterprises = Enterprises
$scope.totalActive = FilterSelectorsService.totalActive
$scope.clearAll = FilterSelectorsService.clearAll
$scope.filterText = FilterSelectorsService.filterText
$scope.FilterSelectorsService = FilterSelectorsService
$scope.query = Search.search()
$scope.openModal = EnterpriseModal.open
$scope.activeTaxons = []
$scope.show_profiles = false
$scope.filtersActive = false
$scope.$watch "query", (query)->
Search.search query

View File

@@ -1,12 +0,0 @@
Darkswarm.controller "ProducersCtrl", ($scope, Producers, $filter, FilterSelectorsService, Search) ->
$scope.Producers = Producers
$scope.totalActive = FilterSelectorsService.totalActive
$scope.clearAll = FilterSelectorsService.clearAll
$scope.filterText = FilterSelectorsService.filterText
$scope.FilterSelectorsService = FilterSelectorsService
$scope.filtersActive = false
$scope.activeTaxons = []
$scope.query = Search.search()
$scope.$watch "query", (query)->
Search.search query

View File

@@ -5,14 +5,13 @@ Darkswarm.controller "ProductsCtrl", ($scope, $rootScope, Products, OrderCycle,
$scope.clearAll = FilterSelectorsService.clearAll
$scope.filterText = FilterSelectorsService.filterText
$scope.FilterSelectorsService = FilterSelectorsService
$scope.filtersActive = true
$scope.limit = 3
$scope.ordering =
order: "primary_taxon.name"
$scope.order_cycle = OrderCycle.order_cycle
$scope.incrementLimit = ->
if $scope.limit < Products.products.length
$scope.limit = $scope.limit + 1
$scope.limit = $scope.limit + 1
$scope.searchKeypress = (e)->
code = e.keyCode || e.which

View File

@@ -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','contact','type','about','images','social']
$scope.countries = availableCountries
$scope.countryHasStates = ->
$scope.enterprise.country.states.length > 0

View File

@@ -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)

View File

@@ -1,3 +1,4 @@
Darkswarm.controller "ProducersTabCtrl", ($scope, CurrentHub, Enterprises) ->
# Injecting Enterprises so CurrentHub.producers is dereferenced
Darkswarm.controller "ProducersTabCtrl", ($scope, CurrentHub, Enterprises, EnterpriseModal) ->
# Injecting Enterprises so CurrentHub.producers is dereferenced.
# We should probably dereference here instead and separate out CurrentHub dereferencing from the Enterprise factory.
$scope.CurrentHub = CurrentHub

View File

@@ -1,18 +1,11 @@
Darkswarm.controller "TabsCtrl", ($scope, $rootScope, $location, OrderCycle) ->
# Return active if supplied path matches url hash path.
$scope.active = (path)->
if !OrderCycle.selected() and $location.hash() == "" and path == "about"
true
else
$location.hash() == path
$location.hash() == path
$scope.tabs = ["contact", "about", "groups", "producers"]
for tab in $scope.tabs
$scope[tab] =
path: tab
$scope.select = (tab)->
if $scope.active(tab.path)
# Toggle tab selected status by setting the url hash path.
$scope.select = (path)->
if $scope.active(path)
$location.hash ""
else
$location.hash tab.path
$location.hash path

View File

@@ -1,19 +1,19 @@
window.Darkswarm = angular.module("Darkswarm", ["ngResource",
'mm.foundation',
'angularLocalStorage',
'pasvaz.bindonce',
'infinite-scroll',
'angular-flash.service',
window.Darkswarm = angular.module("Darkswarm", ["ngResource",
'mm.foundation',
'angularLocalStorage',
'pasvaz.bindonce',
'infinite-scroll',
'angular-flash.service',
'templates',
'timer',
'ngSanitize',
'ngAnimate',
'google-maps',
'duScroll',
'angularFileUpload',
]).config ($httpProvider, $tooltipProvider, $locationProvider, $anchorScrollProvider) ->
$httpProvider.defaults.headers.post['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr('content')
$httpProvider.defaults.headers.put['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr('content')
$httpProvider.defaults.headers['common']['X-Requested-With'] = 'XMLHttpRequest'
$httpProvider.defaults.headers.post['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr('content')
$httpProvider.defaults.headers.put['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr('content')
$httpProvider.defaults.headers['common']['X-Requested-With'] = 'XMLHttpRequest'
$httpProvider.defaults.headers.common.Accept = "application/json, text/javascript, */*"
# This allows us to trigger these two events on tooltips
@@ -21,4 +21,3 @@ window.Darkswarm = angular.module("Darkswarm", ["ngResource",
# We manually handle our scrolling
$anchorScrollProvider.disableAutoScrolling()

View File

@@ -1,4 +1,4 @@
Darkswarm.directive "producerModal", ($modal)->
Darkswarm.directive "enterpriseModal", ($modal)->
restrict: 'E'
replace: true
template: "<a ng-transclude></a>"
@@ -6,5 +6,4 @@ Darkswarm.directive "producerModal", ($modal)->
link: (scope, elem, attrs, ctrl)->
elem.on "click", (ev)=>
ev.stopPropagation()
scope.modalInstance = $modal.open(controller: ctrl, templateUrl: 'producer_modal.html', scope: scope)
scope.modalInstance = $modal.open(controller: ctrl, templateUrl: 'enterprise_modal.html', scope: scope)

View File

@@ -1,8 +0,0 @@
Darkswarm.directive "hubModal", ($modal)->
restrict: 'E'
replace: true
template: "<a>{{enterprise.name}}</a>"
link: (scope, elem, attrs, ctrl)->
elem.on "click", (ev)=>
ev.stopPropagation()
scope.modalInstance = $modal.open(controller: ctrl, templateUrl: 'hub_modal.html', scope: scope)

View File

@@ -0,0 +1,7 @@
Darkswarm.directive "ofnInlineAlert", ->
restrict: 'A'
scope: true
link: (scope, elem, attrs) ->
scope.visible = true
scope.close = ->
scope.visible = false

View File

@@ -0,0 +1,13 @@
Darkswarm.directive "ofnRegistrationLimitModal", (Navigation, $modal, Loading) ->
restrict: 'A'
link: (scope, elem, attr)->
scope.modalInstance = $modal.open
templateUrl: 'registration/limit_reached.html'
windowClass: "login-modal register-modal xlarge"
backdrop: 'static'
scope.modalInstance.result.then scope.close, scope.close
scope.close = ->
Loading.message = "Taking you back to the home page"
Navigation.go "/"

View File

@@ -1,4 +1,5 @@
Darkswarm.filter "capitalize", ->
# Convert to basic sentence case.
(input, scope) ->
input = input.toLowerCase() if input?
input = input.toLowerCase() if input?
input.substring(0, 1).toUpperCase() + input.substring(1)

View File

@@ -1,9 +0,0 @@
Darkswarm.filter 'hubs', (Matcher)->
(hubs, text) ->
hubs ||= []
text ?= ""
hubs.filter (hub)=>
Matcher.match [
hub.name, hub.address.zipcode, hub.address.city, hub.address.state
], text

View File

@@ -1,6 +0,0 @@
Darkswarm.filter 'filterProducers', (hubsFilter)->
(producers, text) ->
producers ||= []
text ?= ""
hubsFilter(producers, text)

View File

@@ -0,0 +1,15 @@
Darkswarm.filter "localizeCurrency", (currencyConfig)->
# Convert number to string currency using injected currency configuration.
(amount) ->
# Set country code (eg. "US").
currency_code = if currencyConfig.display_currency then " " + currencyConfig.currency else ""
# Set decimal points, 2 or 0 if hide_cents.
decimals = if currencyConfig.hide_cents == "true" then 0 else 2
# We need to use parseFloat before toFixed as the amount should come in as a string.
amount_fixed = parseFloat(amount).toFixed(decimals)
# Build the final price string. TODO use spree decimal point and spacer character settings.
if currencyConfig.symbol_position == 'before'
currencyConfig.symbol + amount_fixed + currency_code
else
amount_fixed + " " + currencyConfig.symbol + currency_code

View File

@@ -0,0 +1,10 @@
Darkswarm.filter 'searchEnterprises', (Matcher)->
# Search multiple fields of enterprises for matching text fragment.
(enterprises, text) ->
enterprises ||= []
text ?= ""
enterprises.filter (enterprise)=>
Matcher.match [
enterprise.name, enterprise.address.zipcode, enterprise.address.city, enterprise.address.state
], text

View File

@@ -0,0 +1,8 @@
Darkswarm.filter 'showHubProfiles', ()->
# Filter hub_profile enterprises in or out.
(enterprises, show_profiles) ->
enterprises ||= []
show_profiles ?= false
enterprises.filter (enterprise)=>
show_profiles or enterprise.is_distributor

View File

@@ -1,13 +1,16 @@
Darkswarm.filter 'taxons', (Matcher)->
# Filter anything that responds to object.taxons, and/or object.primary_taxon
Darkswarm.filter 'taxons', ()->
# Filter anything that responds to object.taxons, object.supplied_taxon or object.primary_taxon.
(objects, ids) ->
objects ||= []
ids ?= []
if ids.length == 0
# No taxons selected, pass all objects through.
objects
else
objects.filter (obj)->
taxons = obj.taxons
taxons.concat obj.supplied_taxons if obj.supplied_taxons
# Combine object taxons with supplied taxons, if they exist.
taxons = taxons.concat obj.supplied_taxons if obj.supplied_taxons
# Match primary taxon if it exists, then taxon array.
obj.primary_taxon?.id in ids || taxons.some (taxon)->
taxon.id in ids

View File

@@ -1,7 +1,7 @@
window.FieldsetMixin = ($scope)->
$scope.next = (event = false)->
event.preventDefault() if event
$scope.show $scope.nextPanel
$scope.show $scope.nextPanel
$scope.onTimeout = ->
if $scope[$scope.name].$valid
@@ -20,7 +20,7 @@ window.FieldsetMixin = ($scope)->
not ($scope.dirty(path) and $scope.invalid(path))
$scope.dirty = (name)->
$scope.field(name).$dirty
$scope.field(name).$dirty || $scope.submitted
$scope.invalid = (name)->
$scope.field(name).$invalid
@@ -36,7 +36,6 @@ window.FieldsetMixin = ($scope)->
when "number" then "must be number"
when "email" then "must be email address"
#server_errors = $scope.Order.errors[path.replace('order.', '')]
#errors.push server_errors if server_errors?
(errors.filter (error) -> error?).join ", "
#server_errors = $scope.Order.errors[path.replace('order.', '')]
#errors.push server_errors if server_errors?
(errors.filter (error) -> error?).join ", "

View File

@@ -1,15 +1,17 @@
Darkswarm.factory "AuthenticationService", (Navigation, $modal, $location, Redirections)->
Darkswarm.factory "AuthenticationService", (Navigation, $modal, $location, Redirections, Loading)->
new class AuthenticationService
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
@@ -23,4 +25,9 @@ Darkswarm.factory "AuthenticationService", (Navigation, $modal, $location, Redir
active: Navigation.active
close: ->
Navigation.navigate "/"
if location.pathname == "/"
Navigation.navigate "/"
else
Loading.message = "Taking you back to the home page"
location.hash = ""
location.pathname = "/"

View File

@@ -3,7 +3,7 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http)->
new class Cart
dirty: false
order: CurrentOrder.order
line_items: CurrentOrder.order?.line_items || []
line_items: CurrentOrder.order?.line_items || []
constructor: ->
for line_item in @line_items
line_item.variant.line_item = line_item
@@ -22,13 +22,13 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http)->
# TODO what shall we do here?
data: =>
variants = {}
variants = {}
for li in @line_items_present()
variants[li.variant.id] =
variants[li.variant.id] =
quantity: li.quantity
max_quantity: li.max_quantity
{variants: variants}
saved: =>
@dirty = false
@@ -48,15 +48,15 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http)->
total: =>
@line_items_present().map (li)->
li.variant.getPrice()
li.variant.totalPrice()
.reduce (t, price)->
t + price
, 0
register_variant: (variant)=>
exists = @line_items.some (li)-> li.variant == variant
@create_line_item(variant) unless exists
@create_line_item(variant) unless exists
create_line_item: (variant)->
variant.line_item =
variant: variant

Some files were not shown because too many files have changed in this diff Show More