poodle-rb 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +34 -0
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +520 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/javascripts/poodle/application.js +21 -0
- data/app/assets/javascripts/poodle/bootstrap.js +2323 -0
- data/app/assets/javascripts/poodle/common.js +0 -0
- data/app/assets/javascripts/poodle/photo_upload.js +104 -0
- data/app/assets/javascripts/poodle/utilities.js +50 -0
- data/app/assets/javascripts/poodle/validations/sample.js +67 -0
- data/app/assets/stylesheets/poodle/application.css +18 -0
- data/app/assets/stylesheets/poodle/bootstrap-theme.css +473 -0
- data/app/assets/stylesheets/poodle/bootstrap.css +5482 -0
- data/app/assets/stylesheets/poodle/font-awesome.css +1672 -0
- data/app/assets/stylesheets/poodle/poodle-theme.css +55 -0
- data/app/controllers/poodle/application_controller.rb +15 -0
- data/app/helpers/poodle/application_helper.rb +4 -0
- data/app/helpers/poodle/display_helper.rb +36 -0
- data/app/helpers/poodle/flash_helper.rb +14 -0
- data/app/helpers/poodle/image_helper.rb +100 -0
- data/app/helpers/poodle/meta_tags_helper.rb +4 -0
- data/app/helpers/poodle/navigation_helper.rb +20 -0
- data/app/helpers/poodle/notification_helper.rb +20 -0
- data/app/helpers/poodle/params_parser_helper.rb +32 -0
- data/app/helpers/poodle/title_helper.rb +16 -0
- data/app/helpers/poodle/url_helper.rb +21 -0
- data/app/views/layouts/poodle/application/_footer.html.erb +5 -0
- data/app/views/layouts/poodle/application/_header.html.erb +26 -0
- data/app/views/layouts/poodle/application/_sidebar.html.erb +45 -0
- data/app/views/layouts/poodle/application.html.erb +56 -0
- data/app/views/layouts/poodle/common/_field.html.erb +46 -0
- data/app/views/layouts/poodle/common/_flash_message.html.erb +23 -0
- data/app/views/layouts/poodle/common/_meta_tags.html.erb +42 -0
- data/app/views/layouts/poodle/common/_overlays.html.erb +28 -0
- data/app/views/layouts/poodle/public.html.erb +48 -0
- data/app/views/widgets/_more_details.html.erb +89 -0
- data/config/initializers/api_errors.rb +32 -0
- data/config/routes.rb +2 -0
- data/lib/poodle/configuration.rb +14 -0
- data/lib/poodle/engine.rb +5 -0
- data/lib/poodle/version.rb +3 -0
- data/lib/poodle-rb.rb +20 -0
- data/lib/tasks/poodle_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +78 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/poodle_test.rb +7 -0
- data/test/test_helper.rb +19 -0
- metadata +226 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
/* Styles for footer */
|
2
|
+
.footer {margin:100px 0px 0px 0px;color: #4b4b4b;height:50px;text-align:center;}
|
3
|
+
|
4
|
+
/* Styles for Sidebar and Main Content */
|
5
|
+
|
6
|
+
.sidebar li {margin:18px 0px;padding-left:25px;list-style: none;}
|
7
|
+
.sidebar li.heading {color: #D0D0D0;margin: 25px 0px;padding-left:5px;}
|
8
|
+
.sidebar li.active {background-color: #eeeeee;padding: 10px;}
|
9
|
+
.sidebar li.active a {color: #cd2177;}
|
10
|
+
.sidebar li a {color: #fff; margin:5px 0px;}
|
11
|
+
.sidebar li a:hover {color: #f0f0f0;text-decoration: none;}
|
12
|
+
|
13
|
+
@media (min-width: 500px) {
|
14
|
+
.container-fluid.with_sidebar {padding-left:0px;}
|
15
|
+
.main-content {float: left;width:70%;margin-left:15px;}
|
16
|
+
.sidebar{display:block;float: left;background-color:#15894F;color:#fff;padding:10px;height:200vh;position: relative; width:25%;}
|
17
|
+
}
|
18
|
+
|
19
|
+
@media (max-width: 700px) {
|
20
|
+
.sidebar ul {padding:0px; margin:0px;}
|
21
|
+
}
|
22
|
+
|
23
|
+
@media (max-width: 500px) {
|
24
|
+
.main-content {float: none;width:100%;margin-left:0px;}
|
25
|
+
.sidebar{display:none}
|
26
|
+
.btn-text{display: none}
|
27
|
+
}
|
28
|
+
|
29
|
+
.panel-420 {
|
30
|
+
top: 50%;
|
31
|
+
left: 50%;
|
32
|
+
display: block;
|
33
|
+
margin-top: -185px;
|
34
|
+
margin-left: -205px;
|
35
|
+
width: 420px;
|
36
|
+
height: auto;
|
37
|
+
position: absolute;
|
38
|
+
}
|
39
|
+
|
40
|
+
.panel-bordered {
|
41
|
+
-webkit-border-radius: 15px;
|
42
|
+
-moz-border-radius: 15px;
|
43
|
+
-ms-border-radius: 15px;
|
44
|
+
-o-border-radius: 15px;
|
45
|
+
border-radius: 15px;
|
46
|
+
}
|
47
|
+
|
48
|
+
.rounded {
|
49
|
+
overflow: hidden;
|
50
|
+
-webkit-border-radius: 50%;
|
51
|
+
-moz-border-radius: 50%;
|
52
|
+
border-radius: 50%;
|
53
|
+
border: 1px solid #d1d1d1;
|
54
|
+
display: inline-block;
|
55
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Poodle::ApplicationController < ActionController::Base
|
2
|
+
|
3
|
+
## This filter method is used to fetch current user
|
4
|
+
before_filter :current_user
|
5
|
+
|
6
|
+
include Poodle::ParamsParserHelper
|
7
|
+
include Poodle::FlashHelper
|
8
|
+
include Poodle::UrlHelper
|
9
|
+
include Poodle::TitleHelper
|
10
|
+
include Poodle::ImageHelper
|
11
|
+
include Poodle::NavigationHelper
|
12
|
+
include Poodle::SessionsHelper
|
13
|
+
include Poodle::NotificationHelper
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Poodle
|
2
|
+
module DisplayHelper
|
3
|
+
|
4
|
+
def scrap_word(text, char_count_limit, more_text = nil, more_link = nil,style='')
|
5
|
+
# remove HTML tags
|
6
|
+
text = text.to_s.gsub(/<\/?[^>]*>/, " ")
|
7
|
+
# remove additional spaces
|
8
|
+
text = text.to_s.gsub(/[ ]+/, " ")
|
9
|
+
if text.length < char_count_limit
|
10
|
+
return text
|
11
|
+
end
|
12
|
+
teaser = ""
|
13
|
+
words = text.split(/ /)
|
14
|
+
words.each do |word|
|
15
|
+
if word.length > 0
|
16
|
+
if (teaser + word).length > char_count_limit
|
17
|
+
if more_text && more_link
|
18
|
+
teaser = teaser + " " + link_to(more_text, more_link,:style=>style, :target=>"_blank")
|
19
|
+
else
|
20
|
+
teaser = teaser.strip + "..."
|
21
|
+
end
|
22
|
+
break;
|
23
|
+
else
|
24
|
+
teaser = teaser + word + " "
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
return teaser
|
29
|
+
end
|
30
|
+
|
31
|
+
def display_time(disp_time, class_name = nil)
|
32
|
+
return distance_of_time_in_words_to_now(disp_time) + " ago"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Poodle
|
2
|
+
module FlashHelper
|
3
|
+
|
4
|
+
## This function will set a flash message depending up on the request type (ajax - xml http or direct http)
|
5
|
+
## example : store_flash_message("The message has been sent successfully", :success)
|
6
|
+
def store_flash_message(message, type)
|
7
|
+
if request.xhr?
|
8
|
+
flash.now[type] = message
|
9
|
+
else
|
10
|
+
flash[type] = message
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module Poodle
|
2
|
+
module ImageHelper
|
3
|
+
|
4
|
+
DEFAULT_PLACE_HOLDER_HEIGHT = 60
|
5
|
+
DEFAULT_PLACE_HOLDER_WIDTH = 100
|
6
|
+
DEFAULT_PLACE_HOLDER_TEXT = "<No Image>"
|
7
|
+
|
8
|
+
# This method only works with carrier wave way of doing.
|
9
|
+
# eg: user.profile_picture.image.large.url
|
10
|
+
# Usage:
|
11
|
+
# image_url(user, "profile_picture.image.large.url")
|
12
|
+
# image_url(user, "profile_picture.image.large.url")
|
13
|
+
# image_url(user, "profile_picture.image.large.url", {width: 40, height: 10})
|
14
|
+
# Where as the hash contains width and height for the place holder incase if the object doesn't has the image object
|
15
|
+
def image_url(object, eval_url, place_holder={})
|
16
|
+
begin
|
17
|
+
url = object.send :eval, eval_url
|
18
|
+
raise if url.blank?
|
19
|
+
rescue
|
20
|
+
url = place_holder[:url] ? place_holder[:url] : "http://placehold.it/#{place_holder[:width]}x#{place_holder[:height]}&text=#{place_holder[:text]}"
|
21
|
+
end
|
22
|
+
return url
|
23
|
+
end
|
24
|
+
|
25
|
+
# This method will render the image with required width and height.
|
26
|
+
# The image url will be set to the placeholder url if the object doesn't respond to the image method
|
27
|
+
# Usage:
|
28
|
+
# display_image(client, "logo.image.url")
|
29
|
+
# display_image(client, "logo.image.url",
|
30
|
+
# width: "100%", height:"100%")
|
31
|
+
# display_image(client, "logo.image.url",
|
32
|
+
# width: "100%", height:"100%",
|
33
|
+
# place_holder: {width: 100, height: 50, text: "<No Image>"})
|
34
|
+
def display_image(object, eval_url, hsh={})
|
35
|
+
hsh[:width] = "100%" unless hsh[:width]
|
36
|
+
hsh[:height] = "auto" unless hsh[:height]
|
37
|
+
|
38
|
+
ph = hsh.has_key?(:place_holder) ? hsh[:place_holder] : {}
|
39
|
+
ph[:width] = ph.has_key?(:width) ? ph[:width] : DEFAULT_PLACE_HOLDER_WIDTH
|
40
|
+
ph[:height] = ph.has_key?(:height) ? ph[:height] : DEFAULT_PLACE_HOLDER_HEIGHT
|
41
|
+
ph[:text] = ph.has_key?(:text) ? ph[:text] : DEFAULT_PLACE_HOLDER_TEXT
|
42
|
+
hsh[:place_holder] = ph
|
43
|
+
|
44
|
+
hsh[:style] = "" unless hsh[:style]
|
45
|
+
hsh[:class] = "" unless hsh[:class]
|
46
|
+
img_url = image_url(object, eval_url, ph)
|
47
|
+
return image_tag img_url, class: hsh[:class], style: "width:#{hsh[:width]};height:#{hsh[:height]};#{hsh[:style]}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def display_user_image(user, hsh)
|
51
|
+
hsh[:width] = "100%" unless hsh[:width]
|
52
|
+
hsh[:height] = "auto" unless hsh[:height]
|
53
|
+
|
54
|
+
ph = hsh.has_key?(:place_holder) ? hsh[:place_holder] : {}
|
55
|
+
ph[:width] = ph.has_key?(:width) ? ph[:width] : DEFAULT_PLACE_HOLDER_WIDTH
|
56
|
+
ph[:height] = ph.has_key?(:height) ? ph[:height] : DEFAULT_PLACE_HOLDER_HEIGHT
|
57
|
+
ph[:text] = ph.has_key?(:text) ? ph[:text] : DEFAULT_PLACE_HOLDER_TEXT
|
58
|
+
hsh[:place_holder] = ph
|
59
|
+
|
60
|
+
hsh[:style] = "" unless hsh[:style]
|
61
|
+
hsh[:class] = "" unless hsh[:class]
|
62
|
+
hsh[:size] = "thumb" unless hsh[:size]
|
63
|
+
hsh[:url_domain] = "http://localhost:3000" unless hsh[:url_domain]
|
64
|
+
|
65
|
+
if user.send("#{hsh[:size]}_url").blank?
|
66
|
+
url = "http://placehold.it/#{ph[:width]}x#{ph[:height]}&text=#{ph[:text]}"
|
67
|
+
else
|
68
|
+
url = hsh[:url_domain] + user.send("#{hsh[:size]}_url")
|
69
|
+
end
|
70
|
+
|
71
|
+
return image_tag url, class: hsh[:class], style: "width:#{hsh[:width]};height:#{hsh[:height]};#{hsh[:style]}"
|
72
|
+
end
|
73
|
+
|
74
|
+
## Returns new photo url or edit existing photo url based on
|
75
|
+
# object is associated with photo or not
|
76
|
+
# == Examples
|
77
|
+
# >>> upload_image_link(@user, admin_user_path(@user), :profile_picture)
|
78
|
+
# => "/admin/images/new" OR
|
79
|
+
# => "/admin/images/1/edit"
|
80
|
+
def upload_image_link(object, redirect_url, assoc_name=:photo)
|
81
|
+
|
82
|
+
photo_object = nil
|
83
|
+
photo_object = object.send(assoc_name) if object.respond_to?(assoc_name)
|
84
|
+
#binding.pry
|
85
|
+
if photo_object.present?
|
86
|
+
edit_admin_image_path(photo_object,
|
87
|
+
:redirect_url => redirect_url,
|
88
|
+
:imageable_id => object.id,
|
89
|
+
:imageable_type => object.class.to_s,
|
90
|
+
:image_type => photo_object.class.name)
|
91
|
+
else
|
92
|
+
photo_object = object.send("build_#{assoc_name}")
|
93
|
+
new_admin_image_path(:redirect_url => redirect_url,
|
94
|
+
:imageable_id => object.id,
|
95
|
+
:imageable_type => object.class.to_s,
|
96
|
+
:image_type => photo_object.class.name)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Poodle
|
2
|
+
module NavigationHelper
|
3
|
+
|
4
|
+
def nav_active?(name)
|
5
|
+
@nav == name
|
6
|
+
end
|
7
|
+
|
8
|
+
def nav_class(name)
|
9
|
+
nav_active?(name) ? "active" : ""
|
10
|
+
end
|
11
|
+
|
12
|
+
def set_nav(name)
|
13
|
+
@nav = name
|
14
|
+
end
|
15
|
+
|
16
|
+
def current_nav
|
17
|
+
@nav
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Poodle
|
2
|
+
module NotificationHelper
|
3
|
+
|
4
|
+
## This function will set a flash message depending up on the request type (ajax - xml http or direct http)
|
5
|
+
## example : store_flash_message("The message has been sent successfully", :success)
|
6
|
+
def store_flash_message(message, type)
|
7
|
+
if request.xhr?
|
8
|
+
flash.now[type] = message
|
9
|
+
else
|
10
|
+
flash[type] = message
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def set_notification_messages(heading, alert, not_type)
|
15
|
+
@heading = heading
|
16
|
+
@alert = alert
|
17
|
+
store_flash_message("#{@heading}: #{@alert}", not_type) if defined?(flash) && flash
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Poodle
|
2
|
+
module ParamsParserHelper
|
3
|
+
|
4
|
+
def parse_pagination_params
|
5
|
+
@current_page = params[:page] || "1"
|
6
|
+
@per_page = params[:per_page] || Poodle.configuration.items_per_list.to_s
|
7
|
+
|
8
|
+
if @per_page && @per_page.to_i > Poodle.configuration.max_items_per_list
|
9
|
+
@per_page = Poodle.configuration.items_per_list.to_s
|
10
|
+
end
|
11
|
+
|
12
|
+
@offset = (@current_page.to_i - 1) * (@per_page.to_i)
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def parse_filter_dates(instance_name, start_date_name="start_date", end_date_name="end_date")
|
17
|
+
## Parsing the date info if any
|
18
|
+
unless params[instance_name][start_date_name].blank?
|
19
|
+
d = params[instance_name][start_date_name] ? (Time.parse(params[instance_name][start_date_name])) : (Date.today - 1.day)
|
20
|
+
@start_date = params[instance_name][:start_date] || (Date.today - 1.day)
|
21
|
+
@start_time = Time.utc(d.year,d.month,d.day,00,00,00)
|
22
|
+
end
|
23
|
+
unless params[instance_name][end_date_name].blank?
|
24
|
+
d = params[instance_name][end_date_name] ? Time.parse(params[instance_name][end_date_name]) : Date.today
|
25
|
+
@end_date = params[instance_name][end_date_name] || Date.today
|
26
|
+
@end_time = Time.utc(d.year,d.month,d.day,23,59,59)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Poodle
|
2
|
+
module UrlHelper
|
3
|
+
|
4
|
+
def add_query_params(url, params)
|
5
|
+
parsed_uri = URI(url)
|
6
|
+
|
7
|
+
if parsed_uri.query
|
8
|
+
query_params = URI.decode_www_form(parsed_uri.query)
|
9
|
+
else
|
10
|
+
query_params = []
|
11
|
+
end
|
12
|
+
|
13
|
+
params.each_pair do |k, v|
|
14
|
+
query_params << [k.to_s, v]
|
15
|
+
end
|
16
|
+
|
17
|
+
parsed_uri.query = URI.encode_www_form(query_params)
|
18
|
+
parsed_uri.to_s
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<div class="header">
|
2
|
+
|
3
|
+
<ul class="nav nav-pills pull-right">
|
4
|
+
<%# if @current_user %>
|
5
|
+
<li class="dropdown">
|
6
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%#= @current_user.name %> User Name <b class="caret"></b></a>
|
7
|
+
<ul class="dropdown-menu">
|
8
|
+
<li class="dropdown-header">Profile</li>
|
9
|
+
<li><a href="#">Update Profile</a></li>
|
10
|
+
<li><a href="#">Profile Settings</a></li>
|
11
|
+
<li><a href="#">Notifications Settings</a></li>
|
12
|
+
<li class="divider"></li>
|
13
|
+
<li><%= link_to raw("Sign Out"), "#", method: :delete %></li>
|
14
|
+
</ul>
|
15
|
+
</li>
|
16
|
+
<%# else %>
|
17
|
+
<!-- <li class="<%= nav_class("Manage Page 1") %>">
|
18
|
+
<%#= link_to raw("Sign In"), "#" %>
|
19
|
+
</li> -->
|
20
|
+
<%# end %>
|
21
|
+
|
22
|
+
</ul>
|
23
|
+
<div class="cl-10"></div>
|
24
|
+
<div class="visible-xs" style="border:1px solid #c1c1c1;margin-bottom:20px"></div>
|
25
|
+
</div>
|
26
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<h3 class="text-center">Poodle</h3>
|
2
|
+
<!-- <img src="http://www.domain.com/images/logo.png"/> -->
|
3
|
+
<div class="cl-30"></div>
|
4
|
+
|
5
|
+
<ul>
|
6
|
+
|
7
|
+
<li class="<%= nav_class("user/dashboard") %>">
|
8
|
+
<%= link_to raw("<i class=\"fa fa-dashboard\"></i> Dashboard"), "#" %>
|
9
|
+
</li>
|
10
|
+
|
11
|
+
<% if @current_user.is_admin? %>
|
12
|
+
|
13
|
+
<li class="heading">Admin</li>
|
14
|
+
|
15
|
+
<li class="<%= nav_class("admin/1") %>">
|
16
|
+
<%= link_to raw("<i class=\"fa fa-globe\"></i> Manage Admin 1"), "#" %>
|
17
|
+
</li>
|
18
|
+
|
19
|
+
<li class="<%= nav_class("admin/2") %>">
|
20
|
+
<%= link_to raw("<i class=\"fa fa-rub\"></i> Manage Admin 2"), "#" %>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
<% if @current_user.is_super_admin? %>
|
26
|
+
|
27
|
+
<li class="heading">System Configuration</li>
|
28
|
+
|
29
|
+
<li class="<%= nav_class("super_admin/1") %>">
|
30
|
+
<%= link_to raw("<i class=\"fa fa-link\"></i> Configure 3"), "#" %>
|
31
|
+
</li>
|
32
|
+
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
<li class="heading">Account</li>
|
36
|
+
|
37
|
+
<li class="<%= nav_class("account/profile") %>">
|
38
|
+
<%= link_to raw("<i class=\"fa fa-user\"></i> My Profile"), "#" %>
|
39
|
+
</li>
|
40
|
+
|
41
|
+
<li>
|
42
|
+
<%= link_to raw("<i class=\"fa fa-power-off\"></i> Sign Out"), "#" %>
|
43
|
+
</li>
|
44
|
+
</ul>
|
45
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en" class="no-js">
|
3
|
+
<head>
|
4
|
+
<title><%= title -%></title>
|
5
|
+
<%= render :partial=>"/layouts/poodle/common/meta_tags" -%>
|
6
|
+
<link rel="icon" href="/assets/favicon.ico" type="image/png">
|
7
|
+
<%= stylesheet_link_tag "poodle/application", :media => "all" -%>
|
8
|
+
<%= csrf_meta_tags -%>
|
9
|
+
<%= yield :javascript_header -%>
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
|
13
|
+
<div>
|
14
|
+
|
15
|
+
<div class="container-fluid with_sidebar header-block clearfix">
|
16
|
+
|
17
|
+
<%#* Display Sidebar -%>
|
18
|
+
<div class="sidebar">
|
19
|
+
<%= render :partial=>"/layouts/poodle/application/sidebar" -%>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="main-content">
|
23
|
+
<div id="div_page_header">
|
24
|
+
<%= render :partial=>"/layouts/poodle/application/header" -%>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<%#* Show flash messages if controller has set any. -%>
|
28
|
+
<div id="div_flash_message" class="container-fluid" >
|
29
|
+
<%= render :partial=>"/layouts/poodle/common/flash_message" -%>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<%#* Page Content Starts here -%>
|
33
|
+
<div class="pt-10" style="min-height:400px;">
|
34
|
+
<%= yield %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<%#* Display Footer -%>
|
38
|
+
<%= render :partial=>"/layouts/poodle/application/footer" -%>
|
39
|
+
|
40
|
+
</div>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<%#* Display Hidden Overlays -%>
|
47
|
+
<%= render :partial=>"/layouts/poodle/common/overlays" -%>
|
48
|
+
|
49
|
+
<%#* Loading Javascripts -%>
|
50
|
+
<%= javascript_include_tag "poodle/application" -%>
|
51
|
+
|
52
|
+
<%= yield :javascript_footer -%>
|
53
|
+
|
54
|
+
</body>
|
55
|
+
|
56
|
+
</html>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<%
|
2
|
+
unless defined?(required)
|
3
|
+
required = false
|
4
|
+
end
|
5
|
+
unless defined?(place_holder)
|
6
|
+
place_holder = ""
|
7
|
+
end
|
8
|
+
inp_id = "inp_#{display_name.underscore.split(" ").join("_")}"
|
9
|
+
error_class = object.errors[field_name.to_s].any? ? "has-errors" : ""
|
10
|
+
%>
|
11
|
+
|
12
|
+
<div class="form-group <%= error_class %>">
|
13
|
+
|
14
|
+
<% if ["text", "email", "search", "password", "date", "time", "tel", "url", "month", "file", "image", ""].include?(input_type) %>
|
15
|
+
|
16
|
+
<label for="inp_<%= display_name.underscore.split(" ").join("_") %>" class="col-md-4 control-label">
|
17
|
+
<%= display_name %>
|
18
|
+
<span class="text-color-red ml-10 mr-5 pull-right"><%= required ? "*" : raw(" ") %></span>
|
19
|
+
</label>
|
20
|
+
<div class="col-md-8">
|
21
|
+
<input name="<%= object_name %>[<%= field_name %>]" id="inp_<%= display_name.underscore.split(" ").join("_") %>" class="text input form-control" type="<%= input_type %>" placeholder="<%= place_holder %>" value="<%= object.send(field_name.to_s) %>" />
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<% elsif input_type == "checkbox" %>
|
25
|
+
|
26
|
+
<label for="inp_<%= display_name.underscore.split(" ").join("_") %>" class="col-md-4 control-label">
|
27
|
+
<%= display_name %>
|
28
|
+
<span class="text-color-red ml-10 mr-5 pull-right"><%= required ? "*" : raw(" ") %></span>
|
29
|
+
</label>
|
30
|
+
<div class="col-md-8">
|
31
|
+
<input name="<%= object_name %>[<%= field_name %>]" id="inp_<%= display_name.underscore.split(" ").join("_") %>" type="<%= input_type %>" class="checkbox input form-control" <%= object.send(field_name.to_s) ? "checked='checked'" : "" %> />
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<% elsif input_type == "textarea" %>
|
35
|
+
|
36
|
+
<label for="inp_<%= display_name.underscore.split(" ").join("_") %>" class="col-md-4 control-label">
|
37
|
+
<%= display_name %>
|
38
|
+
<span class="text-color-red ml-10 mr-5 pull-right"><%= required ? "*" : raw(" ") %></span>
|
39
|
+
</label>
|
40
|
+
<div class="col-md-8">
|
41
|
+
<textarea name="<%= object_name %>[<%= field_name %>]" style="height:200px;" class="textarea input form-control" id="inp_<%= display_name.underscore.split(" ").join("_") %> placeholder="<%= place_holder %>" "><%= object.send(field_name.to_s) %></textarea>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<% end %>
|
45
|
+
|
46
|
+
</div>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%
|
2
|
+
if request.xhr?
|
3
|
+
flash_message = flash.now[:success] || flash.now[:notice] || flash.now[:alert] || flash.now[:error]
|
4
|
+
style_classes = ""
|
5
|
+
else
|
6
|
+
style_classes = ""
|
7
|
+
flash_message = flash[:success] || flash[:notice] || flash[:alert] || flash[:error]
|
8
|
+
end
|
9
|
+
cls_name = "alert-info"
|
10
|
+
cls_name = 'alert-success' if flash.now[:success] || flash[:success]
|
11
|
+
cls_name = 'alert-warning' if flash.now[:alert] || flash[:alert]
|
12
|
+
cls_name = 'alert-danger' if flash.now[:error] || flash[:error]
|
13
|
+
|
14
|
+
flash_message = flash_message.strip if flash_message
|
15
|
+
|
16
|
+
%>
|
17
|
+
|
18
|
+
<% unless flash_message.blank? %>
|
19
|
+
<div class="<%= style_classes %> alert <%= cls_name %> fade in mb-10" data-alert="alert">
|
20
|
+
<a class="close" data-dismiss='alert' href="#">×</a>
|
21
|
+
<p><%= flash_message %></p>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
<%# meta tags%>
|
3
|
+
<% if @meta_tags %>
|
4
|
+
<% if @meta_tags[:rel_prev] %>
|
5
|
+
<link rel="prev" href="<%%= @meta_tags[:rel_prev] %>" />
|
6
|
+
<% end %>
|
7
|
+
<% if @meta_tags[:rel_next] %>
|
8
|
+
<link rel="next" href="<%%= @meta_tags[:rel_next] %>" />
|
9
|
+
<% end %>
|
10
|
+
<% if @meta_tags[:canonical] %>
|
11
|
+
<link rel="canonical" href="<%%= @meta_tags[:canonical] %>" />
|
12
|
+
<% end %>
|
13
|
+
<% if @meta_tags[:meta_description] %>
|
14
|
+
<meta name="description" content="<%%= @meta_tags[:meta_description] %>"></meta>
|
15
|
+
<% else %>
|
16
|
+
<meta name="description" content="Twitter Like App = A learning app."></meta>
|
17
|
+
<% end %>
|
18
|
+
<% if @meta_tags[:meta_keywords] %>
|
19
|
+
<meta name="keywords" content="<%%= @meta_tags[:meta_keywords] %>"></meta>
|
20
|
+
<% else %>
|
21
|
+
<% meta_keywords = "Twitter Like App = A learning app." %>
|
22
|
+
<meta name="keywords" content="<%%= meta_keywords %>"></meta>
|
23
|
+
<% end %>
|
24
|
+
<% if @meta_tags[:robots] %>
|
25
|
+
<meta name="robots" content="<%%= @meta_tags[:robots] %>" />
|
26
|
+
<% else %>
|
27
|
+
<meta name="robots" content="all" />
|
28
|
+
<% end %>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<meta charset="utf-8">
|
32
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
33
|
+
<meta name="copyright" content="2014 kpvarma" />
|
34
|
+
<meta name="content-language" content="en" />
|
35
|
+
<meta name="author" content="K P Varma" />
|
36
|
+
<meta name="resource-type" content="document" />
|
37
|
+
<meta name="distribution" content="global" />
|
38
|
+
<meta name="rating" content="general" />
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<div id="div_modal_generic" class="modal fade">
|
2
|
+
<div class="modal-dialog">
|
3
|
+
<div class="modal-content">
|
4
|
+
<div class="modal-header">
|
5
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
6
|
+
<h4 class="modal-title">Modal title</h4>
|
7
|
+
</div>
|
8
|
+
<div class="modal-body-main"></div>
|
9
|
+
</div><!-- /.modal-content -->
|
10
|
+
</div><!-- /.modal-dialog -->
|
11
|
+
</div><!-- /.modal -->
|
12
|
+
|
13
|
+
<div id="div_modal_message" class="modal fade">
|
14
|
+
<div class="modal-dialog">
|
15
|
+
<div class="modal-content">
|
16
|
+
<div class="modal-header">
|
17
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
18
|
+
<h4 class="modal-title">Modal title</h4>
|
19
|
+
</div>
|
20
|
+
<div class="modal-body">
|
21
|
+
<p>One fine body…</p>
|
22
|
+
</div>
|
23
|
+
<div class="modal-footer">
|
24
|
+
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
|
25
|
+
</div>
|
26
|
+
</div><!-- /.modal-content -->
|
27
|
+
</div><!-- /.modal-dialog -->
|
28
|
+
</div><!-- /.modal -->
|