From e6d86fe2b907b6be57bab88396ab8b27fa95d580 Mon Sep 17 00:00:00 2001 From: realtradam Date: Wed, 2 Dec 2020 23:55:40 -0500 Subject: known bugs fixed --- app/assets/stylesheets/style.css | 12 ++++++++++++ app/controllers/nodes_controller.rb | 35 ++++++++++++++++++++++++++++++++--- app/helpers/nodes_helper.rb | 12 ++++++++++++ app/views/nodes/edit.html.erb | 21 +++++++++++++++++++++ app/views/nodes/index.html.erb | 27 +++++++++++++++++---------- app/views/nodes/show.html.erb | 3 +++ 6 files changed, 97 insertions(+), 13 deletions(-) create mode 100644 app/views/nodes/edit.html.erb diff --git a/app/assets/stylesheets/style.css b/app/assets/stylesheets/style.css index d779fce..965bbd1 100644 --- a/app/assets/stylesheets/style.css +++ b/app/assets/stylesheets/style.css @@ -2,3 +2,15 @@ body { background-color: black; color: white; } + +.indent { + padding: 1px; + margin-left: 15px; +} + +div.indent { + display : list-item; + list-style-type: disc; + list-style-position: inside; + padding-left: 0.2em; +} diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index f603f52..826be55 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -12,8 +12,12 @@ class NodesController < ApplicationController @node = Node.new @nodes = Node.all end + def edit + @node = Node.find(params[:id]) + @nodes = Node.all + end def create - unless params[:node][:parent].to_i == 0 + unless params[:node][:parent] == "" @parent = Node.find(params[:node][:parent]) @node = @parent.children.build(title: params[:node][:title], content: params[:node][:content], parent: @parent) else @@ -21,13 +25,38 @@ class NodesController < ApplicationController @node = Node.new(params.require(:node).permit(:parent,:title,:content)) end - @node.save redirect_to @node end + def update + @node = Node.find(params[:id]) + unless params[:node][:parent] == "" #if user doesnt want to not have parent + unless params[:id] == params[:node][:parent] # if the user didnt select a child to be its own parent(error handling) + @parent = Node.find(params[:node][:parent]) + if @node.update(title: params[:node][:title], content: params[:node][:content], parent: @parent) + @parent.children << @node # assign new parent + redirect_to @node + else + @nodes = Node.all #makes dropdown work in render + render 'edit' + end + else + @nodes = Node.all #makes dropdown work in render + render 'edit' + end + else # save node without parent + if @node.update(title: params[:node][:title], content: params[:node][:content], parent: nil) + redirect_to @node + else + @nodes = Node.all # makes dropdown work in render + render 'edit' + end + end + end + private def node_params - + end end diff --git a/app/helpers/nodes_helper.rb b/app/helpers/nodes_helper.rb index 673b561..2141bfc 100644 --- a/app/helpers/nodes_helper.rb +++ b/app/helpers/nodes_helper.rb @@ -1,2 +1,14 @@ module NodesHelper + def showNestedChildren(node, level) + puts node.children.to_yaml + if node.children.any? + returnme = "
#{node.title}".html_safe + node.children.each do |nestednode| + returnme += (showNestedChildren(nestednode, level + 1)).html_safe + end + returnme += "
".html_safe + else + returnme = "
#{node.title}
".html_safe + end + end end diff --git a/app/views/nodes/edit.html.erb b/app/views/nodes/edit.html.erb new file mode 100644 index 0000000..0b64046 --- /dev/null +++ b/app/views/nodes/edit.html.erb @@ -0,0 +1,21 @@ +

edit wiki page

+<%= form_with(model: @node, local: true) do |form| %> +

+ <%= form.label :title %>
+ <%= form.text_field :title %> +

+ +

+ <%= form.label :content %>
+ <%= form.text_area :content %> +

+ + <%= form.collection_select :parent, @nodes, :id, :title, include_blank: true, :selected => @node&.parent&.id %> + + +

+ <%= form.submit %> +

+<% end %> + +<% link_to 'Back', nodes_path %> diff --git a/app/views/nodes/index.html.erb b/app/views/nodes/index.html.erb index 2a14880..d787727 100644 --- a/app/views/nodes/index.html.erb +++ b/app/views/nodes/index.html.erb @@ -1,15 +1,22 @@

suh

+

<% @rootnodes.each do |rootnode| %> - - PARENT: <%= rootnode.title %> -
- - <% rootnode.children.each do |node| %> - - CHILD: <%= node[:title] %> -
- <% end %> -
+ <% if rootnode.children.any? %> +

+ <%= rootnode.title %> + <% rootnode.children.each do |node| %> + <%= showNestedChildren(node, 1) %> + <% end %> +
+ <% else %> +
<%= rootnode.title %>
+ <% end %> <% end %> +

+ +
+ See More + This text will be hidden if your browser supports it. +
diff --git a/app/views/nodes/show.html.erb b/app/views/nodes/show.html.erb index c933d1e..ccca323 100644 --- a/app/views/nodes/show.html.erb +++ b/app/views/nodes/show.html.erb @@ -6,4 +6,7 @@

Content: <%= @node.content %> +<% @node.children.each do |child| %> + <%= child.id %> +<% end %>

-- cgit v1.2.3