alchemy_crm 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +22 -0
- data/.travis.yml +12 -0
- data/Gemfile +21 -0
- data/Guardfile +13 -0
- data/LICENSE +24 -0
- data/README.md +82 -0
- data/Rakefile +27 -0
- data/alchemy_crm.gemspec +31 -0
- data/app/assets/images/.DS_Store +0 -0
- data/app/assets/images/alchemy_crm/.DS_Store +0 -0
- data/app/assets/images/alchemy_crm/contact-icons.png +0 -0
- data/app/assets/images/alchemy_crm/fill_content.gif +0 -0
- data/app/assets/images/alchemy_crm/group-icons.png +0 -0
- data/app/assets/images/alchemy_crm/mailing-icons.png +0 -0
- data/app/assets/images/alchemy_crm/module_icon.png +0 -0
- data/app/assets/images/alchemy_crm/newsletter-icons.png +0 -0
- data/app/assets/images/alchemy_crm/statistic.png +0 -0
- data/app/assets/images/alchemy_crm/tag-icons.png +0 -0
- data/app/assets/javascripts/alchemy_crm/alchemy_crm.base.js +65 -0
- data/app/assets/javascripts/alchemy_crm/scripts.js +2 -0
- data/app/assets/stylesheets/alchemy_crm/base.css.scss +473 -0
- data/app/assets/stylesheets/alchemy_crm/styles.css +3 -0
- data/app/controllers/alchemy_crm/admin/base_controller.rb +7 -0
- data/app/controllers/alchemy_crm/admin/contact_groups_controller.rb +23 -0
- data/app/controllers/alchemy_crm/admin/contacts_controller.rb +112 -0
- data/app/controllers/alchemy_crm/admin/deliveries_controller.rb +80 -0
- data/app/controllers/alchemy_crm/admin/elements_controller_extension.rb +32 -0
- data/app/controllers/alchemy_crm/admin/mailings_controller.rb +47 -0
- data/app/controllers/alchemy_crm/admin/newsletters_controller.rb +24 -0
- data/app/controllers/alchemy_crm/admin/tags_controller.rb +62 -0
- data/app/controllers/alchemy_crm/base_controller.rb +5 -0
- data/app/controllers/alchemy_crm/contacts_controller.rb +103 -0
- data/app/controllers/alchemy_crm/mailings_controller.rb +20 -0
- data/app/controllers/alchemy_crm/recipients_controller.rb +35 -0
- data/app/controllers/alchemy_crm/subscriptions_controller.rb +57 -0
- data/app/helpers/alchemy/pages_helper_extension.rb +18 -0
- data/app/helpers/alchemy_crm/admin/base_helper.rb +12 -0
- data/app/helpers/alchemy_crm/mailings_helper.rb +190 -0
- data/app/mailers/alchemy_crm/bounce_receiver.rb +13 -0
- data/app/mailers/alchemy_crm/contacts_mailer.rb +26 -0
- data/app/mailers/alchemy_crm/mailings_mailer.rb +48 -0
- data/app/mailers/alchemy_crm/subscriptions_mailer.rb +17 -0
- data/app/models/alchemy/essence_element_teaser.rb +19 -0
- data/app/models/alchemy_crm/contact.rb +264 -0
- data/app/models/alchemy_crm/contact_group.rb +26 -0
- data/app/models/alchemy_crm/contact_group_filter.rb +26 -0
- data/app/models/alchemy_crm/delivery.rb +57 -0
- data/app/models/alchemy_crm/element_extension.rb +28 -0
- data/app/models/alchemy_crm/mailing.rb +93 -0
- data/app/models/alchemy_crm/newsletter.rb +48 -0
- data/app/models/alchemy_crm/reaction.rb +9 -0
- data/app/models/alchemy_crm/recipient.rb +48 -0
- data/app/models/alchemy_crm/subscription.rb +8 -0
- data/app/views/alchemy/admin/elements/_view_not_found.text.erb +0 -0
- data/app/views/alchemy/admin/elements/fill.js.erb +13 -0
- data/app/views/alchemy/admin/elements/link.js.erb +1 -0
- data/app/views/alchemy/elements/_newsletter_article_editor.html.erb +4 -0
- data/app/views/alchemy/elements/_newsletter_article_view.html.erb +16 -0
- data/app/views/alchemy/elements/_newsletter_article_view.text.erb +5 -0
- data/app/views/alchemy/elements/_newsletter_greeting_editor.html.erb +3 -0
- data/app/views/alchemy/elements/_newsletter_greeting_view.html.erb +11 -0
- data/app/views/alchemy/elements/_newsletter_greeting_view.text.erb +6 -0
- data/app/views/alchemy/elements/_newsletter_signout_form_editor.html.erb +3 -0
- data/app/views/alchemy/elements/_newsletter_signout_form_view.html.erb +32 -0
- data/app/views/alchemy/elements/_newsletter_signout_mail_editor.html.erb +4 -0
- data/app/views/alchemy/elements/_newsletter_signup_form_editor.html.erb +6 -0
- data/app/views/alchemy/elements/_newsletter_signup_form_view.html.erb +78 -0
- data/app/views/alchemy/elements/_newsletter_signup_mail_editor.html.erb +4 -0
- data/app/views/alchemy/essences/_essence_date_view.text.erb +3 -0
- data/app/views/alchemy/essences/_essence_element_teaser_editor.html.erb +31 -0
- data/app/views/alchemy/essences/_essence_element_teaser_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_element_teaser_view.text.erb +3 -0
- data/app/views/alchemy/essences/_essence_richtext_view.text.erb +1 -0
- data/app/views/alchemy/essences/_essence_text_view.text.erb +1 -0
- data/app/views/alchemy/newsletter_layouts/_standard.html.erb +39 -0
- data/app/views/alchemy/newsletter_layouts/_standard.text.erb +5 -0
- data/app/views/alchemy_crm/admin/contact_groups/_contact_group.html.erb +32 -0
- data/app/views/alchemy_crm/admin/contact_groups/_filter.html.erb +30 -0
- data/app/views/alchemy_crm/admin/contact_groups/_form.html.erb +47 -0
- data/app/views/alchemy_crm/admin/contact_groups/_tag.html.erb +6 -0
- data/app/views/alchemy_crm/admin/contact_groups/add_filter.js.erb +9 -0
- data/app/views/alchemy_crm/admin/contact_groups/destroy.rjs +1 -0
- data/app/views/alchemy_crm/admin/contact_groups/edit.html.erb +1 -0
- data/app/views/alchemy_crm/admin/contact_groups/index.html.erb +41 -0
- data/app/views/alchemy_crm/admin/contact_groups/new.html.erb +1 -0
- data/app/views/alchemy_crm/admin/contacts/_contact.html.erb +44 -0
- data/app/views/alchemy_crm/admin/contacts/_form.html.erb +86 -0
- data/app/views/alchemy_crm/admin/contacts/destroy.rjs +1 -0
- data/app/views/alchemy_crm/admin/contacts/edit.html.erb +1 -0
- data/app/views/alchemy_crm/admin/contacts/import.html.erb +33 -0
- data/app/views/alchemy_crm/admin/contacts/import.js.erb +2 -0
- data/app/views/alchemy_crm/admin/contacts/index.html.erb +51 -0
- data/app/views/alchemy_crm/admin/contacts/new.html.erb +1 -0
- data/app/views/alchemy_crm/admin/contacts/vcf_import_result.html.erb +49 -0
- data/app/views/alchemy_crm/admin/deliveries/_delivery.html.erb +41 -0
- data/app/views/alchemy_crm/admin/deliveries/_form.html.erb +65 -0
- data/app/views/alchemy_crm/admin/deliveries/_recipient.html.erb +40 -0
- data/app/views/alchemy_crm/admin/deliveries/edit.html.erb +1 -0
- data/app/views/alchemy_crm/admin/deliveries/index.html.erb +29 -0
- data/app/views/alchemy_crm/admin/deliveries/new.html.erb +1 -0
- data/app/views/alchemy_crm/admin/deliveries/show.html.erb +66 -0
- data/app/views/alchemy_crm/admin/elements/link.rjs +4 -0
- data/app/views/alchemy_crm/admin/elements/teasables.html.erb +57 -0
- data/app/views/alchemy_crm/admin/mailings/_form.html.erb +43 -0
- data/app/views/alchemy_crm/admin/mailings/_mailing.html.erb +75 -0
- data/app/views/alchemy_crm/admin/mailings/edit.html.erb +1 -0
- data/app/views/alchemy_crm/admin/mailings/edit_content.html.erb +194 -0
- data/app/views/alchemy_crm/admin/mailings/import_result.html.erb +37 -0
- data/app/views/alchemy_crm/admin/mailings/index.html.erb +39 -0
- data/app/views/alchemy_crm/admin/mailings/new.html.erb +1 -0
- data/app/views/alchemy_crm/admin/mailings/show.html.erb +1 -0
- data/app/views/alchemy_crm/admin/mailings/show.text.erb +1 -0
- data/app/views/alchemy_crm/admin/newsletters/_form.html.erb +54 -0
- data/app/views/alchemy_crm/admin/newsletters/_newsletter.html.erb +42 -0
- data/app/views/alchemy_crm/admin/newsletters/_tag_with_radiobutton.html.erb +7 -0
- data/app/views/alchemy_crm/admin/newsletters/destroy.rjs +1 -0
- data/app/views/alchemy_crm/admin/newsletters/edit.html.erb +1 -0
- data/app/views/alchemy_crm/admin/newsletters/index.html.erb +42 -0
- data/app/views/alchemy_crm/admin/newsletters/new.html.erb +10 -0
- data/app/views/alchemy_crm/admin/tags/_radio_tag.html.erb +6 -0
- data/app/views/alchemy_crm/admin/tags/_tag.html.erb +32 -0
- data/app/views/alchemy_crm/admin/tags/edit.html.erb +40 -0
- data/app/views/alchemy_crm/admin/tags/index.html.erb +35 -0
- data/app/views/alchemy_crm/admin/tags/new.html.erb +16 -0
- data/app/views/alchemy_crm/contacts_mailer/signout_mail.html.erb +8 -0
- data/app/views/alchemy_crm/contacts_mailer/signout_mail.text.erb +4 -0
- data/app/views/alchemy_crm/contacts_mailer/signup_mail.html.erb +11 -0
- data/app/views/alchemy_crm/contacts_mailer/signup_mail.text.erb +4 -0
- data/app/views/alchemy_crm/mailings/show.html.erb +1 -0
- data/app/views/alchemy_crm/mailings_mailer/verification_mail.html.erb +11 -0
- data/app/views/alchemy_crm/subscriptions/index.html.erb +23 -0
- data/app/views/alchemy_crm/subscriptions_mailer/overview_mail.html.erb +27 -0
- data/app/views/alchemy_crm/subscriptions_mailer/overview_mail.text.erb +19 -0
- data/app/views/csv_magic/import_errors.html.erb +44 -0
- data/app/views/csv_magic/mapper.html.erb +62 -0
- data/app/views/layouts/alchemy_crm/mailings.html.erb +212 -0
- data/app/views/layouts/alchemy_crm/mailings.text.erb +3 -0
- data/config/alchemy_crm.config.yml +21 -0
- data/config/authorization_rules.rb +37 -0
- data/config/initializers/assets.rb +4 -0
- data/config/initializers/delayed_job.rb +6 -0
- data/config/locales/alchemy.de.yml +55 -0
- data/config/locales/alchemy.en.yml +52 -0
- data/config/locales/alchemy_crm.de.yml +196 -0
- data/config/locales/alchemy_crm.en.yml +53 -0
- data/config/locales/localized_country_select.de.rb +268 -0
- data/config/locales/localized_country_select.en.rb +282 -0
- data/config/module_definition.yml +30 -0
- data/config/routes.rb +71 -0
- data/db/migrate/20100708220434_create_mailings.rb +19 -0
- data/db/migrate/20100708220534_create_contacts.rb +27 -0
- data/db/migrate/20100708220812_create_contact_groups.rb +13 -0
- data/db/migrate/20100708221009_create_newsletters.rb +15 -0
- data/db/migrate/20100708221319_create_sent_mailings.rb +15 -0
- data/db/migrate/20100708221529_create_recipients.rb +21 -0
- data/db/migrate/20100708222620_acts_as_taggable_migration.rb +28 -0
- data/db/migrate/20100708223324_create_contact_group_filters.rb +17 -0
- data/db/migrate/20100708223727_create_newsletter_subscriptions.rb +14 -0
- data/db/migrate/20100708223922_create_essence_element_teasers.rb +15 -0
- data/db/migrate/20100714172207_create_contact_groups_newsletters.rb +12 -0
- data/db/migrate/20100927152601_create_reactions.rb +14 -0
- data/db/migrate/20111028091722_acts_as_taggable_on_migration.rb +15 -0
- data/db/migrate/20111028200710_add_counter_cache_columns_for_tags.rb +11 -0
- data/db/migrate/20111030204931_create_delayed_jobs.rb +21 -0
- data/db/migrate/20111104105854_add_deliver_at_to_sent_mailings.rb +9 -0
- data/db/migrate/20111104125306_remove_sent_mailing_pdf_id_from_sent_mailings.rb +9 -0
- data/db/migrate/20111104131912_add_delivered_at_to_sent_mailings.rb +9 -0
- data/db/migrate/20111124145923_namespace_alchemy_crm_models.rb +17 -0
- data/db/migrate/20120306115555_add_disabled_to_alchemy_crm_contacts.rb +5 -0
- data/db/migrate/20120307160721_rename_alchemy_crm_recipients_sent_mailing_id.rb +5 -0
- data/db/migrate/20120315113522_add_url_to_alchemy_crm_reactions.rb +5 -0
- data/db/migrate/20120316161333_add_sha1_and_salt_to_alchemy_crm_recipients.rb +6 -0
- data/db/migrate/20120320103412_add_indexes_to_alchemy_crm_sha1_columns.rb +7 -0
- data/db/migrate/20120321105455_add_queue_to_delayed_jobs.rb +9 -0
- data/db/migrate/20120327174301_add_more_indexes_to_alchemy_crm_tables.rb +12 -0
- data/lib/alchemy_crm.rb +18 -0
- data/lib/alchemy_crm/bounced_delivery.rb +46 -0
- data/lib/alchemy_crm/config.rb +28 -0
- data/lib/alchemy_crm/engine.rb +40 -0
- data/lib/alchemy_crm/i18n_helpers.rb +35 -0
- data/lib/alchemy_crm/newsletter_layout.rb +40 -0
- data/lib/alchemy_crm/seeder.rb +30 -0
- data/lib/alchemy_crm/version.rb +3 -0
- data/lib/generators/alchemy_crm/scaffold/files/_standard.html.erb +1 -0
- data/lib/generators/alchemy_crm/scaffold/files/_standard.text.erb +1 -0
- data/lib/generators/alchemy_crm/scaffold/files/elements.yml +51 -0
- data/lib/generators/alchemy_crm/scaffold/files/newsletter_layouts.yml +3 -0
- data/lib/generators/alchemy_crm/scaffold/files/newsletters.html.erb +22 -0
- data/lib/generators/alchemy_crm/scaffold/files/newsletters.text.erb +4 -0
- data/lib/generators/alchemy_crm/scaffold/files/page_layouts.yml +19 -0
- data/lib/generators/alchemy_crm/scaffold/scaffold_generator.rb +26 -0
- data/lib/tasks/alchemy_crm.rake +28 -0
- data/lib/tasks/routes.rake +29 -0
- data/rails/init.rb +1 -0
- data/recipes/alchemy-mailings-capistrano-tasks.rb +12 -0
- data/spec/alchemy_mailings_spec.rb +7 -0
- data/spec/config_spec.rb +28 -0
- data/spec/controllers/alchemy_crm/contacts_controller_spec.rb +210 -0
- data/spec/controllers/alchemy_crm/mailings_controller_spec.rb +89 -0
- data/spec/controllers/alchemy_crm/recipients_controller_spec.rb +155 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/alchemy/config.yml +142 -0
- data/spec/dummy/config/alchemy/elements.yml +79 -0
- data/spec/dummy/config/alchemy/newsletter_layouts.yml +4 -0
- data/spec/dummy/config/alchemy/page_layouts.yml +55 -0
- data/spec/dummy/config/application.rb +43 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +22 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +30 -0
- data/spec/dummy/config/environments/production.rb +60 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/db/schema.rb +452 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/helpers/alchemy_crm/mailings_helper_spec.rb +169 -0
- data/spec/mailers/alchemy_crm/contacts_mailer_spec.rb +88 -0
- data/spec/mailers/alchemy_crm/mailings_mailer_spec.rb +42 -0
- data/spec/models/alchemy_crm/contact_group_spec.rb +41 -0
- data/spec/models/alchemy_crm/contact_spec.rb +108 -0
- data/spec/models/alchemy_crm/delivery_spec.rb +55 -0
- data/spec/models/alchemy_crm/mailing_spec.rb +63 -0
- data/spec/models/alchemy_crm/newsletter_spec.rb +45 -0
- data/spec/spec_helper.rb +58 -0
- data/vendor/assets/javascripts/autocomplete-rails.js +16 -0
- metadata +438 -0
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/dummy/db/*.sqlite3
|
15
|
+
spec/dummy/log/*.log
|
16
|
+
spec/dummy/tmp/
|
17
|
+
spec/dummy/index/
|
18
|
+
.svn
|
19
|
+
|
20
|
+
.rvmrc
|
21
|
+
.rspec
|
22
|
+
spec/dummy/log/development.log
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in alchemy_crm.gemspec
|
4
|
+
gemspec
|
5
|
+
|
6
|
+
group :development do
|
7
|
+
gem 'alchemy_cms', :git => 'git://github.com/magiclabs/alchemy_cms'
|
8
|
+
gem 'guard-spork'
|
9
|
+
if !ENV["CI"]
|
10
|
+
gem 'ruby-debug-base19', '~> 0.11.26', :platform => :ruby_19
|
11
|
+
gem 'linecache19', '~> 0.5.13', :platform => :ruby_19
|
12
|
+
gem 'ruby-debug19', '~> 0.11.6', :require => 'ruby-debug', :platform => :ruby_19
|
13
|
+
gem 'ruby-debug', :platform => :ruby_18
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
group :test do
|
18
|
+
gem 'sqlite3'
|
19
|
+
gem "database_cleaner"
|
20
|
+
gem 'email_spec'
|
21
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do
|
5
|
+
watch(%r{^lib/})
|
6
|
+
watch('spec/dummy/config/application.rb')
|
7
|
+
watch('spec/dummy/config/environment.rb')
|
8
|
+
watch(%r{^spec/dummy/config/environments/.+\.rb$})
|
9
|
+
watch(%r{^spec/dummy/config/initializers/.+\.rb$})
|
10
|
+
watch('Gemfile')
|
11
|
+
watch('Gemfile.lock')
|
12
|
+
watch('spec/spec_helper.rb') { :rspec }
|
13
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Copyright (c) 2011, magic labs*
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without modification,
|
5
|
+
are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice,
|
8
|
+
this list of conditions and the following disclaimer.
|
9
|
+
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer in the documentation and/or
|
12
|
+
other materials provided with the distribution.
|
13
|
+
|
14
|
+
* Neither the name of magic labs* nor the names of its contributors may be used to
|
15
|
+
endorse or promote products derived from this software without specific prior written permission.
|
16
|
+
|
17
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
|
18
|
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
|
20
|
+
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
21
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
22
|
+
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
24
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
Alchemy CRM Module
|
2
|
+
==================
|
3
|
+
|
4
|
+
Building and sending Newsletters has never been easier!
|
5
|
+
|
6
|
+
About
|
7
|
+
-----
|
8
|
+
|
9
|
+
A fully featured CRM / Newsletter and Mailings Module for Alchemy CMS.
|
10
|
+
|
11
|
+
For more Information please visit [http://alchemy-cms.com](http://alchemy-cms.com)
|
12
|
+
|
13
|
+
Install
|
14
|
+
-------
|
15
|
+
|
16
|
+
1. Install Alchemy CMS:
|
17
|
+
|
18
|
+
http://guides.alchemy-cms.com/getting_started.html
|
19
|
+
|
20
|
+
2. Put this line into your projects `Gemfile`:
|
21
|
+
|
22
|
+
# Gemfile
|
23
|
+
gem "alchemy_crm", :git => 'git://github.com/magiclabs/alchemy_crm'
|
24
|
+
|
25
|
+
Or install it via Rubygems:
|
26
|
+
|
27
|
+
$ gem install alchemy_crm
|
28
|
+
|
29
|
+
3. Update your bundle:
|
30
|
+
|
31
|
+
$ bundle
|
32
|
+
|
33
|
+
4. Mount the Alchemy CRM Engine into your app:
|
34
|
+
|
35
|
+
# config/routes.rb
|
36
|
+
...
|
37
|
+
mount AlchemyCrm::Engine => '/newsletter'
|
38
|
+
mount Alchemy::Engine => '/'
|
39
|
+
|
40
|
+
NOTE: It is **strongly** recommended to mount this module before you mount Alchemy CMS
|
41
|
+
|
42
|
+
5. Copy the migrations into your app and migrate the database:
|
43
|
+
|
44
|
+
$ rake alchemy_crm:install:migrations
|
45
|
+
$ rake db:migrate
|
46
|
+
|
47
|
+
6. Seed the database:
|
48
|
+
|
49
|
+
1. Put this line into your projects `db/seeds.rb` file:
|
50
|
+
|
51
|
+
AlchemyCrm::Seeder.seed!
|
52
|
+
|
53
|
+
2. And run this rake task:
|
54
|
+
|
55
|
+
$ rake db:seed
|
56
|
+
|
57
|
+
7. Generate files and folders:
|
58
|
+
|
59
|
+
1. Run scaffold generator
|
60
|
+
|
61
|
+
$ rails g alchemy_crm:scaffold
|
62
|
+
|
63
|
+
2. Run copy elements rake task
|
64
|
+
|
65
|
+
$ rake alchemy_crm:elements:copy
|
66
|
+
|
67
|
+
Resources
|
68
|
+
---------
|
69
|
+
|
70
|
+
* Homepage: <https://github.com/magiclabs/alchemy_crm>
|
71
|
+
* Issue-Tracker: <https://github.com/magiclabs/alchemy_crm/issues>
|
72
|
+
* Sourcecode: <https://github.com/magiclabs/alchemy_crm>
|
73
|
+
|
74
|
+
Authors
|
75
|
+
---------
|
76
|
+
|
77
|
+
* Thomas von Deyen: <https://github.com/tvdeyen>
|
78
|
+
|
79
|
+
License
|
80
|
+
-------
|
81
|
+
|
82
|
+
* BSD: <https://raw.github.com/magiclabs/alchemy_crm/LICENSE>
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'rubygems'
|
3
|
+
begin
|
4
|
+
require 'bundler/setup'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rake'
|
10
|
+
require 'rdoc/task'
|
11
|
+
|
12
|
+
require 'rspec/core'
|
13
|
+
require 'rspec/core/rake_task'
|
14
|
+
|
15
|
+
RSpec::Core::RakeTask.new(:spec)
|
16
|
+
|
17
|
+
task :default => :spec
|
18
|
+
|
19
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
20
|
+
rdoc.rdoc_dir = 'rdoc'
|
21
|
+
rdoc.title = 'Alchemy CRM'
|
22
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
23
|
+
rdoc.rdoc_files.include('README.rdoc')
|
24
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
25
|
+
end
|
26
|
+
|
27
|
+
Bundler::GemHelper.install_tasks
|
data/alchemy_crm.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/alchemy_crm/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
|
6
|
+
gem.authors = ["Thomas von Deyen"]
|
7
|
+
gem.email = ["tvd@magiclabs.de"]
|
8
|
+
gem.description = %q{A fully featured CRM / Newsletter and Mailings Module for Alchemy CMS. Building and sending Newsletters has never been easier!}
|
9
|
+
gem.summary = %q{A fully featured CRM / Newsletter and Mailings Module for Alchemy CMS.}
|
10
|
+
gem.homepage = "http://alchemy-cms.com"
|
11
|
+
gem.license = 'BSD New'
|
12
|
+
|
13
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
14
|
+
gem.files = `git ls-files`.split("\n")
|
15
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
gem.name = "alchemy_crm"
|
17
|
+
gem.require_paths = ["lib"]
|
18
|
+
gem.version = AlchemyCrm::VERSION
|
19
|
+
|
20
|
+
gem.add_dependency 'alchemy_cms', ["~> 2.1.7"]
|
21
|
+
gem.add_dependency 'vcard', ['~> 0.1.1']
|
22
|
+
gem.add_dependency 'csv_magic', ['~> 0.2.2']
|
23
|
+
gem.add_dependency 'delayed_job_active_record', ["~> 0.3.2"]
|
24
|
+
gem.add_dependency 'acts-as-taggable-on', ['~> 2.1.0']
|
25
|
+
gem.add_dependency 'rails3-jquery-autocomplete', ['~> 1.0.4']
|
26
|
+
gem.add_dependency "magic-localized_country_select", ["~> 0.2.0"]
|
27
|
+
|
28
|
+
gem.add_development_dependency 'rspec-rails', ["~> 2.8.0"]
|
29
|
+
gem.add_development_dependency 'sqlite3', ["~> 1.3.5"]
|
30
|
+
|
31
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,65 @@
|
|
1
|
+
var AlchemyCrm = {};
|
2
|
+
(function($) {
|
3
|
+
|
4
|
+
AlchemyCrm = {
|
5
|
+
|
6
|
+
toggleLabel : function(link, hidetext, showtext) {
|
7
|
+
if ($(link).text() === showtext) {
|
8
|
+
$(link).text(hidetext);
|
9
|
+
} else {
|
10
|
+
$(link).text(showtext);
|
11
|
+
}
|
12
|
+
},
|
13
|
+
|
14
|
+
removeContactGroupFilter : function(element, id, count) {
|
15
|
+
$(element).parent().parent('.filter').remove();
|
16
|
+
$(
|
17
|
+
'#filter_container'
|
18
|
+
).append(
|
19
|
+
'<input type="hidden" name="contact_group[filters_attributes]['+count+'][_destroy]" value=1>'
|
20
|
+
).append(
|
21
|
+
'<input type="hidden" name="contact_group[filters_attributes]['+count+'][id]" value='+id+'>'
|
22
|
+
);
|
23
|
+
},
|
24
|
+
|
25
|
+
teasablesFilter : function(value) {
|
26
|
+
var teasables = $('#teasable_elements .teasable_page');
|
27
|
+
if (value === '') {
|
28
|
+
teasables.each(function(t) { t.show(); });
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
teasables.each(function(el) {
|
32
|
+
if (el.attr('id').replace('teasable_page_', '') != value) {
|
33
|
+
el.hide();
|
34
|
+
} else {
|
35
|
+
el.show();
|
36
|
+
}
|
37
|
+
});
|
38
|
+
}
|
39
|
+
},
|
40
|
+
|
41
|
+
text_view_active : false,
|
42
|
+
|
43
|
+
togglePreviewFrame : function(btn, text_url, html_url) {
|
44
|
+
var $frame = $('iframe#alchemyPreviewWindow');
|
45
|
+
var $btn = $(btn).parent();
|
46
|
+
var $spin = $('#preview_load_info');
|
47
|
+
$frame.load(function() {
|
48
|
+
$spin.hide();
|
49
|
+
});
|
50
|
+
if (AlchemyCrm.text_view_active) {
|
51
|
+
$frame.attr('src', html_url);
|
52
|
+
AlchemyCrm.text_view_active = false;
|
53
|
+
$btn.removeClass('active');
|
54
|
+
} else {
|
55
|
+
$frame.attr('src', text_url);
|
56
|
+
AlchemyCrm.text_view_active = true;
|
57
|
+
$btn.addClass('active');
|
58
|
+
}
|
59
|
+
$spin.show();
|
60
|
+
return false;
|
61
|
+
}
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
})(jQuery);
|
@@ -0,0 +1,473 @@
|
|
1
|
+
span.icon.mailing_add {
|
2
|
+
background: image-url('alchemy_crm/mailing-icons.png') -48px 0;
|
3
|
+
}
|
4
|
+
|
5
|
+
span.icon.mailing {
|
6
|
+
background: image-url('alchemy_crm/mailing-icons.png') 0 0;
|
7
|
+
}
|
8
|
+
|
9
|
+
span.icon.mailing_copy {
|
10
|
+
background: image-url('alchemy_crm/mailing-icons.png') -80px 0;
|
11
|
+
}
|
12
|
+
|
13
|
+
span.icon.mailing_edit {
|
14
|
+
background: image-url('alchemy_crm/mailing-icons.png') -32px 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
span.icon.mailing_delete {
|
18
|
+
background: image-url('alchemy_crm/mailing-icons.png') -16px 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
span.icon.delivery {
|
22
|
+
background: image-url('alchemy_crm/mailing-icons.png') -64px 0;
|
23
|
+
}
|
24
|
+
|
25
|
+
span.icon.group_add {
|
26
|
+
background: image-url('alchemy_crm/group-icons.png') -48px 0;
|
27
|
+
}
|
28
|
+
|
29
|
+
span.icon.send_mailing {
|
30
|
+
background: image-url('alchemy_crm/mailing-icons.png') -96px 0;
|
31
|
+
}
|
32
|
+
|
33
|
+
span.icon.plain_text_view {
|
34
|
+
background-position: -448px -136px;
|
35
|
+
}
|
36
|
+
|
37
|
+
span.icon.group {
|
38
|
+
background: image-url('alchemy_crm/group-icons.png') 0 0;
|
39
|
+
}
|
40
|
+
|
41
|
+
a.icon.group_edit {
|
42
|
+
background: image-url('alchemy_crm/group-icons.png') -32px 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
a.icon.group_delete {
|
46
|
+
background: image-url('alchemy_crm/group-icons.png') -16px 0;
|
47
|
+
}
|
48
|
+
|
49
|
+
span.icon.tag_add {
|
50
|
+
background: image-url('alchemy_crm/tag-icons.png') -48px 0;
|
51
|
+
}
|
52
|
+
|
53
|
+
span.icon.tag {
|
54
|
+
background: image-url('alchemy_crm/tag-icons.png') 0 0;
|
55
|
+
margin-right: 0;
|
56
|
+
}
|
57
|
+
|
58
|
+
a.icon.tag_edit {
|
59
|
+
background: image-url('alchemy_crm/tag-icons.png') -32px 0;
|
60
|
+
}
|
61
|
+
|
62
|
+
a.icon.tag_delete {
|
63
|
+
background: image-url('alchemy_crm/tag-icons.png') -16px 0;
|
64
|
+
}
|
65
|
+
|
66
|
+
span.icon.contact_add {
|
67
|
+
background: image-url('alchemy_crm/contact-icons.png') -48px 0;
|
68
|
+
}
|
69
|
+
|
70
|
+
span.icon.contact {
|
71
|
+
background: image-url('alchemy_crm/contact-icons.png') 0 0;
|
72
|
+
}
|
73
|
+
|
74
|
+
a.icon.contact_export {
|
75
|
+
background: image-url('alchemy_crm/contact-icons.png') -64px 0;
|
76
|
+
}
|
77
|
+
|
78
|
+
span.icon.contact_import {
|
79
|
+
background: image-url('alchemy_crm/contact-icons.png') -80px 0;
|
80
|
+
}
|
81
|
+
|
82
|
+
a.icon.contact_delete {
|
83
|
+
background: image-url('alchemy_crm/contact-icons.png') -16px 0;
|
84
|
+
}
|
85
|
+
|
86
|
+
a.icon.contact_edit {
|
87
|
+
background: image-url('alchemy_crm/contact-icons.png') -32px 0;
|
88
|
+
}
|
89
|
+
|
90
|
+
span.icon.format_add {
|
91
|
+
background: image-url('alchemy_crm/newsletter-icons.png') -48px 0;
|
92
|
+
}
|
93
|
+
|
94
|
+
span.icon.format {
|
95
|
+
background: image-url('alchemy_crm/newsletter-icons.png') 0 0;
|
96
|
+
}
|
97
|
+
|
98
|
+
span.icon.format_delete {
|
99
|
+
background: image-url('alchemy_crm/newsletter-icons.png') -16px 0;
|
100
|
+
}
|
101
|
+
|
102
|
+
span.icon.format_edit {
|
103
|
+
background: image-url('alchemy_crm/newsletter-icons.png') -32px 0;
|
104
|
+
}
|
105
|
+
|
106
|
+
span.icon.fill_from_element {
|
107
|
+
background: image-url('alchemy/icons.png') -256px -40px;
|
108
|
+
}
|
109
|
+
|
110
|
+
span.icon.statistics {
|
111
|
+
background-image: image-url('alchemy_crm/statistic.png');
|
112
|
+
width: 18px;
|
113
|
+
height: 18px;
|
114
|
+
}
|
115
|
+
|
116
|
+
div.deliveries {
|
117
|
+
padding: 8px;
|
118
|
+
height: 400px;
|
119
|
+
overflow-y: auto;
|
120
|
+
overflow-x: none;
|
121
|
+
}
|
122
|
+
|
123
|
+
div.deliveries ol,
|
124
|
+
div.deliveries ul {
|
125
|
+
padding: 0;
|
126
|
+
margin: 0;
|
127
|
+
}
|
128
|
+
|
129
|
+
li.delivery {
|
130
|
+
clear: both;
|
131
|
+
line-height: 25px;
|
132
|
+
padding: 4px;
|
133
|
+
margin-bottom: 4px;
|
134
|
+
}
|
135
|
+
|
136
|
+
li.delivery.even:hover,
|
137
|
+
li.delivery.odd:hover {
|
138
|
+
background-color: #fffdef;
|
139
|
+
}
|
140
|
+
|
141
|
+
li.delivery.even {
|
142
|
+
background-color: #fff;
|
143
|
+
}
|
144
|
+
|
145
|
+
li.delivery.odd {
|
146
|
+
background-color: #dedede;
|
147
|
+
}
|
148
|
+
|
149
|
+
div.recipient_group {
|
150
|
+
margin-bottom: 8px;
|
151
|
+
background-color: #eef1f7;
|
152
|
+
padding: 8px;
|
153
|
+
border: 1px solid #d5d9e1;
|
154
|
+
border-radius: 3px;
|
155
|
+
-webkit-border-radius: 3px;
|
156
|
+
-moz-border-radius: 3px;
|
157
|
+
}
|
158
|
+
|
159
|
+
#delivery div.recipient_group p {
|
160
|
+
margin: 0;
|
161
|
+
}
|
162
|
+
|
163
|
+
#read div.recipient table tbody tr td {
|
164
|
+
padding-right: 8px;
|
165
|
+
}
|
166
|
+
|
167
|
+
#delivery div.recipients table.recipients_table {
|
168
|
+
font-size: 10px;
|
169
|
+
border-style: none;
|
170
|
+
border-width: 0;
|
171
|
+
border-spacing: 0;
|
172
|
+
width: 100%;
|
173
|
+
}
|
174
|
+
|
175
|
+
div.recipients {
|
176
|
+
margin-top: 8px;
|
177
|
+
max-height: 144px;
|
178
|
+
overflow: auto;
|
179
|
+
position: relative;
|
180
|
+
}
|
181
|
+
|
182
|
+
div.recipients table.recipients_table th,
|
183
|
+
div.recipients table.recipients_table td {
|
184
|
+
padding: 6px 4px 4px;
|
185
|
+
border-bottom: 4px solid #eef1f7;
|
186
|
+
text-align: left;
|
187
|
+
vertical-align: top;
|
188
|
+
line-height: 15px;
|
189
|
+
}
|
190
|
+
|
191
|
+
div.recipients table.recipients_table thead tr {
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
#delivery div.recipients table.recipients_table td {
|
196
|
+
background-color: #f7f7f7;
|
197
|
+
}
|
198
|
+
|
199
|
+
#delivery h2 span {
|
200
|
+
font-weight: normal;
|
201
|
+
font-style: normal;
|
202
|
+
}
|
203
|
+
|
204
|
+
span.delivery_text {
|
205
|
+
float: left;
|
206
|
+
position: relative;
|
207
|
+
top: 4px;
|
208
|
+
}
|
209
|
+
|
210
|
+
#main_content ul.mailing.list li div.list_row span.list_3rdcol {
|
211
|
+
width: 130px;
|
212
|
+
}
|
213
|
+
|
214
|
+
#main_content ul.mailing.list li div.list_row span.list_4thcol {
|
215
|
+
width: 64px;
|
216
|
+
}
|
217
|
+
|
218
|
+
div#tag_links {
|
219
|
+
clear: both;
|
220
|
+
margin-bottom: 5px;
|
221
|
+
background-color: rgba(58,255,63,0.35);
|
222
|
+
}
|
223
|
+
|
224
|
+
div#tag_links a {
|
225
|
+
font-style: italic;
|
226
|
+
margin-right: 2px;
|
227
|
+
margin-left: 2px;
|
228
|
+
}
|
229
|
+
|
230
|
+
div#other_links {
|
231
|
+
float: left;
|
232
|
+
background-color: rgba(249,12,21,0.5);
|
233
|
+
}
|
234
|
+
|
235
|
+
div#other_links a {
|
236
|
+
font-style: italic;
|
237
|
+
margin-right: 2px;
|
238
|
+
margin-left: 2px;
|
239
|
+
}
|
240
|
+
|
241
|
+
div#tag_container {
|
242
|
+
float: left;
|
243
|
+
}
|
244
|
+
|
245
|
+
#main_content ul.contacts.list li div.list_row span.list_1stcol img {
|
246
|
+
position: relative;
|
247
|
+
right: 1px;
|
248
|
+
}
|
249
|
+
|
250
|
+
div.tag_and_radio_list {
|
251
|
+
float: left;
|
252
|
+
clear: both;
|
253
|
+
width: 100%;
|
254
|
+
margin-bottom: 8px;
|
255
|
+
}
|
256
|
+
|
257
|
+
span.tag_with_radio_button {
|
258
|
+
margin-right: 12px;
|
259
|
+
float: left;
|
260
|
+
}
|
261
|
+
|
262
|
+
div.tag_list {
|
263
|
+
padding-bottom: 8px;
|
264
|
+
overflow: auto;
|
265
|
+
}
|
266
|
+
|
267
|
+
.tag_with_radio_button input, .tag_with_radio_button label.tag {
|
268
|
+
padding: 0;
|
269
|
+
width: auto;
|
270
|
+
}
|
271
|
+
|
272
|
+
#all_contacts {
|
273
|
+
|
274
|
+
padding: 2px 4px;
|
275
|
+
margin: 0;
|
276
|
+
list-style-type: none;
|
277
|
+
overflow: auto;
|
278
|
+
height: 8em;
|
279
|
+
background-color: white;
|
280
|
+
|
281
|
+
li {
|
282
|
+
padding: 4px;
|
283
|
+
margin: 2px 0;
|
284
|
+
}
|
285
|
+
}
|
286
|
+
|
287
|
+
form.send_mailing_form {
|
288
|
+
float: left;
|
289
|
+
clear: both;
|
290
|
+
width: 100%;
|
291
|
+
margin-top: 20px;
|
292
|
+
}
|
293
|
+
|
294
|
+
img.unverified_contact {
|
295
|
+
position: absolute;
|
296
|
+
left: 2px;
|
297
|
+
z-index: 1;
|
298
|
+
top: 1px;
|
299
|
+
}
|
300
|
+
|
301
|
+
#contact_list li div.list_row span.list_1stcol {
|
302
|
+
position: relative;
|
303
|
+
}
|
304
|
+
|
305
|
+
#contact_list li div.list_row span.list_4thcol {
|
306
|
+
margin-left: 4px;
|
307
|
+
width: 42px;
|
308
|
+
}
|
309
|
+
|
310
|
+
.contact_details {
|
311
|
+
float: left;
|
312
|
+
clear: both;
|
313
|
+
width: 367px;
|
314
|
+
background-color: #ddd;
|
315
|
+
padding: 4px 4px 2px;
|
316
|
+
}
|
317
|
+
|
318
|
+
.contact_details div {
|
319
|
+
margin-bottom: 2px;
|
320
|
+
}
|
321
|
+
|
322
|
+
#contact_list li div span.user_edit_tools {
|
323
|
+
width: 41px;
|
324
|
+
}
|
325
|
+
|
326
|
+
ul.mailing.list span.list_1stcol img {
|
327
|
+
position: relative;
|
328
|
+
right: 1px;
|
329
|
+
}
|
330
|
+
|
331
|
+
a.delete_mailing_button:hover {
|
332
|
+
background-position: right;
|
333
|
+
text-decoration: none;
|
334
|
+
}
|
335
|
+
|
336
|
+
.with_padding {
|
337
|
+
position: relative;
|
338
|
+
}
|
339
|
+
|
340
|
+
div#please_wait {
|
341
|
+
position: absolute;
|
342
|
+
width: 99%;
|
343
|
+
height: 99%;
|
344
|
+
text-align: center;
|
345
|
+
background-color: #ededed;
|
346
|
+
z-index: 1;
|
347
|
+
opacity: 0.85;
|
348
|
+
}
|
349
|
+
|
350
|
+
#please_wait p {
|
351
|
+
margin-top: 30%;
|
352
|
+
}
|
353
|
+
|
354
|
+
#please_wait p img {
|
355
|
+
position: relative;
|
356
|
+
top: 12px;
|
357
|
+
}
|
358
|
+
|
359
|
+
.full_width {
|
360
|
+
width: 100% !important;
|
361
|
+
}
|
362
|
+
|
363
|
+
div.emulate_table span.value_with_top_padding {
|
364
|
+
padding-top: 2px;
|
365
|
+
float: left;
|
366
|
+
}
|
367
|
+
|
368
|
+
a.send_mailing_button {
|
369
|
+
width: 19px;
|
370
|
+
height: 19px;
|
371
|
+
display: block;
|
372
|
+
background: image-url('alchemy_crm/mailing_send.gif') no-repeat left center;
|
373
|
+
float: right;
|
374
|
+
}
|
375
|
+
|
376
|
+
#teasable_elements a.link_only {
|
377
|
+
float: right;
|
378
|
+
}
|
379
|
+
|
380
|
+
a.send_mailing_button:hover {
|
381
|
+
background-position: right;
|
382
|
+
text-decoration: none;
|
383
|
+
}
|
384
|
+
|
385
|
+
.send_mailing_button_disabled {
|
386
|
+
width: 19px;
|
387
|
+
height: 19px;
|
388
|
+
display: block;
|
389
|
+
background: image-url('alchemy_crm/mailing_send.gif') no-repeat left center;
|
390
|
+
float: right;
|
391
|
+
background-position: right;
|
392
|
+
text-decoration: none;
|
393
|
+
}
|
394
|
+
|
395
|
+
span.tag {
|
396
|
+
margin-right: 12px;
|
397
|
+
float: left;
|
398
|
+
}
|
399
|
+
|
400
|
+
#filter_container {
|
401
|
+
margin-bottom: 8px;
|
402
|
+
|
403
|
+
.thin_border {
|
404
|
+
bottom: 8px;
|
405
|
+
position: relative;
|
406
|
+
}
|
407
|
+
|
408
|
+
span.remove_filter {
|
409
|
+
float: right;
|
410
|
+
position: relative;
|
411
|
+
top: 2px;
|
412
|
+
}
|
413
|
+
|
414
|
+
div.filter {
|
415
|
+
margin-bottom: 8px;
|
416
|
+
}
|
417
|
+
}
|
418
|
+
|
419
|
+
#alchemy input#contact_city, #alchemy input#contact_title {
|
420
|
+
width: 182px;
|
421
|
+
}
|
422
|
+
|
423
|
+
#alchemy input#contact_zip {
|
424
|
+
width: 59px;
|
425
|
+
}
|
426
|
+
|
427
|
+
#alchemy table#contact td.label.right {
|
428
|
+
width: 40px;
|
429
|
+
}
|
430
|
+
|
431
|
+
#alchemy .selectbox .display.very_short {
|
432
|
+
width: 39px;
|
433
|
+
}
|
434
|
+
|
435
|
+
#alchemy .selectbox.items.very_short {
|
436
|
+
width: auto;
|
437
|
+
}
|
438
|
+
|
439
|
+
#alchemy .selectbox .display.time_select {
|
440
|
+
width: 19px;
|
441
|
+
}
|
442
|
+
|
443
|
+
#alchemy .selectbox.items.time_select {
|
444
|
+
width: 47px;
|
445
|
+
}
|
446
|
+
|
447
|
+
table tr.disabled td {
|
448
|
+
color: #592e2e;
|
449
|
+
background-color: #efd3d3;
|
450
|
+
}
|
451
|
+
|
452
|
+
div#archive_all form.contact_import {
|
453
|
+
width: 550px;
|
454
|
+
margin: 8px;
|
455
|
+
}
|
456
|
+
|
457
|
+
td.delivery_time {
|
458
|
+
white-space: nowrap;
|
459
|
+
|
460
|
+
div.alchemy_selectbox, label, input.thin_border {
|
461
|
+
float: left;
|
462
|
+
}
|
463
|
+
|
464
|
+
label {
|
465
|
+
line-height: 23px;
|
466
|
+
margin: 0 8px;
|
467
|
+
}
|
468
|
+
|
469
|
+
input.thin_border {
|
470
|
+
position: relative;
|
471
|
+
top: -2px;
|
472
|
+
}
|
473
|
+
}
|