# coding: utf-8 class Formily::FormilyableController < FormilyController def index @forms = Formily::Form.all @select_forms = Formily::Form.select(:id, :title) @related_forms = Formily::FormilyableForm.order(created_at: :desc) @related_forms = if params[:all].present? Formily::FormilyableForm.order(created_at: :desc) else Formily::FormilyableForm.joins(:form).order(created_at: :desc).where(formily_forms: {is_deleted: false}) end end def new # Set user data if params[:model_name].present? session[:model] = { 'model_name' => params[:model_name], 'model_id' => params[:model_id], 'user_id' => params[:user_id] } end @related_model = session[:model] @forms = Formily::FormilyableForm.includes(:form). where(formilyable_type: @related_model['model_name'], formilyable_id: @related_model['model_id']) @model = get_model @select_forms = Formily::Form.where.not(id: @model.formily_forms.pluck(:id)) end def create formilyable = Formily::FormilyableForm.new(formilyable_params) url = params[:iframe].present? ? new_formily_formilyable_path(iframe: true) : formily_forms_assign_path if formilyable.save redirect_to url else redirect_to url end end def destroy formilyable = Formily::FormilyableForm.find(params[:id]) formilyable.destroy url = params[:iframe].present? ? new_formily_formilyable_path(iframe: true) : formily_forms_assign_path redirect_to url end def select_data model = params[:formilyable_type].safe_constantize ids = Formily::FormilyableForm.where(formilyable_type: params[:formilyable_type], form_id: params[:form_id]).pluck(:formilyable_id) data = model.where.not(id: ids) render json: data.to_json(only: [:id], methods: :formily_title) end def connect @page_name = 'Formily forms | Connect' @forms = Formily::Form.all @not_manage = true @model = @model_name.safe_constantize.find(@model_id) @select_forms = Formily::Form.where.not(id: @model.formily_forms.pluck(:id)) end private def formilyable_params params.permit(:form_id, :formilyable_id, :formilyable_type) end def formily_layout if params[:iframe].present? 'formily_iframe' else ApplicationController.new.send(:_layout).virtual_path.split('/').last end end def get_model session[:model]['model_name'].safe_constantize.find(session[:model]['model_id']) end end