wheels 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/app/controllers/blogs_controller.rb +17 -0
- data/app/controllers/galleries_controller.rb +60 -0
- data/app/controllers/images_controller.rb +30 -0
- data/app/controllers/profiles_controller.rb +16 -0
- data/app/controllers/users_controller.rb +4 -0
- data/app/models/ability.rb +23 -0
- data/app/models/blog.rb +8 -0
- data/app/models/gallery.rb +5 -0
- data/app/models/image.rb +8 -0
- data/app/models/profile.rb +11 -0
- data/app/models/role.rb +8 -0
- data/app/models/user.rb +43 -0
- data/app/views/blogs/_form.html.haml +28 -0
- data/app/views/blogs/edit.html.haml +8 -0
- data/app/views/blogs/index.html.haml +19 -0
- data/app/views/blogs/index.xml.builder +27 -0
- data/app/views/blogs/new.html.haml +6 -0
- data/app/views/blogs/show.html.haml +10 -0
- data/app/views/galleries/_form.html.haml +29 -0
- data/app/views/galleries/_show.html.haml +21 -0
- data/app/views/galleries/edit.html.haml +7 -0
- data/app/views/galleries/index.html.haml +15 -0
- data/app/views/galleries/new.html.haml +5 -0
- data/app/views/galleries/show.html.haml +4 -0
- data/app/views/images/_form.html.haml +10 -0
- data/app/views/images/create.js.haml +3 -0
- data/app/views/images/destroy.js.haml +3 -0
- data/app/views/images/edit.html.haml +7 -0
- data/app/views/images/edit.js.haml +3 -0
- data/app/views/images/index.html.haml +17 -0
- data/app/views/images/index.js.haml +3 -0
- data/app/views/images/new.html.haml +5 -0
- data/app/views/images/new.js.haml +3 -0
- data/app/views/images/show.html.haml +5 -0
- data/app/views/images/show.js.haml +3 -0
- data/app/views/images/update.js.haml +3 -0
- data/app/views/layouts/image_dialog.html.haml +18 -0
- data/app/views/profiles/_form.html.haml +26 -0
- data/app/views/profiles/edit.html.haml +7 -0
- data/app/views/profiles/index.html.haml +25 -0
- data/app/views/profiles/new.html.haml +5 -0
- data/app/views/profiles/show.html.haml +21 -0
- data/app/views/users/index.html.haml +19 -0
- data/config/amazon_s3.yml +15 -0
- data/db/migrate/add_fields_to_users.rb +28 -0
- data/db/migrate/create_blogs.rb +16 -0
- data/db/migrate/create_galleries.rb +15 -0
- data/db/migrate/create_images.rb +17 -0
- data/db/migrate/create_profiles.rb +24 -0
- data/db/migrate/create_roles.rb +16 -0
- data/lib/generators/wheels/recipes/wheels.rb +0 -1
- data/lib/generators/wheels/wheels_generator.rb +1 -1
- data/lib/wheels.rb +1 -0
- data/public/404.html +26 -0
- data/public/422.html +26 -0
- data/public/500.html +26 -0
- data/public/favicon.ico +0 -0
- data/public/images/dreamy/Thumbs.db +0 -0
- data/public/images/dreamy/bg-ad-top.png +0 -0
- data/public/images/dreamy/bg-body.png +0 -0
- data/public/images/dreamy/bg-feed.gif +0 -0
- data/public/images/dreamy/bg-footer.jpg +0 -0
- data/public/images/dreamy/bg-header.jpg +0 -0
- data/public/images/dreamy/bg-menu-hover.png +0 -0
- data/public/images/dreamy/bg-menu.png +0 -0
- data/public/images/dreamy/bg-sidebar-bottom.gif +0 -0
- data/public/images/dreamy/button-feed.png +0 -0
- data/public/images/dreamy/icon-comment.png +0 -0
- data/public/images/growl/error.png +0 -0
- data/public/images/growl/growl_bottom.png +0 -0
- data/public/images/growl/growl_repeat.png +0 -0
- data/public/images/growl/growl_top.png +0 -0
- data/public/images/growl/info.png +0 -0
- data/public/images/menu/item-pointer-mover.gif +0 -0
- data/public/images/menu/item-pointer.gif +0 -0
- data/public/images/menu/lava.gif +0 -0
- data/public/images/menu/lava.png +0 -0
- data/public/images/menu/main-bg.png +0 -0
- data/public/images/menu/main-delimiter.png +0 -0
- data/public/javascripts/jquery.growl.js +143 -0
- data/public/javascripts/loadbehind.js +0 -0
- data/public/javascripts/menu.js +247 -0
- data/public/stylesheets/.gitkeep +0 -0
- data/public/stylesheets/dreamy.css +181 -0
- data/public/stylesheets/menu.css +101 -0
- data/public/stylesheets/sass/dreamy.sass +195 -0
- data/public/stylesheets/sass/menu.sass +105 -0
- data/public/stylesheets/scaffold.css +56 -0
- data/public/stylesheets/ui-lightness/images/ui-anim_basic_16x16.gif +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/public/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/public/stylesheets/ui-lightness/jquery-ui-1.8.2.custom.css +359 -0
- data/wheels.gemspec +102 -1
- metadata +104 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.8
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class BlogsController < InheritedResources::Base
|
2
|
+
respond_to :html, :xml
|
3
|
+
belongs_to :user, :optional=>true
|
4
|
+
before_filter :load_current_user
|
5
|
+
|
6
|
+
def collection
|
7
|
+
@blogs ||= end_of_association_chain.
|
8
|
+
paginate(:page => params[:page], :order => 'created_at DESC' )
|
9
|
+
end
|
10
|
+
|
11
|
+
def load_current_user
|
12
|
+
unless params[:user_id]
|
13
|
+
@user ||= (current_user ? User.find(current_user.id) : User.super_user)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
class GalleriesController < InheritedResources::Base
|
2
|
+
belongs_to :user, :optional=>true
|
3
|
+
before_filter :load_user
|
4
|
+
|
5
|
+
def index
|
6
|
+
index! do |format|
|
7
|
+
if params[:CKEditorFuncNum]
|
8
|
+
format.html{
|
9
|
+
render :action=>:index, :layout=>"image_dialog"
|
10
|
+
}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def edit
|
16
|
+
edit! do |format|
|
17
|
+
if params[:CKEditorFuncNum]
|
18
|
+
format.html{
|
19
|
+
render :action=>:edit, :layout=>"image_dialog"
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def show
|
26
|
+
show! do |format|
|
27
|
+
images = paginated_images_for(@gallery)
|
28
|
+
if params[:CKEditorFuncNum]
|
29
|
+
format.html{
|
30
|
+
render :action=>:show, :layout=>"image_dialog", :locals=>{:images=>images}
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def new
|
37
|
+
@gallery = Gallery.create(:user=>@user)
|
38
|
+
new!
|
39
|
+
end
|
40
|
+
|
41
|
+
def create
|
42
|
+
create! {images_path(params.slice(:CKEditor, :CKEditorFuncNum, :langCode))}
|
43
|
+
end
|
44
|
+
|
45
|
+
def load_user
|
46
|
+
unless params[:user_id]
|
47
|
+
@user ||= (current_user ? User.find(current_user.id) : User.super_user)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
helper_method :ckeditor_params, :paginated_images_for
|
51
|
+
|
52
|
+
def paginated_images_for(gallery)
|
53
|
+
@images ||= Image.where(:gallery_id=>gallery.id).paginate(:page => params[:page], :order => 'created_at DESC' )
|
54
|
+
end
|
55
|
+
|
56
|
+
def ckeditor_params
|
57
|
+
params.slice(:CKEditor, :CKEditorFuncNum, :langCode)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class ImagesController < InheritedResources::Base
|
2
|
+
respond_to :html, :js, :xml
|
3
|
+
belongs_to :gallery
|
4
|
+
|
5
|
+
def index
|
6
|
+
index! do |format|
|
7
|
+
if params[:CKEditorFuncNum]
|
8
|
+
format.html {render :action=>:index, :layout=>"image_dialog"}
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def create
|
14
|
+
create! {edit_gallery_path(@gallery, params.slice(:CKEditor, :CKEditorFuncNum, :langCode))}
|
15
|
+
end
|
16
|
+
|
17
|
+
def show
|
18
|
+
show! do |format|
|
19
|
+
if params[:CKEditorFuncNum]
|
20
|
+
format.html {render :layout=>"image_dialog"}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def collection
|
26
|
+
@images ||= end_of_association_chain.
|
27
|
+
paginate(:page => params[:page], :order => 'created_at DESC' )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class ProfilesController < InheritedResources::Base
|
2
|
+
respond_to :html
|
3
|
+
before_filter :load_current_user
|
4
|
+
belongs_to :user, :optional => true, :singleton=>true
|
5
|
+
|
6
|
+
def load_current_user
|
7
|
+
unless params[:user_id]
|
8
|
+
@user ||= (current_user ? User.find(current_user.id) : User.super_user)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def resource
|
13
|
+
@profile ||= Profile.find_by_user_id(@user.id)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Ability
|
2
|
+
include CanCan::Ability
|
3
|
+
|
4
|
+
def initialize(user)
|
5
|
+
can :read, :all
|
6
|
+
return cannot :read, User unless user
|
7
|
+
user ||= User.new
|
8
|
+
case user.role_id
|
9
|
+
when Role::SUPER
|
10
|
+
can :manage, :all
|
11
|
+
when Role::ADMIN
|
12
|
+
can :manage, :all
|
13
|
+
when Role::USER
|
14
|
+
can :manage, Gallery, :user_id => user.id
|
15
|
+
can :manage, Blog, :user_id => user.id
|
16
|
+
can :edit, Profile, :user_id => user.id
|
17
|
+
cannot :read, User
|
18
|
+
end
|
19
|
+
can :read, :all
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
data/app/models/blog.rb
ADDED
data/app/models/image.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
class Profile < ActiveRecord::Base
|
2
|
+
belongs_to :user
|
3
|
+
validates_uniqueness_of :alias
|
4
|
+
has_attached_file :image,
|
5
|
+
:storage => :s3,
|
6
|
+
:s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
|
7
|
+
:path => "/:style/:filename",
|
8
|
+
:styles => { :medium => "300x300>", :thumb => "100x100>" }
|
9
|
+
|
10
|
+
end
|
11
|
+
|
data/app/models/role.rb
ADDED
data/app/models/user.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
class User < ActiveRecord::Base
|
2
|
+
before_create :create_profile
|
3
|
+
belongs_to :role
|
4
|
+
|
5
|
+
# Include default devise modules. Others available are:
|
6
|
+
# :token_authenticatable, :confirmable, :lockable and :timeoutable
|
7
|
+
devise :database_authenticatable, :registerable, :confirmable, :token_authenticatable,
|
8
|
+
:recoverable, :rememberable, :trackable, :validatable
|
9
|
+
|
10
|
+
def self.super_user
|
11
|
+
@@super_user ||= User.where(:role_id=>Role::SUPER).first
|
12
|
+
end
|
13
|
+
|
14
|
+
has_many :blogs, :dependent => :destroy
|
15
|
+
has_one :profile, :dependent => :destroy
|
16
|
+
has_many :galleries, :dependent => :destroy
|
17
|
+
|
18
|
+
def create_profile
|
19
|
+
self.profile ||= Profile.create(:user => self)
|
20
|
+
end
|
21
|
+
|
22
|
+
def role=(role)
|
23
|
+
if role.kind_of? Role
|
24
|
+
self.role_id = role.id
|
25
|
+
else
|
26
|
+
if role.is_numeric?
|
27
|
+
self.role_id= role
|
28
|
+
else
|
29
|
+
self.role_id= Role.find_by_name(role).id
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def confirm!
|
35
|
+
self.confirmed_at = DateTime::now
|
36
|
+
save
|
37
|
+
end
|
38
|
+
|
39
|
+
# Setup accessible (or protected) attributes for your model
|
40
|
+
attr_accessible :email, :password, :password_confirmation,
|
41
|
+
:blogs, :profile, :role, :galleries
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
= content_for(:head) do
|
2
|
+
= javascript_include_tag '/ckeditor/ckeditor.js'
|
3
|
+
= javascript_include_tag '/ckeditor/adapters/jquery.js'
|
4
|
+
:javascript
|
5
|
+
$(function(){
|
6
|
+
config = {
|
7
|
+
filebrowserBrowseUrl : '#{galleries_path}'
|
8
|
+
};
|
9
|
+
$('.ckeditor_textarea').ckeditor(config);
|
10
|
+
});
|
11
|
+
|
12
|
+
= form_for [@blog.user, @blog], :html=>{:multipart=>true} do |f|
|
13
|
+
-if @blog.errors.any?
|
14
|
+
#errorExplanation
|
15
|
+
%h2= "#{pluralize(@blog.errors.count, "error")} prohibited this blog from being saved:"
|
16
|
+
%ul
|
17
|
+
- @blog.errors.full_messages.each do |msg|
|
18
|
+
%li= msg
|
19
|
+
|
20
|
+
.field
|
21
|
+
= f.label :title
|
22
|
+
= f.text_field :title
|
23
|
+
.field
|
24
|
+
= f.label :body
|
25
|
+
= f.text_area :body, :class=>'ckeditor_textarea'
|
26
|
+
.actions
|
27
|
+
= f.submit 'Save'
|
28
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
%h1 Someone's Blog
|
2
|
+
|
3
|
+
- @blogs.each do |blog|
|
4
|
+
#ad-top
|
5
|
+
/ Insert 468x60 banner advertisement
|
6
|
+
.entry
|
7
|
+
.entry-title= link_to blog.title, resource_url(blog)
|
8
|
+
|
9
|
+
.date Posted on #{blog.created_at}
|
10
|
+
.blog_body!= blog.body
|
11
|
+
.comments
|
12
|
+
%a{:href => "#"} 3 comments
|
13
|
+
|
14
|
+
|
15
|
+
- if current_user.try(:id) == @user.id
|
16
|
+
= link_to 'New Blog Post', new_user_blog_path(@user)
|
17
|
+
|
18
|
+
= will_paginate @blogs
|
19
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
xml.instruct!
|
2
|
+
|
3
|
+
xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
|
4
|
+
|
5
|
+
xml.title "Feed Name"
|
6
|
+
xml.link "rel" => "self", "href" => user_blogs_path(@user, :only_path=>false, :format=>:xml)
|
7
|
+
# xml.link "rel" => "alternate", "href" => url_for(:only_path => false, :controller => 'posts')
|
8
|
+
xml.id user_blogs_path(@user, :only_path => false)
|
9
|
+
xml.updated @blogs.first.updated_at.strftime "%Y-%m-%dT%H:%M:%SZ" if @blogs.any?
|
10
|
+
xml.author { xml.name @blogs.first }
|
11
|
+
|
12
|
+
@blogs.each do |post|
|
13
|
+
xml.entry do
|
14
|
+
xml.title post.title
|
15
|
+
xml.link "rel" => "alternate", "href" => user_blogs_path(@user, post, :only_path => false)
|
16
|
+
xml.id user_blog_path(@user, post, :only_path => false)
|
17
|
+
xml.updated post.updated_at.strftime "%Y-%m-%dT%H:%M:%SZ"
|
18
|
+
xml.author { xml.name post.user.email }
|
19
|
+
xml.summary "Post summary"
|
20
|
+
xml.content "type" => "html" do
|
21
|
+
xml.cdata! post.body
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
:css
|
2
|
+
#image_gallery li {
|
3
|
+
display: inline;
|
4
|
+
list-style: none;
|
5
|
+
width: 300px;
|
6
|
+
min-height: 300px;
|
7
|
+
float: left;
|
8
|
+
margin: 0 10px 10px 0;
|
9
|
+
text-align: center;
|
10
|
+
}
|
11
|
+
= form_for @gallery do |f|
|
12
|
+
%h2 Gallery Name:
|
13
|
+
= f.text_field :name
|
14
|
+
= f.submit "Save Gallery"
|
15
|
+
|
16
|
+
%ul#image_gallery
|
17
|
+
- paginated_images_for(@gallery).each do |image|
|
18
|
+
%li
|
19
|
+
= image_tag image.image.url(:medium)
|
20
|
+
|
21
|
+
= will_paginate paginated_images_for(@gallery)
|
22
|
+
|
23
|
+
#upload_form
|
24
|
+
= form_for [@gallery, Image.new(:gallery=>@gallery)], :html=>{:id=>'upload', :multipart=>true} do |f|
|
25
|
+
- params.slice(:CKEditor, :CKEditorFuncNum, :langCode).each do |key, val|
|
26
|
+
= hidden_field_tag key, val
|
27
|
+
= f.file_field :image
|
28
|
+
= f.submit :disable_with=>"Uploading..."
|
29
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
:css
|
2
|
+
#image_gallery li {
|
3
|
+
display: inline;
|
4
|
+
list-style: none;
|
5
|
+
width: 300px;
|
6
|
+
min-height: 300px;
|
7
|
+
float: left;
|
8
|
+
margin: 0 10px 10px 0;
|
9
|
+
text-align: center;
|
10
|
+
}
|
11
|
+
|
12
|
+
%h1= gallery.name.empty? ? "Name your gallery" : gallery.name
|
13
|
+
- if can? :update, gallery
|
14
|
+
= link_to 'Edit', edit_gallery_path(gallery)
|
15
|
+
- if can? :manage, gallery
|
16
|
+
= link_to 'Destroy', gallery, "data-confirm"=>"You'll shoot your eye out!", :method=>"delete"
|
17
|
+
%ul#image_gallery
|
18
|
+
- images.each do |image|
|
19
|
+
%li
|
20
|
+
= image_tag image.image.url(:medium)
|
21
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
%h1 #{@user.profile.alias}'s Galleries
|
2
|
+
%ul
|
3
|
+
- @galleries.each do |gallery|
|
4
|
+
%li
|
5
|
+
%h2= link_to (gallery.name || "No name"), gallery_path(gallery, ckeditor_params)
|
6
|
+
- unless gallery.images.empty?
|
7
|
+
= image_tag gallery.images[0].image.url(:medium)
|
8
|
+
- if can? :update, gallery
|
9
|
+
= link_to 'Edit', edit_gallery_path(gallery, ckeditor_params)
|
10
|
+
- if can? :manage, gallery
|
11
|
+
= link_to 'Destroy', gallery_path(gallery, ckeditor_params), "data-confirm"=>"Sure? All the images from this gallery will be gone...", :method=>"delete"
|
12
|
+
|
13
|
+
|
14
|
+
= link_to 'New gallery', new_gallery_path
|
15
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
%h1 Listing images
|
2
|
+
|
3
|
+
%table
|
4
|
+
%tr
|
5
|
+
%th
|
6
|
+
%th
|
7
|
+
%th
|
8
|
+
|
9
|
+
- @images.each do |image|
|
10
|
+
%tr
|
11
|
+
%td= link_to 'Show', image
|
12
|
+
%td= link_to 'Edit', edit_image_path(image)
|
13
|
+
%td= link_to 'Destroy', image, :confirm => 'Are you sure?', :method => :delete
|
14
|
+
|
15
|
+
%br
|
16
|
+
|
17
|
+
= link_to 'New image', new_image_path
|
@@ -0,0 +1,18 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
= csrf_meta_tag
|
5
|
+
/[if lt IE 9]
|
6
|
+
= javascript_include_tag 'html5'
|
7
|
+
= javascript_include_tag :defaults
|
8
|
+
:javascript
|
9
|
+
$(function(){
|
10
|
+
$('#image_dialog').find('img').click(function(){
|
11
|
+
url = $(this).attr('src');
|
12
|
+
window.opener.CKEDITOR.tools.callFunction( #{params[:CKEditorFuncNum]}, url);
|
13
|
+
window.close();
|
14
|
+
});
|
15
|
+
});
|
16
|
+
%body
|
17
|
+
#image_dialog= yield
|
18
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
= form_for @profile, :url=>{:action=>"update"}, :html=>{:multipart=>true} do |f|
|
2
|
+
-if @profile.errors.any?
|
3
|
+
#errorExplanation
|
4
|
+
%h2= "#{pluralize(@profile.errors.count, "error")} prohibited this profile from being saved:"
|
5
|
+
%ul
|
6
|
+
- @profile.errors.full_messages.each do |msg|
|
7
|
+
%li= msg
|
8
|
+
|
9
|
+
.field
|
10
|
+
= f.label :first_name
|
11
|
+
= f.text_field :first_name
|
12
|
+
.field
|
13
|
+
= f.label :last_name
|
14
|
+
= f.text_field :last_name
|
15
|
+
.field
|
16
|
+
= f.label :alias
|
17
|
+
= f.text_field :alias
|
18
|
+
.field
|
19
|
+
= f.label :about_me
|
20
|
+
= f.text_area :about_me
|
21
|
+
.field
|
22
|
+
= f.label :image
|
23
|
+
= f.file_field :image
|
24
|
+
.actions
|
25
|
+
= f.submit 'Save'
|
26
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
%h1 Listing profiles
|
2
|
+
|
3
|
+
%table
|
4
|
+
%tr
|
5
|
+
%th First name
|
6
|
+
%th Last name
|
7
|
+
%th Alias
|
8
|
+
%th About me
|
9
|
+
%th
|
10
|
+
%th
|
11
|
+
%th
|
12
|
+
|
13
|
+
- @profiles.each do |profile|
|
14
|
+
%tr
|
15
|
+
%td= profile.first_name
|
16
|
+
%td= profile.last_name
|
17
|
+
%td= profile.alias
|
18
|
+
%td= profile.about_me
|
19
|
+
%td= link_to 'Show', profile
|
20
|
+
%td= link_to 'Edit', edit_profile_path(profile)
|
21
|
+
%td= link_to 'Destroy', profile, :confirm => 'Are you sure?', :method => :delete
|
22
|
+
|
23
|
+
%br
|
24
|
+
|
25
|
+
= link_to 'New profile', new_profile_path
|
@@ -0,0 +1,21 @@
|
|
1
|
+
- if @profile.image_file_name
|
2
|
+
= image_tag @profile.image.url(:thumb)
|
3
|
+
- else
|
4
|
+
- if can? :edit, @profile
|
5
|
+
- link_to 'Upload a photo', user_profile_path(@user)
|
6
|
+
%p
|
7
|
+
%b First name:
|
8
|
+
= @profile.first_name
|
9
|
+
%p
|
10
|
+
%b Last name:
|
11
|
+
= @profile.last_name
|
12
|
+
%p
|
13
|
+
%b Alias:
|
14
|
+
= @profile.alias
|
15
|
+
%p
|
16
|
+
%b About me:
|
17
|
+
= @profile.about_me
|
18
|
+
|
19
|
+
- if current_user.try(:id) == @user.id
|
20
|
+
= link_to 'Edit', edit_user_profile_path(@user)
|
21
|
+
|