poodle-rb 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/poodle/application.js +1 -2
  3. data/app/assets/javascripts/poodle/cropper.js +1525 -0
  4. data/app/assets/javascripts/poodle/utilities.js +23 -7
  5. data/app/assets/stylesheets/poodle/poodle-theme.css +18 -1
  6. data/app/controllers/poodle/admin_controller.rb +0 -26
  7. data/app/controllers/poodle/images_controller.rb +65 -0
  8. data/app/helpers/poodle/image_helper.rb +171 -31
  9. data/app/helpers/poodle/render_helper.rb +31 -0
  10. data/{spec/dummy/app → app}/uploaders/image_uploader.rb +19 -22
  11. data/app/views/layouts/poodle/application/_footer.html.erb +1 -1
  12. data/app/views/layouts/poodle/application.html.erb +7 -3
  13. data/app/views/layouts/poodle/image_upload.html.erb +16 -0
  14. data/app/views/layouts/poodle/public/_footer.html.erb +2 -4
  15. data/app/views/layouts/poodle/public/_header.html.erb +1 -3
  16. data/app/views/layouts/poodle/public/public.html.erb +51 -0
  17. data/app/views/layouts/poodle/public.html.erb +8 -5
  18. data/lib/poodle/action_view/theme_helper.rb +0 -76
  19. data/lib/poodle/engine.rb +2 -0
  20. data/lib/poodle/version.rb +1 -1
  21. data/spec/dummy/app/controllers/profile_pictures_controller.rb +2 -0
  22. data/spec/dummy/app/models/image/base.rb +30 -0
  23. data/spec/dummy/app/models/image/profile_picture.rb +2 -0
  24. data/spec/dummy/app/models/user.rb +1 -1
  25. data/spec/dummy/app/views/profile_pictures/_crop_form.html.erb +44 -0
  26. data/spec/dummy/app/views/profile_pictures/_form.html.erb +41 -0
  27. data/spec/dummy/app/views/profile_pictures/_new.html.erb +9 -0
  28. data/spec/dummy/app/views/profile_pictures/_photos.html.erb +16 -0
  29. data/spec/dummy/app/views/profile_pictures/create.html.erb +10 -0
  30. data/spec/dummy/app/views/profile_pictures/crop.html.erb +5 -0
  31. data/spec/dummy/app/views/profile_pictures/edit.js.erb +7 -0
  32. data/spec/dummy/app/views/profile_pictures/new.js.erb +7 -0
  33. data/spec/dummy/app/views/profile_pictures/update.html.erb +10 -0
  34. data/spec/dummy/app/views/profile_pictures/update.js.erb +2 -0
  35. data/spec/dummy/config/initializers/carrier_wave.rb +2 -0
  36. data/spec/dummy/config/routes.rb +15 -1
  37. data/spec/dummy/db/migrate/20131108102728_create_images.rb +12 -0
  38. data/spec/dummy/db/schema.rb +5 -2
  39. data/spec/dummy/db/test.sqlite3 +0 -0
  40. data/{app/assets/javascripts/poodle/common.js → spec/dummy/log/development.log} +0 -0
  41. data/spec/dummy/log/test.log +11173 -0
  42. data/spec/dummy/spec/controllers/profile_pictures_controller_spec.rb +50 -0
  43. data/spec/dummy/spec/helpers/image_helper_spec.rb +129 -0
  44. data/spec/dummy/spec/helpers/theme_helper_spec.rb +14 -43
  45. data/spec/dummy/spec/support/factories/profile_pictures.rb +2 -2
  46. data/spec/dummy/spec/support/factories/users.rb +1 -1
  47. data/spec/dummy/{public/uploads/profile_picture/image → uploads/image/profile_picture}/1/large_test.jpg +0 -0
  48. data/spec/dummy/uploads/image/profile_picture/1/medium_test.jpg +0 -0
  49. data/spec/dummy/{public/uploads/profile_picture/image → uploads/image/profile_picture}/1/test.jpg +0 -0
  50. data/spec/dummy/{public/uploads/profile_picture/image → uploads/image/profile_picture}/1/thumb_test.jpg +0 -0
  51. data/spec/dummy/uploads/image/profile_picture/2/large_test.jpg +0 -0
  52. data/spec/dummy/uploads/image/profile_picture/2/medium_test.jpg +0 -0
  53. data/spec/dummy/uploads/image/profile_picture/2/test.jpg +0 -0
  54. data/spec/dummy/uploads/image/profile_picture/2/thumb_test.jpg +0 -0
  55. metadata +60 -18
  56. data/app/assets/javascripts/poodle/photo_upload.js +0 -104
  57. data/spec/dummy/app/models/profile_picture.rb +0 -8
  58. data/spec/dummy/db/migrate/20131108102728_create_profile_pictures.rb +0 -9
  59. data/spec/dummy/public/uploads/profile_picture/image/1/medium_test.jpg +0 -0
@@ -1,5 +1,23 @@
1
1
  // Write down only those functions which are being used by application.init or any part of the application like ajax event handlers.
2
2
 
3
+ function cropImage(formId, aspectRatio, minHeight, minWidth) {
4
+ if(aspectRatio == undefined){var aspectRatio=1}
5
+ if(minHeight == undefined){var minHeight=116}
6
+ if(minWidth == undefined){var minWidth=116}
7
+ $("#"+formId+ " img").cropper({
8
+ aspectRatio: aspectRatio,
9
+ minHeight: minHeight,
10
+ minWidth: minWidth,
11
+ data: {},
12
+ done: function(data) {
13
+ $("#"+formId+" .crop_x").val(data.x);
14
+ $("#"+formId+" .crop_y").val(data.y);
15
+ $("#"+formId+" .crop_w").val(data.width);
16
+ $("#"+formId+" .crop_h").val(data.height);
17
+ }
18
+ });
19
+ }
20
+
3
21
  // loadANewPage will accept a url and will load a new page
4
22
  // It can be tuned to show a lightbox showing a loading, please wait message.
5
23
  function loadANewPage(url){
@@ -13,19 +31,17 @@ function sendAjaxRequest(url, mType){
13
31
  jQuery.ajax({type: methodType, dataType:"script", url:url});
14
32
  }
15
33
 
16
- // Call this function by passing model Id, heading and a bodyContent.
17
- // it will pop up bootstrap 3 modal.
18
34
  var messageModalId = "div_modal_message";
19
35
  var genericModalId = "div_modal_generic";
36
+ // Call this function by passing model Id, heading and a bodyContent.
37
+ // it will pop up bootstrap 3 modal.
20
38
  function showModal(heading, bodyContent, modalId){
21
39
  if(modalId==null){
22
40
  var modalId = genericModalId;
23
41
  }
24
- //$('#' + modalId + ' .modal-body').html("<p>"+ message +"</p>");
25
- $('#' + modalId + ' .modal-header h4.modal-title').text(heading);
26
- $('#' + modalId + ' div.modal-body-main').html(bodyContent);
27
- $('#' + modalId).modal('show');
28
- //$('#' + modalId + ' .modal-footer button.btn-primary').button('reset');
42
+ $('#' + modalId + ' .modal-header h4.modal-title').text(heading);
43
+ $('#' + modalId + ' div.modal-body-main').html(bodyContent);
44
+ $('#' + modalId).modal('show');
29
45
  }
30
46
 
31
47
  // Call this function by passing heading and a message.
@@ -1,5 +1,22 @@
1
1
  /* Styles for footer */
2
- .footer {margin:100px 0px 0px 0px;color: #4b4b4b;height:50px;text-align:center;}
2
+ .footer {
3
+ color: #4b4b4b;
4
+ text-align: center;
5
+ bottom: 2%;
6
+ display: block;
7
+ width: 100%;
8
+ height: auto;
9
+ position: absolute;
10
+ }
11
+
12
+ .footer-with-sidebar {
13
+ padding: 20px 0px;
14
+ color: #4b4b4b;
15
+ position: fixed;
16
+ text-align: center;
17
+ width: 70%;
18
+ bottom: 10px;
19
+ }
3
20
 
4
21
  /* Styles for Sidebar and Main Content */
5
22
 
@@ -126,31 +126,5 @@ module Poodle
126
126
  render_or_redirect(obj.errors.any?, url, action_name)
127
127
  end
128
128
 
129
- def render_or_redirect(error, redirect_url, action)
130
- respond_to do |format|
131
- format.html {
132
- if error
133
- render action: action
134
- else
135
- redirect_to redirect_url, notice: @options[:message]
136
- end
137
- }
138
- format.js {}
139
- end
140
- end
141
-
142
- def render_list
143
- respond_to do |format|
144
- format.html { get_collections and render :index }
145
- format.js {}
146
- end
147
- end
148
-
149
- def render_show
150
- respond_to do |format|
151
- format.js { render action: :show }
152
- end
153
- end
154
-
155
129
  end
156
130
  end
@@ -0,0 +1,65 @@
1
+ module Poodle
2
+ class ImagesController < ApplicationController
3
+
4
+ #skip_before_filter :set_navs, :parse_pagination_params
5
+ before_filter :get_image_class
6
+ before_filter :get_resource
7
+
8
+ def new
9
+ @image = @image_class.new
10
+ end
11
+
12
+ def edit
13
+ @image = @image_class.find(params[:id])
14
+ end
15
+
16
+ def create
17
+ @image = @image_class.new
18
+ @image.imageable = @resource
19
+ @image.image = params[:image]
20
+ @image.save
21
+ set_flash_message("Image has been created successfully", :success)
22
+ render layout: "poodle/image_upload"
23
+ end
24
+
25
+ def update
26
+ @image = @image_class.find(params[:id])
27
+ @image.image = params[:image]
28
+ @image.save
29
+ set_flash_message("Image has been updated successfully", :success)
30
+ render layout: "poodle/image_upload"
31
+ end
32
+
33
+ def crop
34
+ @image = @image_class.find(params[:id])
35
+ @image.assign_attributes(image_params)
36
+ @image.image = params[:image]
37
+ @image.save
38
+ set_flash_message("Image has been cropped successfully", :success)
39
+ render layout: "poodle/image_upload"
40
+ end
41
+
42
+ private
43
+
44
+ def image_params
45
+ params.require(:image).permit(:crop_x, :crop_y, :crop_w, :crop_h, :image)
46
+ end
47
+
48
+ def get_image_class
49
+ @image_type = params[:image_type]
50
+ @image_class = @image_type.constantize
51
+ end
52
+
53
+ def get_resource
54
+ @resource = params[:imageable_type].constantize.find(params[:imageable_id]) if params[:imageable_type] && params[:imageable_id]
55
+ end
56
+
57
+ def save_image
58
+ @image = @image_class.new
59
+ @image.imageable = @resource
60
+ @image.image = params[:image][:image]
61
+ @image.save
62
+ end
63
+
64
+ end
65
+ end
@@ -1,45 +1,185 @@
1
1
  module Poodle
2
2
  module ImageHelper
3
- # This method only works with carrier wave way of doing.
4
- # eg: user.profile_picture.image.large.url
5
- # Usage:
6
- # image_url(user, "profile_picture.image.large.url")
7
- # image_url(user, "profile_picture.image.large.url")
8
- # image_url(user, "profile_picture.image.large.url", {width: 40, height: 10})
9
- # Where as the hash contains width and height for the place holder incase if the object doesn't has the image object
10
- def image_url(object, eval_url, place_holder={})
3
+
4
+ # placeholdit is a helper method used to return placechold.it urls with custom width, height and text
5
+ # It is quite useful for POC Applications to get started with place holder images while developing views
6
+ #
7
+ # @example Without Any Arguments
8
+ #
9
+ # >>> placeholdit()
10
+ # "http://placehold.it/60x60&text=<No Image>"
11
+ #
12
+ # @example With width, height and custom text
13
+ #
14
+ # >>> placeholdit(width: 120, height: 80, text: "User")
15
+ # "http://placehold.it/120x80&text=User"
16
+ def placeholdit(**options)
17
+ options.reverse_merge!( width: 60, height: 60, text: "<No Image>" )
18
+ "http://placehold.it/#{options[:width]}x#{options[:height]}&text=#{options[:text]}"
19
+ end
20
+
21
+ # image_url is a helper method which can be used along with carrier_wave gem
22
+ # Suppose, you have an object 'user' which has a profile_picture
23
+ # image_url will return you placehold.it image if profile_picture is not set else it will return you the carrier wave url
24
+ #
25
+ # @example Basic Usage without Image
26
+ #
27
+ # >>> image_url(user, "profile_picture.image.thumb.url")
28
+ # "http://placehold.it/60x60&text=<No Image>"
29
+ #
30
+ # @example Basic Usage with Image
31
+ #
32
+ # >>> image_url(user_with_image, "profile_picture.image.thumb.url")
33
+ # "uploads/profile_picture/image/1/thumb_test.jpg"
34
+ #
35
+ # @example Advance Usage with Placehold.it Arguments
36
+ #
37
+ # >>> image_url(user, "profile_picture.image.large.url", {width: 40, height: 10, text: "Pic"})
38
+ # "http://placehold.it/40x10&text=Pic"
39
+ def image_url(object, method_name, **options)
11
40
  begin
12
- url = object.send :eval, eval_url
41
+ url = object.send :eval, method_name
13
42
  raise if url.blank?
14
43
  rescue
15
- url = place_holder[:url] ? place_holder[:url] : "http://placehold.it/#{place_holder[:width]}x#{place_holder[:height]}&text=#{place_holder[:text]}"
44
+ url = placeholdit(**options)
16
45
  end
17
46
  return url
18
47
  end
19
48
 
20
49
  # This method will render the image with required width and height.
21
50
  # The image url will be set to the placeholder url if the object doesn't respond to the image method
22
- # Usage:
23
- # display_image(client, "logo.image.url")
24
- # display_image(client, "logo.image.url",
25
- # width: "100%", height:"100%")
26
- # display_image(client, "logo.image.url",
27
- # width: "100%", height:"100%",
28
- # place_holder: {width: 100, height: 50, text: "<No Image>"})
29
- def display_image(object, eval_url, hsh={})
30
- hsh[:width] = "100%" unless hsh[:width]
31
- hsh[:height] = "auto" unless hsh[:height]
32
-
33
- ph = hsh.has_key?(:place_holder) ? hsh[:place_holder] : {}
34
- ph[:width] = ph.has_key?(:width) ? ph[:width] : DEFAULT_PLACE_HOLDER_WIDTH
35
- ph[:height] = ph.has_key?(:height) ? ph[:height] : DEFAULT_PLACE_HOLDER_HEIGHT
36
- ph[:text] = ph.has_key?(:text) ? ph[:text] : DEFAULT_PLACE_HOLDER_TEXT
37
- hsh[:place_holder] = ph
38
-
39
- hsh[:style] = "" unless hsh[:style]
40
- hsh[:class] = "" unless hsh[:class]
41
- img_url = image_url(object, eval_url, ph)
42
- return image_tag img_url, class: hsh[:class], style: "width:#{hsh[:width]};height:#{hsh[:height]};#{hsh[:style]}"
51
+ #
52
+ # @example Basic Usage without Image
53
+ #
54
+ # >>> display_image(user, "profile_picture.image.thumb.url")
55
+ # "<img class=\"\" width=\"100%\" height=\"auto\" src=\"http://placehold.it/100x60&amp;text=&lt;No Image&gt;\" alt=\"100x60&amp;text=&lt;no image&gt;\" />"
56
+ #
57
+ # @example Basic Usage with image
58
+ #
59
+ # >>> display_image(user, "profile_picture.image.thumb.url", width: "100%", height:"100%")
60
+ # "<img class=\"\" width=\"100%\" height=\"100%\" src=\"http://placehold.it/100x60&amp;text=&lt;No Image&gt;\" alt=\"100x60&amp;text=&lt;no image&gt;\" />"
61
+ #
62
+ # @example Advanced Usage with width & height
63
+ #
64
+ # >>> display_image(user_with_image, 'profile_picture.image.large.url', width: "30px", height: "50px", place_holder: {width: 100, height: 50, text: "SOME TEXT"})
65
+ # "<img class=\"\" width=\"30px\" height=\"50px\" src=\"/spec/dummy/uploads/image/profile_picture/1/large_test.jpg\" alt=\"Large test\" />"
66
+ def display_image(object, method_name, **options)
67
+ options.reverse_merge!(
68
+ width: "100%",
69
+ height: "auto",
70
+ place_holder: {},
71
+ class: object.persisted? ? "#{object.id}-poodle-thumb-image" : ""
72
+ )
73
+
74
+ img_url = image_url(object, method_name, **options[:place_holder])
75
+ return image_tag(img_url, class: options[:class], width: options[:width], height: options[:height])
76
+ end
77
+
78
+ # @example Basic Usage
79
+ #
80
+ # >>> display_user_image(@user, 'profile_picture.image.thumb.url')
81
+ # "<div><div class="rounded" style="width:60px;height:60px;"><img alt="Thumb krishnan" class="" src="/uploads/image/profile_picture/39/thumb_krishnan.jpg" style="width:100%;height:auto;cursor:default;"></div></div>"
82
+ #
83
+ # @example Advanced Usage with
84
+ #
85
+ # >>> display_user_image(@user, 'profile_picture.image.thumb.url', width: 100, height: 100)
86
+ # "<div><div class="rounded" style="width:100px;height:60px;"><img alt="Thumb krishnan" class="" src="/uploads/image/profile_picture/39/thumb_krishnan.jpg" style="width:100%;height:auto;cursor:default;"></div></div>"
87
+ def display_user_image(user, method_name, **options)
88
+
89
+ url_domain = defined?(QAuthRubyClient) ? QAuthRubyClient.configuration.q_auth_url : ""
90
+
91
+ options.reverse_merge!(
92
+ width: "60px",
93
+ height: "auto",
94
+ url_domain: url_domain,
95
+ place_holder: {},
96
+ html_options: {}
97
+ )
98
+
99
+ options[:html_options].reverse_merge!(
100
+ style: "width:100%;height:auto;cursor:#{options.has_key?(:popover) ? "pointer" : "default"};",
101
+ class: user.persisted? ? "#{user.id}-poodle-thumb-image" : ""
102
+ )
103
+
104
+ options[:html_options].reverse_merge!(
105
+ "data-toggle" => "popover",
106
+ "data-placement" => "bottom",
107
+ "title" => user.name,
108
+ "data-content" => options[:popover] === true ? "" : options[:popover].to_s
109
+ ) if options[:popover]
110
+
111
+ begin
112
+ url = options[:url_domain] + user.send(:eval, method_name)
113
+ rescue
114
+ url = placeholdit(**options[:place_holder])
115
+ end
116
+
117
+ content_tag(:div) do
118
+ content_tag(:div, class: "rounded", style: "width:#{options[:width]};height:#{options[:height]}") do
119
+ image_tag(url, options[:html_options])
120
+ end
121
+ end
122
+ end
123
+
124
+ # Displays the image with a edit button below it
125
+ # @example Basic Usage
126
+ # >>> edit_image(@project, "logo.image.url", edit_url, width: "100px", height: "auto")
127
+ # ""
128
+ def edit_image(object, method_name, edit_url, **options)
129
+ options.reverse_merge!(
130
+ remote: true,
131
+ text: "Change Image",
132
+ icon: "photo",
133
+ classes: "btn btn-default btn-xs mt-10"
134
+ )
135
+ img_tag = display_image(object, method_name, **options)
136
+ btn_display = raw(theme_fa_icon(options[:icon]) + theme_button_text(options[:text]))
137
+ link_to(img_tag, edit_url, :remote => options[:remote]) +
138
+ link_to(btn_display, edit_url, :class=>options[:classes], :remote=>options[:remote])
139
+ end
140
+
141
+ # Displays the user image in a rounded frame with a edit button below it
142
+ # @example Basic Usage
143
+ # >>> edit_user_image(@project, "logo.image.url", edit_url, width: "100px", height: "auto")
144
+ # ""
145
+ def edit_user_image(object, method_name, edit_url, **options)
146
+ options.reverse_merge!(
147
+ remote: true,
148
+ text: "Change Image",
149
+ icon: "photo",
150
+ classes: "btn btn-default btn-xs mt-10"
151
+ )
152
+ img_tag = display_user_image(object, method_name, **options)
153
+ btn_display = raw(theme_fa_icon(options[:icon]) + theme_button_text(options[:text]))
154
+ link_to(img_tag, edit_url, :remote => options[:remote]) +
155
+ link_to(btn_display, edit_url, :class=>options[:classes], :remote=>options[:remote])
156
+ end
157
+
158
+ # Returns new photo url or edit existing photo url based on object is associated with photo or not
159
+ # @example Basic Usage - User without Image
160
+ # >>> upload_image_link(@user, :profile_picture, :admin)
161
+ # "/admin/images/new"
162
+ #
163
+ # @example Basic Usage - User with Iamge
164
+ #
165
+ # >>> upload_image_link(@user_with_image, :profile_picture, :admin)
166
+ # "/admin/images/1/edit"
167
+ #
168
+ # @example Basic Usage - Custom Scope
169
+ #
170
+ # >>> upload_image_link(@project, :profile_picture, :client)
171
+ # "/client/images/new"
172
+ # >>> upload_image_link(@project_with_image, :profile_picture, :client)
173
+ # "/client/images/1/edit"
174
+ def upload_image_link(object, assoc_name=:photo, scope=:admin)
175
+ photo_object = nil
176
+ photo_object = object.send(assoc_name) if object.respond_to?(assoc_name)
177
+ if photo_object.present? && photo_object.persisted?
178
+ url_for([:edit, scope, :image, id: photo_object.id, imageable_id: object.id, imageable_type: object.class.to_s, image_type: photo_object.class.name])
179
+ else
180
+ photo_object = object.send("build_#{assoc_name}")
181
+ url_for([:new, scope, :image, imageable_id: object.id, imageable_type: object.class.to_s, image_type: photo_object.class.name])
182
+ end
43
183
  end
44
184
  end
45
185
  end
@@ -0,0 +1,31 @@
1
+ module Poodle
2
+ module RenderHelper
3
+
4
+ def render_or_redirect(error, redirect_url, action, notice=nil)
5
+ respond_to do |format|
6
+ format.html {
7
+ if error
8
+ render action: action
9
+ else
10
+ redirect_to redirect_url, notice: notice
11
+ end
12
+ }
13
+ format.js {}
14
+ end
15
+ end
16
+
17
+ def render_list
18
+ respond_to do |format|
19
+ format.html { get_collections and render :index }
20
+ format.js {}
21
+ end
22
+ end
23
+
24
+ def render_show
25
+ respond_to do |format|
26
+ format.js { render action: :show }
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -7,44 +7,41 @@ class ImageUploader < CarrierWave::Uploader::Base
7
7
  # include CarrierWave::MiniMagick
8
8
 
9
9
  # Choose what kind of storage to use for this uploader:
10
- #storage Rails.env.production? ? :fog : :file
11
- storage :file
12
-
13
- def root
14
- Rails.root.join 'public/'
15
- end
10
+ storage Rails.env.production? ? :fog : :file
16
11
 
17
12
  # Override the directory where uploaded files will be stored.
18
13
  # This is a sensible default for uploaders that are meant to be mounted:
19
14
  def store_dir
20
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
15
+ "#{Rails.root}/uploads/#{model.class.to_s.underscore}/#{model.id}"
21
16
  end
22
17
 
18
+ #process :crop
19
+
23
20
  version :large do
24
- resize_to_limit(540, 540)
21
+ process :resize_to_limit => [540, 540]
25
22
  end
26
23
 
27
24
  version :medium do
28
- resize_to_fill(232, 232)
25
+ process :resize_to_limit => [232, 232]
29
26
  end
30
27
 
31
28
  version :thumb do
32
29
  #process :crop
33
- resize_to_fill(116, 116)
30
+ process :resize_to_fill => [116, 116]
34
31
  end
35
32
 
36
- # def crop
37
- # if model.crop_x.present?
38
- # resize_to_limit(540, 540)
39
- # manipulate! do |img|
40
- # x = model.crop_x.to_i
41
- # y = model.crop_y.to_i
42
- # w = model.crop_w.to_i
43
- # h = model.crop_h.to_i
44
- # img.crop!(x, y, w, h)
45
- # end
46
- # end
47
- # end
33
+ def crop
34
+ if model.crop_x.present?
35
+ resize_to_limit(540, 540)
36
+ manipulate! do |img|
37
+ x = model.crop_x.to_i
38
+ y = model.crop_y.to_i
39
+ w = model.crop_w.to_i
40
+ h = model.crop_h.to_i
41
+ img.crop!(x, y, w, h)
42
+ end
43
+ end
44
+ end
48
45
 
49
46
  # Provide a default URL as a default if there hasn't been a file uploaded:
50
47
  # def default_url
@@ -1,4 +1,4 @@
1
- <div class="row footer">
1
+ <div class="row footer-with-sidebar">
2
2
  <div class="col-md-12 text-center mt-15">
3
3
  © 2015 <a href="http://qwinixtech.com">Poodle Copyright Message</a>
4
4
  </div>
@@ -4,7 +4,8 @@
4
4
  <title><%= title -%></title>
5
5
  <%= meta_tags %>
6
6
  <link rel="icon" href="/assets/favicon.ico" type="image/png">
7
- <%= stylesheet_link_tag stylesheet_filename, :media => "all" -%>
7
+
8
+ <%= stylesheet_link_tag @stylesheet_filename, :media => "all" -%>
8
9
  <%= csrf_meta_tags -%>
9
10
  <%= yield :javascript_header -%>
10
11
  </head>
@@ -30,12 +31,15 @@
30
31
  </div>
31
32
 
32
33
  <%#* Page Content Starts here -%>
33
- <div class="pt-10" style="min-height:400px;">
34
+ <div id="div_page_content">
34
35
  <%= yield %>
35
36
  </div>
36
37
 
37
38
  <%#* Display Footer -%>
39
+ <div class="cl-40"></div>
40
+ <div id="div_page_footer" class="row footer-with-sidebar">
38
41
  <%= render :partial=>"/layouts/poodle/application/footer" -%>
42
+ </div>
39
43
 
40
44
  </div>
41
45
 
@@ -47,7 +51,7 @@
47
51
  <%= render :partial=>"/layouts/poodle/common/overlays" -%>
48
52
 
49
53
  <%#* Loading Javascripts -%>
50
- <%= javascript_include_tag javascript_filename -%>
54
+ <%= javascript_include_tag @javascript_filename -%>
51
55
 
52
56
  <%= yield :javascript_footer -%>
53
57
 
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="no-js">
3
+ <head>
4
+ <title><%= title -%></title>
5
+ <%= csrf_meta_tags -%>
6
+ </head>
7
+
8
+ <body>
9
+
10
+ <%= yield %>
11
+
12
+ <%#* Loading Javascripts -%>
13
+ <%= yield :javascript_footer -%>
14
+
15
+ </body>
16
+ </html>
@@ -1,5 +1,3 @@
1
- <div class="row footer">
2
- <div class="col-md-12 text-center mt-15">
3
- © 2015 <a href="http://qwinixtech.com">Poodle Copyright Message</a>
4
- </div>
1
+ <div class="col-md-12 text-center mt-15">
2
+ © 2015 <a href="github.com/qwinixlabs/poodle">All rights reserved - Poodle | QwinixLabs </a>
5
3
  </div>
@@ -1,4 +1,2 @@
1
- <div class="header">
2
- Header!!!
3
- </div>
1
+ <div class="header"></div>
4
2
 
@@ -0,0 +1,51 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="no-js">
3
+ <head>
4
+ <title><%= title -%></title>
5
+ <%= meta_tags %>
6
+ <link rel="icon" href="/assets/favicon.ico" type="image/png">
7
+
8
+ <%= stylesheet_link_tag @stylesheet_filename, :media => "all" -%>
9
+ <%= csrf_meta_tags -%>
10
+ <%= yield :javascript_header -%>
11
+ </head>
12
+ <body>
13
+
14
+ <div>
15
+
16
+ <div class="container-fluid header-block clearfix">
17
+
18
+ <div id="div_page_header">
19
+ <%= render :partial=>"/layouts/poodle/public/header" -%>
20
+ </div>
21
+
22
+ <%#* Show flash messages if controller has set any. -%>
23
+ <div id="div_flash_message" class="mt-30">
24
+ <%= flash_message(false) if defined?(flash) -%>
25
+ </div>
26
+
27
+ <%#* Page Content Starts here -%>
28
+ <div id="div_page_content_main">
29
+ <%= yield %>
30
+ </div>
31
+
32
+ <%#* Display Footer -%>
33
+ <div id="div_page_footer" class="row footer">
34
+ <%= render :partial=>"/layouts/poodle/public/footer" -%>
35
+ </div>
36
+
37
+ </div>
38
+
39
+ </div>
40
+
41
+ <%#* Display Hidden Overlays -%>
42
+ <%= render :partial=>"/layouts/poodle/common/overlays" -%>
43
+
44
+ <%#* Loading Javascripts -%>
45
+ <%= javascript_include_tag @javascript_filename -%>
46
+
47
+ <%= yield :javascript_footer -%>
48
+
49
+ </body>
50
+
51
+ </html>
@@ -4,7 +4,8 @@
4
4
  <title><%= title -%></title>
5
5
  <%= meta_tags %>
6
6
  <link rel="icon" href="/assets/favicon.ico" type="image/png">
7
- <%= stylesheet_link_tag stylesheet_filename, :media => "all" -%>
7
+
8
+ <%= stylesheet_link_tag @stylesheet_filename, :media => "all" -%>
8
9
  <%= csrf_meta_tags -%>
9
10
  <%= yield :javascript_header -%>
10
11
  </head>
@@ -19,17 +20,19 @@
19
20
  </div>
20
21
 
21
22
  <%#* Show flash messages if controller has set any. -%>
22
- <div id="div_flash_message">
23
+ <div id="div_flash_message" class="mt-30">
23
24
  <%= flash_message(false) if defined?(flash) -%>
24
25
  </div>
25
26
 
26
27
  <%#* Page Content Starts here -%>
27
- <div class="pt-10" style="min-height:400px;">
28
+ <div id="div_page_content_main">
28
29
  <%= yield %>
29
30
  </div>
30
31
 
31
32
  <%#* Display Footer -%>
32
- <%= render :partial=>"/layouts/poodle/public/footer" -%>
33
+ <div id="div_page_footer" class="row footer">
34
+ <%= render :partial=>"/layouts/poodle/public/footer" -%>
35
+ </div>
33
36
 
34
37
  </div>
35
38
 
@@ -39,7 +42,7 @@
39
42
  <%= render :partial=>"/layouts/poodle/common/overlays" -%>
40
43
 
41
44
  <%#* Loading Javascripts -%>
42
- <%= javascript_include_tag javascript_filename -%>
45
+ <%= javascript_include_tag @javascript_filename -%>
43
46
 
44
47
  <%= yield :javascript_footer -%>
45
48