Bladeren bron

add plateform category

abiao 5 jaren geleden
bovenliggende
commit
38a5c64bca
2 gewijzigde bestanden met toevoegingen van 142 en 0 verwijderingen
  1. 122 0
      app/models/platform_category.rb
  2. 20 0
      config/locales/models/platform_category.yml

+ 122 - 0
app/models/platform_category.rb

@@ -0,0 +1,122 @@
+require 'uuid'
+class PlatformCategory < ActiveRecord::Base
+    has_paper_trail
+    self.table_name = 'platform_categories'
+    belongs_to :product, :foreign_key =>:product_id
+    has_ancestry
+    attr_accessor :v_cover
+    validates :product_id,:name,:ancestry,:position,:platform,:url, presence: true
+
+    IMG_STORE_PATH = "platform_categories" 
+
+    URL_TYPE_ENUM = [["内部链接",0],["外部链接",1]]
+
+    rails_admin do
+        navigation_label '平台栏目管理'
+        weight -240
+        nestable_tree({
+            position_field: :position,
+            max_depth: 2
+        })
+
+        list do
+            filters [:name,:position]
+            field :id
+            field :name
+            field :platform
+            field :position 
+            field :ancestry
+            field :url
+            field :url_type, :enum do
+                enum do 
+                    URL_TYPE_ENUM
+                end
+            end
+
+            field :cover do
+                formatted_value do
+                bindings[:view].tag(:img, {:src => bindings[:object].get_cover,
+                :style => 'width: 100px;height: 100px;cursor: pointer;display:  block;max-width: 100px;',
+                :onClick => "javascript:window.open('#{bindings[:object].get_cover}')"})
+          
+                end
+            end
+            field :state
+            field :remark
+            field :product
+        end 
+
+        show do 
+            field :id
+            field :name
+            field :ancestry
+            field :platform
+            field :position
+            field :url
+            field :url_type, :enum do
+                enum do 
+                    URL_TYPE_ENUM
+                end
+            end
+            field :cover do
+                formatted_value do
+                bindings[:view].tag(:img, {:src => bindings[:object].get_cover,
+                :style => 'width: 100px;height: 100px;cursor: pointer;display:  block;max-width: 100px;',
+                :onClick => "javascript:window.open('#{bindings[:object].get_cover}')"})
+          
+                end
+            end
+            field :state
+            field :remark
+            field :product
+        end
+
+        edit do 
+            field :name
+            field :platform
+            field :position 
+            field :ancestry
+            field :url
+            field :url_type, :enum do
+                enum do 
+                    URL_TYPE_ENUM
+                end
+            end
+            field :v_cover,:file_upload do 
+                pretty_value do 
+                    bindings[:view].tag(:img, {:src => bindings[:object].get_cover, :class => 'preview'})
+                end        
+            end
+            field :state
+            field :remark
+            field :product_id
+        end
+
+    end
+
+    def v_cover=file
+        unless file.blank?
+          clear_cover
+          file_name = "#{UUID.new.generate[0...8].downcase}.jpg"
+          file_path = "#{IMG_STORE_PATH}/#{file_name}"
+          Ali::Oss.store(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path, file.read)
+          self.cover = file_path
+          self.save
+        end
+    end
+
+    def clear_cover
+        file_path = "#{self.cover}"
+        Ali::Oss.delete_object(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path)
+    end
+
+    def get_cover
+      url = "http://#{Ali::Oss::CDN_URL_FOR_HOST}/#{self.cover}"
+      return url
+    end
+
+    def after_destroy
+      clear_cover       
+    end
+
+end

+ 20 - 0
config/locales/models/platform_category.yml

@@ -0,0 +1,20 @@
+zh-CN:
+  activerecord:
+    models:
+      platform_category: 平台栏目配置
+    attributes: 
+      platform_category:
+        id: ID 
+        name: 名称
+        products: 商品
+        position: 排序
+        ancestry: 上级
+        platform: 平台
+        url: 平台链接
+        cover: 图片
+        v_cover: 图片
+        state: 是否发布
+        remark: 备注
+        product_id: 产品ID
+        product: 产品
+        url_type: URL类型