diff --git a/app/controllers/admin/video_pros_controller.rb b/app/controllers/admin/video_pros_controller.rb index c37e3ff..72bc7a7 100644 --- a/app/controllers/admin/video_pros_controller.rb +++ b/app/controllers/admin/video_pros_controller.rb @@ -23,30 +23,32 @@ class Admin::VideoProsController < OrbitAdminController render_401 end end - + def update video_image = VideoImage.find(params[:id]) video_image.update_user_id = current_user.id.to_s + create_get_video_tags(video_image) video_image.save video_image.update_attributes(video_image_params) redirect_to params[:referer_url] end - - def new + + def new @video_image = VideoImage.new @item = [['Youtube',"1"],[t('video'),"2"]] #[['Youtube',"1"],[t('video'),"2"],[t('image'),"3"]] @tags = @module_app.tags || [] @video_image.postdate = Date.today end - + def create video_image = VideoImage.new(video_image_params) video_image.update_user_id = current_user.id.to_s video_image.create_user_id = current_user.id.to_s + create_get_video_tags(video_image) video_image.save redirect_to params[:referer_url] end - + def destroy video_image = VideoImage.find params[:id] video_image.destroy @@ -73,4 +75,25 @@ class Admin::VideoProsController < OrbitAdminController def setup_vars @module_app = ModuleApp.where(:key => "video_pro").first end -end \ No newline at end of file + + def create_get_video_tags(video) + new_tags = params["video_tags"].split(",") + tags = [] + video.video_tags = [] + new_tags.each do |tag| + if is_uuid?(tag) === false + vt = VideoTag.new + vt.title = tag.downcase + vt.save + video.video_tags << vt + else + vt = VideoTag.find(tag) + video.video_tags << vt + end + end + return tags + end + def is_uuid?(str) + !!(str =~ /\A[\da-f]{24}\z/i || str =~ /\A[\da-f]{8}-([\da-f]{4}-){3}[\da-f]{12}\z/i) + end +end diff --git a/app/models/video_image.rb b/app/models/video_image.rb index e058fe6..46baead 100644 --- a/app/models/video_image.rb +++ b/app/models/video_image.rb @@ -35,6 +35,8 @@ class VideoImage field :view_count, type: Integer, default: 0 field :scale, type: Float field :details, type: String, localize: true + + has_and_belongs_to_many :video_tags, inverse_of: :video_images # LINK_OPEN_TYPES = ["local", "new_window"] # before_save :add_http diff --git a/app/models/video_tag.rb b/app/models/video_tag.rb new file mode 100644 index 0000000..19bdbad --- /dev/null +++ b/app/models/video_tag.rb @@ -0,0 +1,8 @@ +class VideoTag + include Mongoid::Document + include Mongoid::Timestamps + + field :title, type: String + has_and_belongs_to_many :video_images, inverse_of: :video_tags + +end diff --git a/app/views/admin/video_pros/_form.html.erb b/app/views/admin/video_pros/_form.html.erb index 5c3aa41..de4d8bd 100644 --- a/app/views/admin/video_pros/_form.html.erb +++ b/app/views/admin/video_pros/_form.html.erb @@ -2,6 +2,7 @@ <%= stylesheet_link_tag "lib/main-forms" %> <%= stylesheet_link_tag "lib/fileupload" %> <%= stylesheet_link_tag "video_data/jplayer.blue.monday.min" %> + <%= stylesheet_link_tag "select2/select2" %> <% end %> <% content_for :page_specific_javascript do %> <%= javascript_include_tag "lib/bootstrap-fileupload" %> @@ -10,6 +11,7 @@ <%= javascript_include_tag "lib/module-area" %> <%= javascript_include_tag "validator" %> <%= javascript_include_tag "video_data/jquery.jplayer.min" %> + <%= javascript_include_tag "select2/select2.min" %> <% end %> <%#= f.error_messages %> <% @@ -32,6 +37,7 @@