fooltip 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31e9cfc455b0995543b12d29441c387a1fcd570b
4
- data.tar.gz: 475f5ed67318bec4856b61129e26ee93f64e218d
3
+ metadata.gz: b7a37dce1585dd375392716d29e39f6ae9c98ff9
4
+ data.tar.gz: 8e8a2f892bec54aba5477d4d9b6268493e694d5c
5
5
  SHA512:
6
- metadata.gz: 906ea9b5037e88eb25d4b62df2fa48ec7f10e7b5e574cd77f406e303901fa1679f5e3f4142543f989507a5d2133324adb9d9f0df4281e26fbe995b4910b6bb18
7
- data.tar.gz: 7d8b4a909bfa97fcb1994071f4fac02fdb48a9832349790ef0f3299416208993d01c6ac189d599b4ee2dbf9915aca3bf0e0c86c5602fa813bd9c76c34b34a16b
6
+ metadata.gz: b1bd5e9fcc08da2358370633229acc89938b2a67f94130d632b1f2f9e9813215b21493ca1752bb968a4ccbd6f723e4f62352cbcee87263f8fb1e1921d26439e8
7
+ data.tar.gz: 5723fe42fac1c38d6e4e627b17152b66df2b6ac818a1f05c5664b2648aa272b5c312648f83c96e3730c1d177708a263ed976e48a8cca2225a075b8aa864f2d5e
Binary file
@@ -13,3 +13,4 @@
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
15
  //= require_tree .
16
+ //= require bootstrap
@@ -0,0 +1,9 @@
1
+ $(document).ready(function() {
2
+
3
+ $('.fooltip-link-container').each(function() {
4
+ $(this).children('a').attr('data-content', $(this).children('.content').html());
5
+ });
6
+
7
+ $('.fooltip-link').popover();
8
+
9
+ });
@@ -9,5 +9,6 @@
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
10
  *
11
11
  *= require_self
12
+ *= require bootstrap
12
13
  *= require_tree .
13
14
  */
@@ -0,0 +1,18 @@
1
+ .fooltip-container
2
+ width: 800px
3
+ height: 500px
4
+ position: relative
5
+ image
6
+ float: left
7
+ .popover
8
+ max-width: none
9
+
10
+ .fooltip-link-container
11
+ position: absolute
12
+
13
+ .fooltip-link
14
+ display: block
15
+ position: absolute
16
+ height: 32px
17
+ width: 32px
18
+ background: url(image-path("fooltip/link.png")) no-repeat top left
@@ -0,0 +1,9 @@
1
+ require_dependency "fooltip/application_controller"
2
+
3
+ module Fooltip
4
+ class ContainersController < ApplicationController
5
+ def show
6
+ @container = Container.find params[:id] rescue nil
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ module Fooltip
2
+ module ContainersHelper
3
+ end
4
+ end
@@ -0,0 +1,10 @@
1
+ module Fooltip
2
+ class Association < ::ActiveRecord::Base
3
+ belongs_to :owner, polymorphic: true
4
+ belongs_to :container
5
+
6
+ validates :owner_id, presence: true, uniqueness: { scope: [:owner_type, :container_id] }
7
+ validates :owner_type, presence: true
8
+ validates :container_id, presence: true
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ module Fooltip
2
+ class Container < ::ActiveRecord::Base
3
+ mount_uploader :image, ImageUploader
4
+ translates :title, :description, fallbacks_for_empty_translations: true
5
+ attr_accessible :description, :title
6
+ has_many :links, dependent: :destroy
7
+ end
8
+ end
@@ -0,0 +1,26 @@
1
+ module Fooltip
2
+ class Link < ::ActiveRecord::Base
3
+ PLACEMENT_MAPPINGS = { 1 => 'top', 2 => 'right', 3 => 'bottom', 4 => 'left' }
4
+ TRIGGER_MAPPINGS = { 1 => 'click', 2 => 'hover', 3 => 'focus', 4 => 'manual' }
5
+
6
+ attr_accessible :placement, :trigger, :x, :y
7
+ belongs_to :container
8
+ belongs_to :popup
9
+
10
+ validates :container, presence: true
11
+ validates :popup, presence: true
12
+ validates :placement, presence: true
13
+ validates :trigger, presence: true
14
+ validates :x, presence: true
15
+ validates :y, presence: true
16
+
17
+ def placement_string
18
+ PLACEMENT_MAPPINGS[placement] || 'right'
19
+ end
20
+
21
+ def trigger_string
22
+ TRIGGER_MAPPINGS[trigger] || 'focus'
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,9 @@
1
+ module Fooltip
2
+ class Popup < ::ActiveRecord::Base
3
+ translates :title, :content, fallbacks_for_empty_translations: true
4
+ attr_accessible :content, :title, :identifier, :min_width, :min_height,
5
+ :max_width, :max_height
6
+ has_many :links, dependent: :destroy
7
+ validates :identifier, presence: true
8
+ end
9
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+
3
+ module Fooltip
4
+ class ImageUploader < CarrierWave::Uploader::Base
5
+
6
+ # Include RMagick or MiniMagick support:
7
+ # include CarrierWave::RMagick
8
+ # include CarrierWave::MiniMagick
9
+
10
+ # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
11
+ # include Sprockets::Helpers::RailsHelper
12
+ # include Sprockets::Helpers::IsolatedHelper
13
+
14
+ # Choose what kind of storage to use for this uploader:
15
+ storage :file
16
+ # storage :fog
17
+
18
+ # Override the directory where uploaded files will be stored.
19
+ # This is a sensible default for uploaders that are meant to be mounted:
20
+ def store_dir
21
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
22
+ end
23
+
24
+ # Provide a default URL as a default if there hasn't been a file uploaded:
25
+ # def default_url
26
+ # # For Rails 3.1+ asset pipeline compatibility:
27
+ # # asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
28
+ #
29
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
30
+ # end
31
+
32
+ # Process files as they are uploaded:
33
+ # process :scale => [200, 300]
34
+ #
35
+ # def scale(width, height)
36
+ # # do something
37
+ # end
38
+
39
+ # Create different versions of your uploaded files:
40
+ # version :thumb do
41
+ # process :scale => [50, 50]
42
+ # end
43
+
44
+ # Add a white list of extensions which are allowed to be uploaded.
45
+ def extension_white_list
46
+ %w(jpg jpeg gif png)
47
+ end
48
+
49
+ # Override the filename of the uploaded files:
50
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
51
+ # def filename
52
+ # "something.jpg" if original_filename
53
+ # end
54
+
55
+ end
56
+ end
@@ -0,0 +1,15 @@
1
+ .page-header
2
+ %h1= @container.title
3
+
4
+ .row-fluid
5
+ .fooltip-container
6
+ - @container.links.each do |link|
7
+ %span{ id: "fooltip-link-#{link.id}", class: "fooltip-link-container" }
8
+ = link_to '', 'javascript:void(0);', class: "fooltip-link", data: { content: "", placement: link.placement_string, toggle: "popover", :"original-title" => link.popup.title || '', html: true, trigger: link.trigger_string }, style: "top: #{link.y}px; left: #{link.x}px;"
9
+ .content{ style: "display: none;" }
10
+ .fooltip-popup{ style: "min-width: #{link.popup.min_width}px; min-height: #{link.popup.min_height}px; max-width: #{link.popup.max_width}px; max-height: #{link.popup.max_height}px;" }
11
+ = raw link.popup.content
12
+ = image_tag @container.image_url
13
+
14
+ .row-fluid
15
+ %p.lead= @container.description
@@ -7,4 +7,6 @@
7
7
  = javascript_include_tag 'fooltip/application'
8
8
  = csrf_meta_tags
9
9
  %body
10
- = yield
10
+ .container-fluid
11
+ .row-fluid
12
+ = yield
data/config/routes.rb CHANGED
@@ -1,2 +1,3 @@
1
1
  Fooltip::Engine.routes.draw do
2
+ resources :containers, only: :show
2
3
  end
@@ -0,0 +1,56 @@
1
+ class CreateFooltipTables < ActiveRecord::Migration
2
+
3
+ def up
4
+ create_table :fooltip_containers do |t|
5
+ t.string :image
6
+ t.timestamps
7
+ end
8
+ Fooltip::Container.create_translation_table!({
9
+ title: :string,
10
+ description: :text
11
+ })
12
+
13
+ create_table :fooltip_associations do |t|
14
+ t.string :owner_type
15
+ t.integer :owner_id
16
+ t.references :container
17
+ t.timestamps
18
+ end
19
+
20
+ create_table :fooltip_popups do |t|
21
+ t.string :identifier
22
+ t.integer :min_height
23
+ t.integer :min_width
24
+ t.integer :max_height
25
+ t.integer :max_width
26
+ t.timestamps
27
+ end
28
+ Fooltip::Popup.create_translation_table!({
29
+ title: :string,
30
+ content: :text
31
+ })
32
+
33
+ create_table :fooltip_links do |t|
34
+ t.references :container
35
+ t.references :popup
36
+ t.integer :placement
37
+ t.integer :trigger
38
+ t.integer :x
39
+ t.integer :y
40
+ t.timestamps
41
+ end
42
+ add_index :fooltip_links, :container_id
43
+ add_index :fooltip_links, :popup_id
44
+
45
+ end
46
+
47
+ def down
48
+ drop_table :fooltip_links
49
+ Fooltip::Popup.drop_translation_table!
50
+ drop_table :fooltip_popups
51
+ drop_table :fooltip_associations
52
+ Fooltip::Container.drop_translation_table!
53
+ drop_table :fooltip_containers
54
+ end
55
+
56
+ end
@@ -0,0 +1,13 @@
1
+ module Fooltip
2
+ module ActiveRecord
3
+
4
+ def has_fooltips(options = {})
5
+ #options.assert_valid_keys(:x)
6
+
7
+ attr_accessible :fooltip_ids
8
+ has_many :fooltips, class_name: "Fooltip::Association", as: :owner, source: "Fooltip::Container"
9
+ end
10
+
11
+ end
12
+ end
13
+
@@ -1,3 +1,3 @@
1
1
  module Fooltip
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/fooltip.rb CHANGED
@@ -1,11 +1,17 @@
1
1
  require "globalize3"
2
+ require "carrierwave"
3
+ require "haml"
4
+ require "jquery-rails"
5
+ require "sass-rails"
6
+ require "bootstrap-sass"
2
7
  require "fooltip/engine"
8
+ require "fooltip/active_record"
3
9
 
4
10
  module Fooltip
5
11
  #include ActiveSupport::Configurable
6
12
 
7
13
  #config.x = :X
8
14
  #config_accessor :x
9
-
10
- #autoload :MyModule, 'fooltip/my_module'
11
15
  end
16
+
17
+ ActiveRecord::Base.extend(Fooltip::ActiveRecord)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fooltip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Intesys S.r.l.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-02 00:00:00.000000000 Z
12
+ date: 2013-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -39,6 +39,76 @@ dependencies:
39
39
  - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.3.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: carrierwave
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 0.8.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.8.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: haml
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: sass-rails
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '3.1'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '3.1'
84
+ - !ruby/object:Gem::Dependency
85
+ name: jquery-rails
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: 1.0.0
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: 1.0.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: bootstrap-sass
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '2.0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '2.0'
42
112
  description: Fooltip - when a tooltip just isn't enough.
43
113
  email:
44
114
  - daniel.jonasson@intesys.it
@@ -47,15 +117,28 @@ extensions: []
47
117
  extra_rdoc_files: []
48
118
  files:
49
119
  - app/controllers/fooltip/application_controller.rb
120
+ - app/controllers/fooltip/containers_controller.rb
121
+ - app/uploaders/fooltip/image_uploader.rb
122
+ - app/views/fooltip/containers/show.html.haml
50
123
  - app/views/layouts/fooltip/application.html.haml
124
+ - app/models/fooltip/popup.rb
125
+ - app/models/fooltip/association.rb
126
+ - app/models/fooltip/container.rb
127
+ - app/models/fooltip/link.rb
128
+ - app/helpers/fooltip/containers_helper.rb
51
129
  - app/helpers/fooltip/application_helper.rb
130
+ - app/assets/javascripts/fooltip/containers.js
52
131
  - app/assets/javascripts/fooltip/application.js
53
132
  - app/assets/stylesheets/fooltip/application.css
133
+ - app/assets/stylesheets/fooltip/containers.css.sass
134
+ - app/assets/images/fooltip/link.png
54
135
  - config/routes.rb
136
+ - db/migrate/20130402091259_create_fooltip_tables.rb
55
137
  - lib/tasks/fooltip_tasks.rake
56
138
  - lib/tasks/testing_tasks.rake
57
139
  - lib/fooltip/engine.rb
58
140
  - lib/fooltip/version.rb
141
+ - lib/fooltip/active_record.rb
59
142
  - lib/fooltip.rb
60
143
  - MIT-LICENSE
61
144
  - Rakefile