Class: RademadeAdmin::ModelController

Inherits:
AbstractController show all
Extended by:
ModelOptions
Includes:
InstanceOptions, Notifier, Templates
Defined in:
app/controllers/rademade_admin/model_controller.rb

Direct Known Subclasses

AdminUsersController

Instance Attribute Summary

Attributes included from InstanceOptions

#form_fields_with_locale, #form_fields_without_locale, #item_name, #list_fields, #model_class, #model_info, #model_name

Attributes inherited from AbstractController

#current_user

Instance Method Summary collapse

Methods included from ModelOptions

configuration, item_name, model_class, model_info, model_name, options, parent_menu_item

Methods included from Notifier

#success_action, #success_delete, #success_insert, #success_link, #success_message, #success_unlink, #success_update

Methods included from Templates

#abstract_template, #form_template_path, #native_template_folder

Methods included from InstanceOptions

#filter_fields, #load_field_options, #load_model_options, #load_options, #load_template_options, #origin_fields

Methods included from Breadcrumbs

#edit_breadcrumbs, #list_breadcrumbs, #new_breadcrumbs, #related_breadcrumbs, #root_breadcrumbs

Methods included from UriHelper

#admin_autocomplete_uri, #admin_create_uri, #admin_delete_uri, #admin_edit_form_uri, #admin_edit_uri, #admin_link_autocomplete_uri, #admin_link_uri, #admin_list_uri, #admin_model_url_for, #admin_new_form_uri, #admin_new_uri, #admin_related_item, #admin_related_uri, #admin_unlink_uri, #admin_update_uri, #admin_url_for, #root_uri

Instance Method Details

#autocompleteObject



45
46
47
48
49
50
# File 'app/controllers/rademade_admin/model_controller.rb', line 45

def autocomplete
  authorize! :read, model_class
  conditions = Search::Conditions::Autocomplete.new(params, model_info.data_items)
  @items = Search::Searcher.new(model_info).search(conditions)
  render :json => Autocomplete::BaseSerializer.new(@items)
end

#createObject



18
19
20
21
22
23
24
25
26
# File 'app/controllers/rademade_admin/model_controller.rb', line 18

def create
  authorize! :create, model_class
  saver = RademadeAdmin::Saver.new(model_info, params)
  saver.create_model
  saver.save_data
  success_insert saver.item
rescue Exception => e
  render_record_errors e
end

#destroyObject



38
39
40
41
42
43
# File 'app/controllers/rademade_admin/model_controller.rb', line 38

def destroy
  authorize! :destroy, model_class
  @item = model.find(params[:id])
  @item.delete if @item
  success_delete @item
end

#editObject



84
85
86
87
88
89
90
# File 'app/controllers/rademade_admin/model_controller.rb', line 84

def edit
  authorize! :update, model_class
  @item = model.find(params[:id])

  edit_breadcrumbs
  render_template
end

#formObject



138
139
140
141
142
# File 'app/controllers/rademade_admin/model_controller.rb', line 138

def form
  authorize! :read, model_class
  @item = params[:id].blank? ? model.new : model.find(params[:id])
  render form_template_path(true), :layout => false
end

#indexObject



63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/controllers/rademade_admin/model_controller.rb', line 63

def index
  authorize! :read, model_class
  list_breadcrumbs

  conditions = Search::Conditions::List.new(params, model_info.data_items)
  @items = Search::Searcher.new(model_info).search(conditions)

  respond_to do |format|
    format.html { render_template }
    format.json { render :json => @items }
  end
end


52
53
54
55
56
57
58
59
60
61
# File 'app/controllers/rademade_admin/model_controller.rb', line 52

def link_autocomplete
  authorize! :read, model_class

  relation_service = RademadeAdmin::RelationService.new
  @related_model_info = relation_service.related_model_info(model_info, params[:relation])

  conditions = Search::Conditions::Autocomplete.new(params, @related_model_info.data_items)
  @items = Search::Searcher.new(@related_model_info).search(conditions)
  render :json => Autocomplete::LinkSerializer.new(@items, model.find(params[:id]), params[:relation])
end

#newObject



76
77
78
79
80
81
82
# File 'app/controllers/rademade_admin/model_controller.rb', line 76

def new
  authorize! :create, model_class
  new_breadcrumbs

  @item = model.new
  render_template
end


92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'app/controllers/rademade_admin/model_controller.rb', line 92

def related
  authorize! :read, model_class

  #rm_todo extract relation service
  relation_service = RademadeAdmin::RelationService.new
  @related_model_info = relation_service.related_model_info(model_info, params[:relation])

  @item = model.find(params[:id])
  search_params = params.except(:id)
  conditions = Search::Conditions::RelatedList.new(@item, search_params, @related_model_info.data_items)
  @items = Search::Searcher.new(@related_model_info).search(conditions)

  @sortable_service = RademadeAdmin::SortableService.new(@related_model_info, search_params)

  respond_to do |format|
    format.html {
      related_breadcrumbs
      render_template
    }
    format.json { render :json => Autocomplete::BaseSerializer.new(@items) }
  end
end


115
116
117
118
119
120
# File 'app/controllers/rademade_admin/model_controller.rb', line 115

def related_add
  @item = model.find(params[:id])
  linker = Linker.new(model_info, @item, params[:relation])
  linker.link(params[:related_id])
  success_link
end


122
123
124
125
126
127
# File 'app/controllers/rademade_admin/model_controller.rb', line 122

def related_destroy
  @item = model.find(params[:id])
  linker = Linker.new(model_info, @item, params[:relation])
  linker.unlink(params[:related_id])
  success_unlink
end

#showObject



129
130
131
132
133
134
135
136
# File 'app/controllers/rademade_admin/model_controller.rb', line 129

def show
  authorize! :read, model_class
  @item = model.find(params[:id])
  respond_to do |format|
    format.html { redirect_to :action => 'index' }
    format.json { render :json => @item }
  end
end

#sortObject



144
145
146
147
# File 'app/controllers/rademade_admin/model_controller.rb', line 144

def sort
  sortable_service.sort_items
  success_action
end

#updateObject



28
29
30
31
32
33
34
35
36
# File 'app/controllers/rademade_admin/model_controller.rb', line 28

def update
  authorize! :update, model_class
  saver = RademadeAdmin::Saver.new(model_info, params)
  saver.find_model
  saver.save_data
  success_update saver.item
rescue Exception => e
  render_record_errors e
end