Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ gem 'execjs'
gem 'therubyracer'
gem 'omniauth-facebook'
gem 'ancestry'

gem 'simple_form'

group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
Expand Down
4 changes: 4 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,9 @@ GEM
sdoc (0.4.1)
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
simple_form (3.1.0)
actionpack (~> 4.0)
activemodel (~> 4.0)
slim (3.0.1)
temple (~> 0.7.3)
tilt (>= 1.3.3, < 2.1)
Expand Down Expand Up @@ -242,6 +245,7 @@ DEPENDENCIES
rspec-rails
sass-rails (~> 5.0)
sdoc (~> 0.4.0)
simple_form
slim
spring
therubyracer
Expand Down
21 changes: 18 additions & 3 deletions app/controllers/folders_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@ class FoldersController < ApplicationController

before_action :authenticate_user!

def show
@folder = Folder.find(params[:id])
end

def new
@folder = Folder.new(parent_id: params[:parent_id], user_id: current_user.id)
end

def index
@folder = Folder.new
@folders = Folder.all
@folders = Folder.roots
end

def create
@folder = Folder.create folder_params
redirect_to folders_path
redirect_to folders_tree_folders_path
end

def destroy
Expand All @@ -22,10 +25,22 @@ def destroy
redirect_to folders_path
end

def folders_tree
@folder = Folder.new
@folders = Folder.all
end

def folders_form
@folder = Folder.new(parent_id: params[:parent_id], user_id: current_user.id)
end

private

def folder_params
params.require(:folder).permit(:name, :parent_id, :user_id)
end

end



8 changes: 8 additions & 0 deletions app/helpers/folders_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,12 @@ def nested_folders(folders)
render(folder) + content_tag(:div, nested_folders(sub_folders), :class => "nested_folders")
end.join.html_safe
end

def nested_folders_tree(folders)
folders.map do |folder, sub_folders|
render("folder_item", folder: folder) + content_tag(:div, nested_folders_tree(sub_folders), :class => "nested_folders")
end.join.html_safe
end

end

11 changes: 2 additions & 9 deletions app/views/folders/_folder.html.slim
Original file line number Diff line number Diff line change
@@ -1,9 +1,2 @@
.folder
.created_at
= folder.created_at.strftime("%B %d, %Y")
.name
= folder.name
.actions
= link_to "Create subfolder", new_folder_path(parent_id: folder)
= "|"
= link_to "Destroy", folder, method: :delete, data: {confirm: "Are you sure?"}
li
= link_to folder.name, folder_path(folder)
9 changes: 9 additions & 0 deletions app/views/folders/_folder_item.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.folder
.created_at
= folder.created_at.strftime("%B %d, %Y")
.name
= folder.name
.actions
= link_to "Create subfolder", folders_form_folders_path(parent_id: folder)
= "|"
= link_to "Destroy", folder, method: :delete, data: {confirm: "Are you sure?"}
8 changes: 8 additions & 0 deletions app/views/folders/folders_form.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
h1 Create subfolder

= render "folder_item", folder: @folder.parent if @folder.parent

= render "form"

p
= link_to "Back to Folders", folders_path
5 changes: 5 additions & 0 deletions app/views/folders/folders_tree.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
h1 Folders

= nested_folders_tree @folders.arrange(:order => :created_at)

= render "form"
6 changes: 3 additions & 3 deletions app/views/folders/index.html.slim
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
h1 Folders

= nested_folders @folders.arrange(:order => :created_at)

= render "form"
ul
- @folders.each do |folder|
= render folder
8 changes: 8 additions & 0 deletions app/views/folders/show.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
h1
= @folder.name

ul
li
= link_to '/..', @folder.parent ? folder_path(@folder.parent) : folders_path
- @folder.children.each do |child|
= render child
2 changes: 1 addition & 1 deletion app/views/layouts/_navigation.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ nav.navbar.navbar-inverse.navbar-fixed-top
span.icon-bar
span.icon-bar
span.icon-bar
= link_to 'Home', root_path, class: 'navbar-brand'
= link_to 'Home', folders_path, class: 'navbar-brand'
.collapse.navbar-collapse
ul.nav.navbar-nav
= render 'layouts/navigation_links'
2 changes: 1 addition & 1 deletion app/views/layouts/_navigation_links.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<% end %>
<% if user_signed_in? %>
<li><%= link_to 'Users', users_path %></li>
<li><%= link_to 'Folders', folders_path %></li>
<li><%= link_to 'Folders', folders_tree_folders_path %></li>
<% end %>
<li><%= link_to 'Used Technologies', tools_path %></li>
<li><%= link_to 'About Us', about_us_path %></li>
Expand Down
31 changes: 31 additions & 0 deletions config/locales/simple_form.en.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
en:
simple_form:
"yes": 'Yes'
"no": 'No'
required:
text: 'required'
mark: '*'
# You can uncomment the line below if you need to overwrite the whole required html.
# When using html, text and mark won't be used.
# html: '<abbr title="required">*</abbr>'
error_notification:
default_message: "Please review the problems below:"
# Examples
# labels:
# defaults:
# password: 'Password'
# user:
# new:
# email: 'E-mail to sign in.'
# edit:
# email: 'E-mail.'
# hints:
# defaults:
# username: 'User name to sign in.'
# password: 'No special characters, please.'
# include_blanks:
# defaults:
# age: 'Rather not say'
# prompts:
# defaults:
# age: 'Select your age'
7 changes: 6 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@
get 'contacts' => 'static_pages#contacts'
get 'about_us' => 'static_pages#about_us'

resources :folders
resources :folders do
collection do
get :folders_tree
get :folders_form
end
end
resources :users

root 'static_pages#landing'
Expand Down
13 changes: 13 additions & 0 deletions lib/templates/erb/scaffold/_form.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<%%= simple_form_for(@<%= singular_table_name %>) do |f| %>
<%%= f.error_notification %>

<div class="form-inputs">
<%- attributes.each do |attribute| -%>
<%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %>
<%- end -%>
</div>

<div class="form-actions">
<%%= f.button :submit %>
</div>
<%% end %>