diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 590657ef..e486c152 100755 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -164,6 +164,26 @@ $(document).ready(function() { } }); + $("#shop_image").fileinput({ + previewFileType: "image", + allowedFileExtensions: ["jpg", "gif", "png"], + browseClass: "btn btn-success", + browseLabel: "Pick Image", + browseIcon: " ", + removeClass: "btn btn-danger", + removeLabel: "Delete", + removeIcon: " ", + showUpload: false, + // uploadClass: "btn btn-info", + // uploadLabel: "Upload", + // uploadIcon: " ", + previewTemplates: { + image: '
\n' + + ' {caption}\n' + + '
\n', + } + }); + // first input focus for all form $('form:first *input[data-behaviour!=datepicker]:input[type!=hidden]:first').focus(); diff --git a/app/controllers/settings/display_images_controller.rb b/app/controllers/settings/display_images_controller.rb new file mode 100644 index 00000000..48406f48 --- /dev/null +++ b/app/controllers/settings/display_images_controller.rb @@ -0,0 +1,11 @@ +class Settings::DisplayImagesController < ApplicationController + def destroy + #byebug + @item_photo = DisplayImage.find(params[:shop_id]) + item = @item_photo.id + @item_photo.destroy + respond_to do |format| + format.html {redirect_to settings_shops_url+'/1/edit', notice: 'Image was successfully destroyed.'} + end + end +end diff --git a/app/controllers/settings/shops_controller.rb b/app/controllers/settings/shops_controller.rb index f69aaac6..365be7e2 100644 --- a/app/controllers/settings/shops_controller.rb +++ b/app/controllers/settings/shops_controller.rb @@ -1,6 +1,6 @@ class Settings::ShopsController < ApplicationController load_and_authorize_resource except: [:create] - before_action :set_shop, only: [:show, :edit, :update] + before_action :set_shop, only: [:show, :edit, :update, :destroy] # GET /settings/shops # GET /settings/shops.json @@ -11,11 +11,13 @@ class Settings::ShopsController < ApplicationController # GET /settings/shops/1 # GET /settings/shops/1.json def show + @display_images = @settings_shop.display_images.all end # GET /settings/shops/new def new @settings_shop = Shop.new + @display_image = @settings_shop.display_images.build end # GET /settings/shops/1/edit @@ -28,6 +30,11 @@ class Settings::ShopsController < ApplicationController @settings_shop = Shop.new(shop_params) respond_to do |format| if @settings_shop.save + if params[:display_images].present? + params[:display_images]['image'].each do |a| + @display_image = @settings_shop.display_images.create!(:shop_id => @shop.id, :image => a) + end + end format.html { redirect_to settings_shops_url, notice: 'Shop was successfully created.' } format.json { render :index, status: :created, location: @settings_shop } else @@ -42,6 +49,11 @@ class Settings::ShopsController < ApplicationController def update respond_to do |format| if @settings_shop.update(shop_params) + if params[:display_images].present? + params[:display_images]['image'].each do |a| + @display_image = @settings_shop.display_images.create!(:shop_id => @shop.id, :image => a) + end + end format.html { redirect_to settings_shops_url, notice: 'Shop was successfully updated.' } format.json { render :index, status: :ok, location: @settings_shop } else @@ -71,6 +83,6 @@ class Settings::ShopsController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def shop_params - params.require(:shop).permit(:logo, :name,:address,:city,:township,:state,:country,:phone_no,:reservation_no,:license,:activated_at,:license_data,:base_currency,:cloud_token,:cloud_url,:owner_token,:id_prefix,:is_rounding_adj,:quick_sale_summary,:calc_tax_order,:show_account_info) + params.require(:shop).permit(:logo, :name,:address,:city,:township,:state,:country,:phone_no,:reservation_no,:license,:activated_at,:license_data,:base_currency,:cloud_token,:cloud_url,:owner_token,:id_prefix,:is_rounding_adj,:quick_sale_summary,:calc_tax_order,:show_account_info, display_images_attributes: [:id, :shop_id, :image]) end end diff --git a/app/models/display_image.rb b/app/models/display_image.rb new file mode 100644 index 00000000..63405b26 --- /dev/null +++ b/app/models/display_image.rb @@ -0,0 +1,5 @@ +class DisplayImage < ApplicationRecord + mount_uploader :image, DisplayImageUploader + belongs_to :shop + +end diff --git a/app/models/shop.rb b/app/models/shop.rb index 0fd9ed0e..b0e84912 100755 --- a/app/models/shop.rb +++ b/app/models/shop.rb @@ -3,4 +3,7 @@ class Shop < ApplicationRecord # Shop Image Uploader mount_uploader :logo, ShopImageUploader + + has_many :display_images + accepts_nested_attributes_for :display_images end diff --git a/app/uploaders/display_image_uploader.rb b/app/uploaders/display_image_uploader.rb new file mode 100644 index 00000000..33e28997 --- /dev/null +++ b/app/uploaders/display_image_uploader.rb @@ -0,0 +1,59 @@ +class DisplayImageUploader < CarrierWave::Uploader::Base + + # Include RMagick or MiniMagick support: + # include CarrierWave::RMagick + include CarrierWave::MiniMagick + + # Choose what kind of storage to use for this uploader: + storage :file + # storage :fog + + # def root + # Rails.root.join 'public/' + # end + + # Override the directory where uploaded files will be stored. + # This is a sensible default for uploaders that are meant to be mounted: + def store_dir + #"image/image" + "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" + end + + # def cache_dir + # '/tmp/images' + # end + + # Provide a default URL as a default if there hasn't been a file uploaded: + # def default_url(*args) + # # For Rails 3.1+ asset pipeline compatibility: + # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) + # + # "/images/fallback/" + [version_name, "default.png"].compact.join('_') + # end + + # Process files as they are uploaded: + # process scale: [200, 300] + process :resize_to_fit => [200, 150] + # + # def scale(width, height) + # # do something + # end + + # Create different versions of your uploaded files: + # version :thumb do + # process resize_to_fit: [50, 50] + # end + + # Add a white list of extensions which are allowed to be uploaded. + # For images you might use something like this: + def extension_whitelist + %w(jpg jpeg gif png) + end + + # Override the filename of the uploaded files: + # Avoid using model.id or version_name here, see uploader/store.rb for details. + # def filename + # "something.jpg" if original_filename + # end + +end \ No newline at end of file diff --git a/app/views/settings/shops/_form.html.erb b/app/views/settings/shops/_form.html.erb index b615d189..0be7b052 100755 --- a/app/views/settings/shops/_form.html.erb +++ b/app/views/settings/shops/_form.html.erb @@ -2,7 +2,7 @@
- <%= simple_form_for([:settings,@settings_shop]) do |f| %> + <%= simple_form_for([:settings,@settings_shop], :html => { :multipart => true }) do |f| %> <%= f.error_notification %>
<%= f.input :name ,:input_html=>{:class=>"col-md-10"},:required=>true%> @@ -25,7 +25,7 @@ <%= f.input :show_account_info %>
- +
+ +
+
+ +
+
+ + +
<%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %>
diff --git a/app/views/settings/shops/show.html.erb b/app/views/settings/shops/show.html.erb index bea0ab38..d30ca274 100755 --- a/app/views/settings/shops/show.html.erb +++ b/app/views/settings/shops/show.html.erb @@ -99,6 +99,14 @@ Shop Image <%= image_tag @settings_shop.logo, :size => '200x200'%> + + Shop Images + + <% @display_images.each do |p| %> + <%= image_tag p.image , :size => '200x200'%>
+ <% end %> + + <%= link_to t("views.btn.edit"), edit_settings_shop_path(@settings_shop),:class => 'btn btn-primary btn-sm waves-effect' %> diff --git a/config/routes.rb b/config/routes.rb index 340dc914..6a4c403d 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -285,7 +285,10 @@ scope "(:locale)", locale: /en|mm/ do #--------- System Settings ------------# namespace :settings do - resources :shops + resources :shops do + resources :display_images + end + #employees resources :employees #menu