diff --git a/app/assets/images/no-layout.jpg b/app/assets/images/no-layout.jpg new file mode 100644 index 0000000..c83c1a7 Binary files /dev/null and b/app/assets/images/no-layout.jpg differ diff --git a/app/assets/stylesheets/space.scss b/app/assets/stylesheets/space.scss index 70fe933..32068e3 100644 --- a/app/assets/stylesheets/space.scss +++ b/app/assets/stylesheets/space.scss @@ -70,7 +70,7 @@ ul.apartments-area { padding-bottom: 0; transition-property: left, right, top; width: 150px; - height: 150px; + height: 170px; text-align: center; .apartment-img { @@ -79,10 +79,6 @@ ul.apartments-area { height: 125px; overflow: hidden; - &:hover { - height: 145px; - margin-bottom: 5px; - } } a{ @@ -132,6 +128,10 @@ ul#layout-canvas { width: 2px; height: 2px; background-color: rgba(0, 0, 0, .4); + + .selection-box-label{ + color: #fff; + } } .make-box-permanent{ @@ -152,6 +152,10 @@ ul#layout-canvas { } } +.floor-unit-title{ + text-align: center; +} + diff --git a/app/controllers/admin/spaces_controller.rb b/app/controllers/admin/spaces_controller.rb index 4c6394b..61bc34c 100644 --- a/app/controllers/admin/spaces_controller.rb +++ b/app/controllers/admin/spaces_controller.rb @@ -41,8 +41,8 @@ class Admin::SpacesController < OrbitAdminController end def delete_floor - floor = Floor.find_by(:uid => params[:floor_id].split("-").last) - floor.destroy + floor = Floor.find_by(:uid => params[:floor_id].split("-").last) rescue nil + floor.destroy if !floor.nil? render :json => {"success" => true}.to_json end @@ -60,12 +60,122 @@ class Admin::SpacesController < OrbitAdminController end end + def edit_floor_unit + @floor_unit = FloorUnit.find_by(:uid => params[:unit_id].split("-").last) rescue nil + @floor = @floor_unit.floor + end + + def update_floor_unit + floor_unit = FloorUnit.find(params[:unit_id]) rescue nil + if !floor_unit.nil? + floor_unit.update_attributes(floor_unit_params) + floor_unit.save + end + redirect_to "/admin/spaces/#{floor_unit.floor.building.to_param}/#{floor_unit.floor.to_param}/units" + end + + def save_floor_layout + floor = Floor.find(params[:floor_id]) rescue nil + if !floor.nil? + floor.layout = params[:layout_html] + floor.save + end + render :json => {"success" => true}.to_json + end + + def delete_floor_unit + floor_unit = FloorUnit.find_by(:uid => params[:unit_id].split("-").last) rescue nil + floor = floor_unit.floor + if !floor_unit.nil? + floor_unit.destroy + end + redirect_to "/admin/spaces/#{floor.building.to_param}/#{floor.to_param}/units" + + end + def units @floor = Floor.find_by(:uid => params[:floor_id].split("-").last) end + def sub_units + @floor_unit = FloorUnit.find_by(:uid => params[:unit_id].split("-").last) + end + + def add_sub_unit + @floor_unit = FloorUnit.find_by(:uid => params[:unit_id].split("-").last) rescue nil + @sub_unit = FloorSubUnit.new + end + + def edit_sub_unit + @sub_unit = FloorSubUnit.find_by(:uid => params[:sub_unit_id].split("-").last) rescue nil + end + + def update_sub_unit + sub_unit = FloorSubUnit.find(params[:floor_sub_unit_id]) rescue nil + if !sub_unit.nil? + p = sub_unit_params + p[:floor_sub_unit_images].concat(sub_unit.floor_sub_unit_images) if p[:floor_sub_unit_images].present? + sub_unit.update_attributes(p) + sub_unit.save + end + if params[:images_to_destroy].present? + params[:images_to_destroy].each do |id| + image = FloorSubUnitImage.find(id) rescue nil + image.destroy if !image.nil? + end + end + redirect_to "/admin/spaces/#{sub_unit.floor_unit.floor.to_param}/#{sub_unit.floor_unit.to_param}/sub_units" + end + + def upload_sub_unit_image + image = FloorSubUnitImage.new(image_params) + image.save + render :json => {"success" => true,"id" => image.id.to_s}.to_json + end + + def create_sub_unit + sub_unit = FloorSubUnit.new(sub_unit_params) + sub_unit.save + respond_to do |format| + format.html {redirect_to "/admin/spaces/#{sub_unit.floor_unit.floor.to_param}/#{sub_unit.floor_unit.to_param}/sub_units"} + format.js {render :json => {"success" => true, "unit" => {"id" => sub_unit.id.to_s, "title" => sub_unit.title}}.to_json} + end + end + + def unit_layout + @floor_unit = FloorUnit.find_by(:uid => params[:unit_id].split("-").last) rescue nil + end + + def save_unit_layout + floor_unit = FloorUnit.find(params[:unit_id]) rescue nil + if !floor_unit.nil? + floor_unit.layout = params[:layout_html] + floor_unit.save + end + render :json => {"success" => true}.to_json + end + + + private + def sub_unit_params + p = params.require(:floor_sub_unit).permit! + if p[:floor_sub_unit_images].present? + images = [] + p[:floor_sub_unit_images].each do |id| + image = FloorSubUnitImage.find(id) rescue nil + images << image if !image.nil? + end + p[:floor_sub_unit_images] = images + end + p + end + + def image_params + params.require(:floor_sub_unit_image).permit! + end + def floor_params params.require(:floor).permit! end diff --git a/app/models/floor_sub_unit.rb b/app/models/floor_sub_unit.rb new file mode 100644 index 0000000..a0d8c67 --- /dev/null +++ b/app/models/floor_sub_unit.rb @@ -0,0 +1,11 @@ +class FloorSubUnit + include Mongoid::Document + include Mongoid::Timestamps + include Slug + + field :title, as: :slug_title, localize: true + + has_many :floor_sub_unit_images, :autosave => true, :dependent => :destroy + belongs_to :floor_unit + +end \ No newline at end of file diff --git a/app/models/floor_sub_unit_image.rb b/app/models/floor_sub_unit_image.rb new file mode 100644 index 0000000..de0940e --- /dev/null +++ b/app/models/floor_sub_unit_image.rb @@ -0,0 +1,9 @@ +class FloorSubUnitImage + include Mongoid::Document + include Mongoid::Timestamps + + mount_uploader :image, ImageUploader + + belongs_to :floor_sub_unit + +end \ No newline at end of file diff --git a/app/models/floor_unit.rb b/app/models/floor_unit.rb index bf8dd24..30995d4 100644 --- a/app/models/floor_unit.rb +++ b/app/models/floor_unit.rb @@ -1,11 +1,15 @@ class FloorUnit include Mongoid::Document include Mongoid::Timestamps + include Slug - field :title + field :title, as: :slug_title + field :layout + belongs_to :floor + has_many :floor_sub_units - mount_uploader :layout, ImageUploader + mount_uploader :layout_image, ImageUploader end \ No newline at end of file diff --git a/app/views/admin/spaces/_floor.html.erb b/app/views/admin/spaces/_floor.html.erb index 035b99d..98b62e9 100644 --- a/app/views/admin/spaces/_floor.html.erb +++ b/app/views/admin/spaces/_floor.html.erb @@ -1,7 +1,7 @@
<%= floor_unit.title %>
+ Edit | Delete + <% if !floor_unit.layout_image.thumb.url.nil? %> + | Layout + <% end %><%= sub_unit.title %>
+ Edit | Delete +