| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- # encoding:utf-8
- require 'uuid'
- class Article < ActiveRecord::Base
- has_paper_trail
- self.table_name = "articles"
- after_destroy :after_destroy
- belongs_to :article_cat
- validates :title,:content,:article_cat_id,presence: true
- attr_accessor :v_cover
- attr_accessor :v_s_img
-
- IMG_STORE_PATH = "articles"
- STATE_ENUM = [["是",1],["否",0]]
- DISPLAY_COVER_ENUM = [["显示",1],["不显示",0]]
- rails_admin do
- navigation_label '文章栏目管理'
- weight -240
- list do
- filters [:id,:source,:title]
- # include_all_fields
- field :id
- field :title
- field :subtitle
- field :about
- # field :content
- field :cover do
- formatted_value do
- bindings[:view].tag(:img, {:src => bindings[:object].get_img,
- :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px;',
- :onClick => "javascript:window.open('#{bindings[:object].get_img}')"})
-
- end
- end
- field :s_img do
- formatted_value do
- bindings[:view].tag(:img, {:src => bindings[:object].get_s_img,
- :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px;',
- :onClick => "javascript:window.open('#{bindings[:object].get_s_img}')"})
-
- end
- end
- field :source
- field :editor
- field :click
- field :sort
- field :recommend
- field :state
- field :show_cs_qrcode
- field :created_by
- # # field :category_id
- field :article_cat
- # field :agree
- # field :disagree
- # # field :comments_count
- # field :v_cover
- field :tags
- field :display_cover, :enum do
- enum do
- DISPLAY_COVER_ENUM
- end
- end
- field :url
- field :share_benefit_desc
- # field :is_recommand
- field :created_at
- # field :updated_at
- end
- show do
- field :id
- field :title
- field :subtitle
- field :about
- field :s_title
- field :cover do
- formatted_value do
- bindings[:view].tag(:img, {:src => bindings[:object].get_img,
- :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px;',
- :onClick => "javascript:window.open('#{bindings[:object].get_img}')"})
- end
- end
- field :s_img do
- formatted_value do
- bindings[:view].tag(:img, {:src => bindings[:object].get_s_img,
- :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px;',
- :onClick => "javascript:window.open('#{bindings[:object].get_s_img}')"})
-
- end
- end
- field :source
- field :editor
- field :click
- field :sort
- field :recommend
- field :state
- field :show_cs_qrcode
- field :created_by
- field :article_cat
- field :seo_title
- field :seo_keyword
- field :seo_desc
- field :tags
- field :display_cover, :enum do
- enum do
- DISPLAY_COVER_ENUM
- end
- end
- field :url
- field :share_benefit_desc
- field :created_at
- field :updated_at
- end
- edit do
- field :title
- field :subtitle
- field :about
- field :s_title
- field :display_cover, :enum do
- enum do
- DISPLAY_COVER_ENUM
- end
- end
- field :url
- field :source
- field :editor
- field :sort
- field :recommend
- field :state
- field :show_cs_qrcode
- field :created_by
- field :article_cat
- field :seo_title
- field :seo_keyword
- field :seo_desc
- field :tags
- field :content, :ck_editor
- # field :cover
- field :v_cover, :file_upload do
- pretty_value do
- bindings[:view].tag(:img, {:src => bindings[:object].get_img, :class => 'preview'})
- end
- end
- field :v_s_img, :file_upload do
- pretty_value do
- bindings[:view].tag(:img, {:src => bindings[:object].get_s_img, :class => 'preview'})
- end
- end
- #field :share_benefit_min
- #field :share_benefit_max
- #field :share_benefit_must_follow
- #field :benefit_max
- #field :single_benefit_max
- #field :same_ip_limit
-
- # field :click
- # field :status
- # field :category_id
- # field :agree
- # field :disagree
- # field :comments_count
- # field :is_recommand
- field :url_guide, :ck_editor
- field :share_benefit_desc
- end
- end
- def v_cover=file
- unless file.blank?
- clear_img
- 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 v_s_img=file
- unless file.blank?
- clear_s_img
- 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.s_img = file_path
- self.save
- end
- end
- def clear_img
- file_path = "#{self.cover}"
- Ali::Oss.delete_object(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path)
- end
- def clear_s_img
- file_path = "#{self.s_img}"
- Ali::Oss.delete_object(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path)
- end
- def get_img
- url = "http://#{Ali::Oss::CDN_URL_FOR_HOST}/#{self.cover}"
- return url
- end
- def get_s_img
- url = "http://#{Ali::Oss::CDN_URL_FOR_HOST}/#{self.s_img}"
- return url
- end
- def after_destroy
- clear_img
- clear_s_img
- end
- # def cover=(file)
- # unless file.blank?
- # clear_cover
- # _ = UUID.new.generate[0...8]
- # Ali::Oss.store_article_cover(_, file.read)
- # write_attribute :cover, _
- # end
- # end
- # def cover(size='')
- # _ = read_attribute(:cover)
- # _.blank? ? '' : Ali::Oss.url_for_article_cover(_, size)
- # end
- # def clear_cover
- # Ali::Oss.del_file_article_cover(read_attribute(:cover))
- # end
- # private
- # def resource_url
- # self.cover
- # end
- # def after_create
- # Search.create_index(Search::INDEX_NAME_OF_ARTICLES, self.id, self.title,
- # self.about, self.editor, self.source, self.created_at.to_i, "#{CONFIG_FILE["host"]}/article/#{self.id}?from=search", "文章")
- # end
- # def after_destroy
- # #删除在阿里的索引
- # Ali::Css.delete_doc(Search::INDEX_NAME_OF_ARTICLES, self.id)
- # end
- end
|