e9_vendors 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.markdown +6 -0
- data/Rakefile +1 -0
- data/app/controllers/e9_vendors/settings_controller.rb +11 -0
- data/app/controllers/e9_vendors/vendor_categories_controller.rb +36 -0
- data/app/controllers/e9_vendors/vendor_members_controller.rb +61 -0
- data/app/controllers/e9_vendors/vendor_proxies_controller.rb +38 -0
- data/app/controllers/e9_vendors/vendors_controller.rb +22 -0
- data/app/decorators/vendor_category_decorator.rb +10 -0
- data/app/decorators/vendor_member_decorator.rb +55 -0
- data/app/decorators/vendor_proxy_decorator.rb +74 -0
- data/app/decorators/vendors_decorator.rb +27 -0
- data/app/models/vendor.rb +23 -0
- data/app/models/vendor_category.rb +17 -0
- data/app/models/vendor_member.rb +21 -0
- data/app/models/vendor_proxy.rb +39 -0
- data/app/observers/vendor_member_observer.rb +17 -0
- data/app/observers/vendor_observer.rb +18 -0
- data/app/uploaders/logo_uploader.rb +14 -0
- data/app/views/e9_vendors/settings/_form.html.haml +18 -0
- data/app/views/e9_vendors/settings/show.html.haml +2 -0
- data/app/views/e9_vendors/vendor_categories/_form.html.haml +7 -0
- data/app/views/e9_vendors/vendor_categories/_table.html.haml +21 -0
- data/app/views/e9_vendors/vendor_categories/destroy.js.erb +3 -0
- data/app/views/e9_vendors/vendor_categories/edit.html.haml +2 -0
- data/app/views/e9_vendors/vendor_categories/index.html.haml +4 -0
- data/app/views/e9_vendors/vendor_categories/index.js.erb +1 -0
- data/app/views/e9_vendors/vendor_categories/new.html.haml +2 -0
- data/app/views/e9_vendors/vendor_members/_form.html.haml +49 -0
- data/app/views/e9_vendors/vendor_members/_table.html.haml +21 -0
- data/app/views/e9_vendors/vendor_members/_vendors.html.haml +24 -0
- data/app/views/e9_vendors/vendor_members/destroy.js.erb +3 -0
- data/app/views/e9_vendors/vendor_members/edit.html.haml +2 -0
- data/app/views/e9_vendors/vendor_members/index.html.haml +4 -0
- data/app/views/e9_vendors/vendor_members/index.js.erb +1 -0
- data/app/views/e9_vendors/vendor_members/new.html.haml +2 -0
- data/app/views/e9_vendors/vendor_members/widget_code.html.haml +3 -0
- data/app/views/e9_vendors/vendor_proxies/_form.html.haml +28 -0
- data/app/views/e9_vendors/vendor_proxies/_table.html.haml +16 -0
- data/app/views/e9_vendors/vendor_proxies/_table_row.html.haml +11 -0
- data/app/views/e9_vendors/vendor_proxies/destroy.js.erb +3 -0
- data/app/views/e9_vendors/vendor_proxies/edit.html.haml +2 -0
- data/app/views/e9_vendors/vendor_proxies/index.html.haml +1 -0
- data/app/views/e9_vendors/vendor_proxies/index.js.erb +1 -0
- data/app/views/e9_vendors/vendor_proxies/new.html.haml +2 -0
- data/app/views/e9_vendors/vendor_proxies/update.js.erb +7 -0
- data/app/views/e9_vendors/vendors/_form.html.haml +91 -0
- data/app/views/e9_vendors/vendors/_table.html.haml +20 -0
- data/app/views/e9_vendors/vendors/destroy.js.erb +3 -0
- data/app/views/e9_vendors/vendors/edit.html.haml +2 -0
- data/app/views/e9_vendors/vendors/index.html.haml +4 -0
- data/app/views/e9_vendors/vendors/index.js.erb +1 -0
- data/app/views/e9_vendors/vendors/new.html.haml +2 -0
- data/config/locales/vendorboon.en.yml +61 -0
- data/config/routes.rb +38 -0
- data/e9_vendors.gemspec +20 -0
- data/lib/e9_vendors.rb +24 -0
- data/lib/e9_vendors/controller.rb +18 -0
- data/lib/e9_vendors/model.rb +13 -0
- data/lib/e9_vendors/version.rb +3 -0
- data/lib/generators/e9_vendors/install_generator.rb +31 -0
- data/lib/generators/e9_vendors/templates/javascript.js +16 -0
- data/lib/generators/e9_vendors/templates/migration.rb +84 -0
- data/lib/generators/e9_vendors/templates/stylesheets/vb-widget-ie.scss +21 -0
- data/lib/generators/e9_vendors/templates/stylesheets/vb-widget.scss +151 -0
- metadata +129 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
%table.records
|
2
|
+
%thead
|
3
|
+
%tr
|
4
|
+
%th= resource_humanize(:name)
|
5
|
+
%th= resource_humanize(:vendor_category)
|
6
|
+
%th= e9_t(:actions)
|
7
|
+
%tbody
|
8
|
+
- if collection.empty?
|
9
|
+
%tr
|
10
|
+
%td{:colspan => 3}= e9_t(:no_records_text)
|
11
|
+
- else
|
12
|
+
- collection.each do |record|
|
13
|
+
%tr{:id => "ids_#{record.id}", :class => cycle('odd', 'even')}
|
14
|
+
%td.txt
|
15
|
+
= record.name
|
16
|
+
%td.txt
|
17
|
+
= record.vendor_categories.order(:name).map(&:name).join(", ").html_safe
|
18
|
+
%td.links
|
19
|
+
= link_to_edit_resource(record)
|
20
|
+
= link_to_destroy_resource(record)
|
@@ -0,0 +1 @@
|
|
1
|
+
$("#records_table").html("<%= escape_javascript(render('table', :collection => collection)) %>");
|
@@ -0,0 +1,61 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
# Translate model names. Used in Model.human_name().
|
4
|
+
models:
|
5
|
+
vendor_proxy: Vendor
|
6
|
+
vendor_category: Vendor Category
|
7
|
+
vendor_member: Member
|
8
|
+
|
9
|
+
# Translate model attribute names. Used in Model.human_attribute_name(attribute).
|
10
|
+
attributes:
|
11
|
+
vendor:
|
12
|
+
vendor_category: Category
|
13
|
+
discount_percentage: Default Member Discount
|
14
|
+
settings:
|
15
|
+
e9_vendors_email_to: Email To
|
16
|
+
e9_vendors_email_from: Email From
|
17
|
+
e9_vendors_email_subject: Email Subject
|
18
|
+
e9_vendors_email_intro: Email Introduction
|
19
|
+
e9_vendors_widget_title: Widget Title
|
20
|
+
e9_vendors_widget_form_title: Widget Form Title
|
21
|
+
e9_vendors_widget_form_text: Form Introduction
|
22
|
+
e9_vendors_widget_settings: Widget Settings
|
23
|
+
e9_vendors_widget_help: |
|
24
|
+
<h3>Variables usable in short and long descriptions:</h3>
|
25
|
+
<ul>
|
26
|
+
<li>{{member_name}}</li>
|
27
|
+
<li>{{member_nickname}}</li>
|
28
|
+
<li>{{vendor_discount_code}}</li>
|
29
|
+
<li>{{vendor_discount_percentage}}</li>
|
30
|
+
<li>{{vendor_landing_page}}</li>
|
31
|
+
<li>{{vendor_name}}</li>
|
32
|
+
<li>{{vendor_nickname}}</li>
|
33
|
+
<li>{{vendor_sales_email}}</li>
|
34
|
+
<li>{{vendor_sales_full_name}}</li>
|
35
|
+
<li>{{vendor_sales_phone}}</li>
|
36
|
+
<li>{{vendor_sales_title}}</li>
|
37
|
+
</ul>
|
38
|
+
|
39
|
+
e9:
|
40
|
+
e9_vendors:
|
41
|
+
vendor_members:
|
42
|
+
manage: Manage Vendors
|
43
|
+
get_widget_code: Get Widget Code
|
44
|
+
widget_code_title: Widget Code
|
45
|
+
vendor_proxies:
|
46
|
+
edit: Edit Vendor Details
|
47
|
+
index_title: "Manage Vendors for %{member}"
|
48
|
+
view_landing_page: View Landing Page
|
49
|
+
vendor_defaults_instructions: Leave Fields Below Blank to Use Default Values
|
50
|
+
vendor_default: "(Default: %{default_value})"
|
51
|
+
vendors:
|
52
|
+
widget_settings_legend: Widget Settings
|
53
|
+
settings:
|
54
|
+
index_title: Vendors Settings
|
55
|
+
vendorboon_widget_settings_legend: Widget Settings
|
56
|
+
widget_interpolation_instructions: |
|
57
|
+
<h3>Variables usable in all fields:</h3>
|
58
|
+
<ul>
|
59
|
+
<li>{{member_name}}</li>
|
60
|
+
<li>{{member_nickname}}</li>
|
61
|
+
</ul>
|
data/config/routes.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
|
3
|
+
base_path = 'directory'
|
4
|
+
admin_path= "admin/#{base_path}"
|
5
|
+
|
6
|
+
scope :path => admin_path, :module => :e9_vendors do
|
7
|
+
resource :settings, :only => [:show, :update], :as => :e9_vendors_settings
|
8
|
+
|
9
|
+
resources :vendor_categories, :path => :categories do
|
10
|
+
collection { post :update_order }
|
11
|
+
end
|
12
|
+
|
13
|
+
resources :vendors, :except => :show do
|
14
|
+
member do
|
15
|
+
post :upload_logo
|
16
|
+
delete :reset_logo
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
resources :vendor_members, :path => :members, :except => :show do
|
21
|
+
resources :vendor_proxies, :path => :vendors
|
22
|
+
member do
|
23
|
+
get :widget_code
|
24
|
+
post :upload_logo
|
25
|
+
delete :reset_logo
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
%w(
|
30
|
+
vendors
|
31
|
+
members
|
32
|
+
).each do |path|
|
33
|
+
get "/#{path}/:id", :to => redirect("/#{admin_path}/#{path}/%{id}/edit"), :constraints => { :id => /\d+/ }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
get "/#{base_path}/members/:id", :as => :vendor_member, :to => 'e9_vendors/vendor_members#show'
|
38
|
+
end
|
data/e9_vendors.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "e9_vendors/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "e9_vendors"
|
7
|
+
s.version = E9Vendors::VERSION
|
8
|
+
s.authors = ["Travis Cox"]
|
9
|
+
s.email = ["numbers1311407@gmail.com"]
|
10
|
+
s.homepage = "http://github.com/e9digital/e9_vendors"
|
11
|
+
s.summary = %q{Vendor directory with widget}
|
12
|
+
s.description = File.open('README.markdown').read rescue nil
|
13
|
+
|
14
|
+
s.rubyforge_project = "e9_vendors"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
end
|
data/lib/e9_vendors.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module E9Vendors
|
2
|
+
autoload :VERSION, 'e9_vendors/version'
|
3
|
+
autoload :Model, 'e9_vendors/model'
|
4
|
+
autoload :Controller, 'e9_vendors/controller'
|
5
|
+
|
6
|
+
def E9Vendors.configure
|
7
|
+
yield self
|
8
|
+
end
|
9
|
+
|
10
|
+
def E9Vendors.init!
|
11
|
+
end
|
12
|
+
|
13
|
+
class Engine < ::Rails::Engine
|
14
|
+
config.e9_vendors = E9Vendors
|
15
|
+
|
16
|
+
config.active_record.observers ||= []
|
17
|
+
config.active_record.observers |= [
|
18
|
+
:vendor_member_observer,
|
19
|
+
:vendor_observer
|
20
|
+
]
|
21
|
+
|
22
|
+
config.to_prepare { E9Vendors.init! }
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module E9Vendors::Controller
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
include E9Rails::Helpers::ResourceLinks
|
4
|
+
|
5
|
+
included do
|
6
|
+
defaults
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def defaults(hash = {})
|
11
|
+
super(hash.reverse_merge(:route_prefix => nil))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_index_breadcrumb
|
16
|
+
add_breadcrumb! @index_title || e9_t(:index_title), collection_path
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
|
4
|
+
module E9Vendors
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
|
9
|
+
def self.source_root
|
10
|
+
File.join(File.dirname(__FILE__), 'templates')
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.next_migration_number(dirname) #:nodoc:
|
14
|
+
if ActiveRecord::Base.timestamped_migrations
|
15
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
16
|
+
else
|
17
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_migration
|
22
|
+
migration_template 'migration.rb', 'db/migrate/create_e9_vendors.rb'
|
23
|
+
end
|
24
|
+
|
25
|
+
def copy_files
|
26
|
+
copy_file 'javascript.js', 'public/javascripts/e9_vendors.js'
|
27
|
+
directory 'stylesheets', 'app/stylesheets'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
;jQuery(function($) {
|
2
|
+
$("body.controller-admin-vendor-details .links a[href$=/edit]").live('click', function(e) {
|
3
|
+
e.preventDefault();
|
4
|
+
$.fn.colorbox({ href: $(this).attr('href') });
|
5
|
+
});
|
6
|
+
|
7
|
+
// NOTE this uses livequery
|
8
|
+
$("body.controller-admin-vendor-details form.edit_vendor_detail input[type=checkbox]").livequery('change', function(e) {
|
9
|
+
$(this).closest('form').callRemote();
|
10
|
+
});
|
11
|
+
|
12
|
+
$("body.controller-admin-associations .links a[href$=/widget_code]").live('click', function(e) {
|
13
|
+
e.preventDefault();
|
14
|
+
$.fn.colorbox({ transition:'none', html:"<h1>Widget Code</h1>" + $(this).next('.tooltip').html() });
|
15
|
+
});
|
16
|
+
});
|
@@ -0,0 +1,84 @@
|
|
1
|
+
class CreateE9Vendors < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :vendor_members, :force => true do |t|
|
4
|
+
t.string "name"
|
5
|
+
t.string "nickname"
|
6
|
+
t.string "address_1"
|
7
|
+
t.string "address_2"
|
8
|
+
t.string "city"
|
9
|
+
t.string "zipcode"
|
10
|
+
t.string "country"
|
11
|
+
t.string "contact_email"
|
12
|
+
t.string "contact_full_name"
|
13
|
+
t.string "contact_title"
|
14
|
+
t.string "contact_phone"
|
15
|
+
t.string "state"
|
16
|
+
t.text "website"
|
17
|
+
t.text "admin_notes"
|
18
|
+
t.string "logo"
|
19
|
+
t.string "md5_hash"
|
20
|
+
t.timestamps
|
21
|
+
end
|
22
|
+
|
23
|
+
create_table :vendor_categories, :force => true do |t|
|
24
|
+
t.string "name"
|
25
|
+
t.integer "position"
|
26
|
+
t.timestamps
|
27
|
+
end
|
28
|
+
|
29
|
+
create_table :vendor_categories_vendors, :force => true, :id => false do |t|
|
30
|
+
t.references :vendor_category, :vendor
|
31
|
+
end
|
32
|
+
|
33
|
+
create_table :vendor_proxies, :force => true do |t|
|
34
|
+
t.references :vendor, :vendor_member
|
35
|
+
t.boolean "display_on_widget", :default => true
|
36
|
+
t.string "discount_code"
|
37
|
+
t.string "sales_full_name"
|
38
|
+
t.string "sales_title"
|
39
|
+
t.string "sales_phone"
|
40
|
+
t.string "sales_email"
|
41
|
+
t.decimal "discount_percentage", :precision => 10, :scale => 2
|
42
|
+
t.text "landing_page"
|
43
|
+
t.timestamps
|
44
|
+
end
|
45
|
+
|
46
|
+
create_table :vendors, :force => true do |t|
|
47
|
+
t.references :vendor_category
|
48
|
+
t.integer "position"
|
49
|
+
t.string "name"
|
50
|
+
t.string "nickname"
|
51
|
+
t.string "address_1"
|
52
|
+
t.string "address_2"
|
53
|
+
t.string "city"
|
54
|
+
t.string "zipcode"
|
55
|
+
t.string "country"
|
56
|
+
t.string "contact_email"
|
57
|
+
t.string "contact_full_name"
|
58
|
+
t.string "contact_title"
|
59
|
+
t.string "contact_phone"
|
60
|
+
t.string "state"
|
61
|
+
t.text "website"
|
62
|
+
t.text "admin_notes"
|
63
|
+
t.boolean "display_on_widget_contact_form", :default => true
|
64
|
+
t.string "sales_email"
|
65
|
+
t.string "sales_full_name"
|
66
|
+
t.string "sales_title"
|
67
|
+
t.string "sales_phone"
|
68
|
+
t.text "short_description"
|
69
|
+
t.text "long_description"
|
70
|
+
t.text "default_landing_page"
|
71
|
+
t.decimal "discount_percentage", :precision => 10, :scale => 2
|
72
|
+
t.decimal "member_compensation", :precision => 10, :scale => 2
|
73
|
+
t.string "logo"
|
74
|
+
t.timestamps
|
75
|
+
end
|
76
|
+
|
77
|
+
add_column :settings, :e9_vendors_widget_title, :string
|
78
|
+
add_column :settings, :e9_vendors_widget_form_title, :string
|
79
|
+
add_column :settings, :e9_vendors_widget_form_text, :text
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.down
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
* html #vb-widget legend {
|
2
|
+
margin: 0px -8px 16px 0;
|
3
|
+
padding: 0;
|
4
|
+
}
|
5
|
+
|
6
|
+
html > #vb-widget p code {
|
7
|
+
*white-space: normal;
|
8
|
+
}
|
9
|
+
|
10
|
+
#vb-widget {
|
11
|
+
img {
|
12
|
+
-ms-interpolation-mode: bicubic;
|
13
|
+
}
|
14
|
+
textarea {
|
15
|
+
overflow: auto;
|
16
|
+
}
|
17
|
+
button {
|
18
|
+
position: relative;
|
19
|
+
top: 0.25em;
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,151 @@
|
|
1
|
+
@import "compass/utilities/general/clearfix";
|
2
|
+
|
3
|
+
#vb-widget {
|
4
|
+
$input_width: 300px;
|
5
|
+
$textarea_width: 390px;
|
6
|
+
$textarea_height: 250px;
|
7
|
+
$feedback_border_color: #dddddd;
|
8
|
+
$feedback_error_color: #8a1f11;
|
9
|
+
$feedback_error_border_color: #fbc2c3;
|
10
|
+
$feedback_error_background_color: #fbe3e4;
|
11
|
+
$feedback_success_color: #264409;
|
12
|
+
$feedback_success_border_color: #c6d880;
|
13
|
+
$feedback_success_background_color: #e6efc2;
|
14
|
+
$unfocused_border_color: #bbbbbb;
|
15
|
+
$focus_border_color: #666666;
|
16
|
+
$fieldset_border_color: #cccccc;
|
17
|
+
|
18
|
+
padding: 0.5em;
|
19
|
+
label {
|
20
|
+
display: block;
|
21
|
+
}
|
22
|
+
fieldset, .vb-field {
|
23
|
+
margin: 0 0 1em 0;
|
24
|
+
}
|
25
|
+
fieldset {
|
26
|
+
padding: 0.5em 0.75em 0.75em;
|
27
|
+
.vb-field {
|
28
|
+
margin: 0 0 0.25em 0;
|
29
|
+
}
|
30
|
+
&.vb-checkbox {
|
31
|
+
input[type=checkbox] {
|
32
|
+
margin-right: 0.3em;
|
33
|
+
}
|
34
|
+
label {
|
35
|
+
margin-right: 1.25em;
|
36
|
+
display: inline;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
input {
|
41
|
+
&[type=email], &[type=text], &[type=password] {
|
42
|
+
margin: 0 0 0.5em;
|
43
|
+
background-color: white;
|
44
|
+
padding: 5px;
|
45
|
+
}
|
46
|
+
&.title {
|
47
|
+
font-size: 1.25em;
|
48
|
+
}
|
49
|
+
&[type=checkbox], &[type=radio] {
|
50
|
+
position: relative;
|
51
|
+
top: 0.15em;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
textarea {
|
55
|
+
margin: 0.5em 0;
|
56
|
+
padding: 5px;
|
57
|
+
}
|
58
|
+
select {
|
59
|
+
margin: 0.5em 0;
|
60
|
+
}
|
61
|
+
.vb-heading, .vb-subheading {
|
62
|
+
margin: 0.25em 0;
|
63
|
+
}
|
64
|
+
.vb-vendor-category {
|
65
|
+
margin: 0 0 0.5em;
|
66
|
+
padding: 0.5em 0 0;
|
67
|
+
}
|
68
|
+
.vb-vendor-category-name {
|
69
|
+
font-size: 1.1em;
|
70
|
+
margin: 0 0 0.25em 0;
|
71
|
+
}
|
72
|
+
.vb-actions {
|
73
|
+
margin: 1em 0;
|
74
|
+
}
|
75
|
+
.vb-vendor {
|
76
|
+
@include clearfix;
|
77
|
+
margin-bottom: 1em;
|
78
|
+
.vb-vendor-content {
|
79
|
+
float: none;
|
80
|
+
.vb-vendor-name {
|
81
|
+
font-size: 1.25em;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
.vb-vendor-logo {
|
85
|
+
float: left;
|
86
|
+
margin-right: 0.5em;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
.vb-show-desc-link {
|
90
|
+
white-space: nowrap;
|
91
|
+
}
|
92
|
+
.vb-text {
|
93
|
+
padding: 0.25em 0;
|
94
|
+
}
|
95
|
+
input {
|
96
|
+
&.text, &.title, &[type=email], &[type=text], &[type=password] {
|
97
|
+
width: $input_width;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
textarea {
|
101
|
+
width: $textarea_width;
|
102
|
+
height: $textarea_height;
|
103
|
+
}
|
104
|
+
|
105
|
+
fieldset {
|
106
|
+
border: 1px solid $fieldset_border_color;
|
107
|
+
}
|
108
|
+
|
109
|
+
input.text,
|
110
|
+
input.title,
|
111
|
+
input[type=email],
|
112
|
+
input[type=text],
|
113
|
+
input[type=password],
|
114
|
+
textarea,
|
115
|
+
select {
|
116
|
+
border: 1px solid $unfocused_border_color;
|
117
|
+
&:focus {
|
118
|
+
border: 1px solid $focus_border_color;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
.vb-feedback.vb-feedback-error,
|
123
|
+
.vb-field-error input[type=email],
|
124
|
+
.vb-field-error input[type=text],
|
125
|
+
.vb-field-error input[type=password] {
|
126
|
+
background-color: $feedback_error_background_color;
|
127
|
+
border-color: $feedback_error_border_color;
|
128
|
+
}
|
129
|
+
.vb-feedback.vb-feedback-error, .vb-field-error {
|
130
|
+
color: $feedback_error_color;
|
131
|
+
a {
|
132
|
+
color: $feedback_error_color;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
.vb-feedback {
|
136
|
+
padding: 0.5em 0.75em;
|
137
|
+
margin-bottom: 1em;
|
138
|
+
border: 1px solid $fieldset_border_color;
|
139
|
+
&.vb-feedback-success {
|
140
|
+
background-color: $feedback_success_background_color;
|
141
|
+
border-color: $feedback_success_border_color;
|
142
|
+
color: $feedback_success_color;
|
143
|
+
a {
|
144
|
+
color: $feedback_success_color;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
.vb-feedback-error-field {
|
148
|
+
margin: 0.25em 0;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|