rails_admin-0.8.1/ 0000755 0001756 0001757 00000000000 12633423745 013054 5 ustar pravi pravi rails_admin-0.8.1/app/ 0000755 0001756 0001757 00000000000 12633423745 013634 5 ustar pravi pravi rails_admin-0.8.1/app/views/ 0000755 0001756 0001757 00000000000 12633423745 014771 5 ustar pravi pravi rails_admin-0.8.1/app/views/kaminari/ 0000755 0001756 0001757 00000000000 12633423745 016564 5 ustar pravi pravi rails_admin-0.8.1/app/views/kaminari/twitter-bootstrap/ 0000755 0001756 0001757 00000000000 12633423745 022301 5 ustar pravi pravi rails_admin-0.8.1/app/views/kaminari/twitter-bootstrap/_next_page.html.haml 0000644 0001756 0001757 00000000267 12633423745 026225 0 ustar pravi pravi - if current_page.last?
%li.next.disabled= link_to raw(t 'admin.pagination.next'), '#'
- else
%li.next= link_to raw(t 'admin.pagination.next'), url, class: (remote ? 'pjax' : '')
rails_admin-0.8.1/app/views/kaminari/twitter-bootstrap/_page.html.haml 0000644 0001756 0001757 00000000221 12633423745 025155 0 ustar pravi pravi - if page.current?
%li.active= link_to page, url, class: (remote ? 'pjax' : '')
- else
%li= link_to page, url, class: (remote ? 'pjax' : '')
rails_admin-0.8.1/app/views/kaminari/twitter-bootstrap/_paginator.html.haml 0000644 0001756 0001757 00000000376 12633423745 026240 0 ustar pravi pravi = paginator.render do
%ul.pagination
= prev_page_tag
- each_page do |page|
- if page.left_outer? or page.right_outer? or page.inside_window?
= page_tag page
- elsif !page.was_truncated?
= gap_tag
= next_page_tag
rails_admin-0.8.1/app/views/kaminari/twitter-bootstrap/_gap.html.haml 0000644 0001756 0001757 00000000101 12633423745 025005 0 ustar pravi pravi %li.disabled
%a{href: '#'}= raw(t 'admin.pagination.truncate')
rails_admin-0.8.1/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml 0000644 0001756 0001757 00000000300 12633423745 026207 0 ustar pravi pravi - if current_page.first?
%li.prev.disabled= link_to raw(t 'admin.pagination.previous'), '#'
- else
%li.prev= link_to raw(t 'admin.pagination.previous'), url, class: (remote ? 'pjax' : '')
rails_admin-0.8.1/app/views/rails_admin/ 0000755 0001756 0001757 00000000000 12633423745 017253 5 ustar pravi pravi rails_admin-0.8.1/app/views/rails_admin/main/ 0000755 0001756 0001757 00000000000 12633423745 020177 5 ustar pravi pravi rails_admin-0.8.1/app/views/rails_admin/main/_form_boolean.html.haml 0000644 0001756 0001757 00000000353 12633423745 024607 0 ustar pravi pravi .checkbox
%label{ style: 'display: block;' }
= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, checked: field.form_value.in?([true, '1']), required: field.required})
rails_admin-0.8.1/app/views/rails_admin/main/_form_nested_many.html.haml 0000644 0001756 0001757 00000002005 12633423745 025472 0 ustar pravi pravi .controls.col-sm-10{data: { nestedmany: true }}
.btn-group
%a.btn.btn-info.toggler{:'data-toggle' => "button", :'data-target' => "#{form.jquery_namespace(field)} > .tab-content, #{form.jquery_namespace(field)} > .controls > .nav", class: (field.active? ? 'active' : '')}
%i.icon-white
- unless field.nested_form[:update_only] || !field.inline_add
= form.link_to_add " #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".html_safe, field.name, { class: 'btn btn-info' }
= form.errors_for(field)
= form.help_for(field)
%ul.nav.nav-tabs
.tab-content
= form.fields_for field.name do |nested_form|
- if field.nested_form[:allow_destroy] || nested_form.options[:child_index] == "new_#{field.name}"
= nested_form.link_to_remove ''.html_safe
= nested_form.generate({action: :nested, model_config: field.associated_model_config, nested_in: field })
rails_admin-0.8.1/app/views/rails_admin/main/_form_filtering_select.html.haml 0000644 0001756 0001757 00000004551 12633423745 026516 0 ustar pravi pravi :ruby
config = field.associated_model_config
related_id = params[:associations] && params[:associations][field.name.to_s]
source_abstract_model = RailsAdmin.config(form.object.class).abstract_model
if form.object.new_record? && related_id.present? && related_id != 'new'
selected = config.abstract_model.get(related_id)
selected_id = selected.send(field.associated_primary_key)
selected_name = selected.send(field.associated_object_label_method)
else
selected_id = field.selected_id
selected_name = field.formatted_value
end
current_action = params[:action].in?(['create', 'new']) ? 'create' : 'update'
edit_url = authorized?(:edit, config.abstract_model) ? edit_path(model_name: config.abstract_model.to_param, modal: true, id: '__ID__') : ''
xhr = !field.associated_collection_cache_all
collection = xhr ? [[selected_name, selected_id]] : controller.list_entries(config, :index, field.associated_collection_scope, false).map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }
js_data = {
xhr: xhr,
remote_source: index_path(config.abstract_model.to_param, source_object_id: form.object.id, source_abstract_model: source_abstract_model.to_param, associated_collection: field.name, current_action: current_action, compact: true)
}
- selected_id = (hdv = field.form_default_value).nil? ? selected_id : hdv
= form.select field.method_name, collection, { selected: selected_id, include_blank: true }, field.html_attributes.reverse_merge({ data: { filteringselect: true, options: js_data.to_json }, placeholder: t('admin.misc.search') })
- if authorized?(:new, config.abstract_model) && field.inline_add
- path_hash = { model_name: config.abstract_model.to_param, modal: true }
- path_hash.merge!({ associations: { field.inverse_of => (form.object.persisted? ? form.object.id : 'new') } }) if field.inverse_of
= link_to " ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "btn btn-info create", style: 'margin-left:10px'
- if edit_url.present? && field.inline_edit
= link_to " ".html_safe + wording_for(:link, :edit, config.abstract_model), '#', data: { link: edit_url }, class: "btn btn-info update #{field.value.nil? && 'disabled'}", style: 'margin-left:10px'
rails_admin-0.8.1/app/views/rails_admin/main/edit.html.haml 0000644 0001756 0001757 00000000377 12633423745 022741 0 ustar pravi pravi = rails_admin_form_for @object, url: edit_path(@abstract_model, @object.id), as: @abstract_model.param_key, html: { method: "put", multipart: true, class: "form-horizontal denser", data: { title: @page_name } } do |form|
= form.generate action: :update
rails_admin-0.8.1/app/views/rails_admin/main/_form_field.html.haml 0000644 0001756 0001757 00000000243 12633423745 024251 0 ustar pravi pravi = form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, class: 'form-control', required: field.required})
rails_admin-0.8.1/app/views/rails_admin/main/new.html.haml 0000644 0001756 0001757 00000000370 12633423745 022576 0 ustar pravi pravi = rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, html: { multipart: true, class: "form-horizontal denser", data: { title: @page_name } } do |form|
= form.generate action: :create
rails_admin-0.8.1/app/views/rails_admin/main/delete.html.haml 0000644 0001756 0001757 00000001564 12633423745 023255 0 ustar pravi pravi %h4
= t("admin.form.are_you_sure_you_want_to_delete_the_object", model_name: @abstract_model.pretty_name.downcase)
“
%strong>= @model_config.with(object: @object).object_label
\”
%span>
= t("admin.form.all_of_the_following_related_items_will_be_deleted")
%ul= render partial: "delete_notice", object: @object
= form_for(@object, url: delete_path(model_name: @abstract_model.to_param, id: @object.id), html: {method: "delete"}) do
%input{type: :hidden, name: 'return_to', value: (params[:return_to].presence || request.referer)}
.form-actions
%button.btn.btn-danger{type: "submit", :'data-disable-with' => t("admin.form.confirmation")}
%i.icon-white.icon-ok
= t("admin.form.confirmation")
%button.btn{type: "submit", name: "_continue", :'data-disable-with' => t("admin.form.cancel")}
%i.icon-remove
= t("admin.form.cancel")
rails_admin-0.8.1/app/views/rails_admin/main/_form_datetime.html.haml 0000644 0001756 0001757 00000000522 12633423745 024762 0 ustar pravi pravi .form-inline
.input-group
= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({value: field.form_value, class: 'form-control', data: {datetimepicker: true, options: field.datepicker_options.to_json}})
= form.label(field.method_name, class: 'input-group-addon') do
%i.fa.fa-fw.fa-calendar
rails_admin-0.8.1/app/views/rails_admin/main/_form_colorpicker.html.haml 0000644 0001756 0001757 00000000261 12633423745 025502 0 ustar pravi pravi = form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({value: field.form_value, style: "background-color: #{field.color}", data: {color: true}})
rails_admin-0.8.1/app/views/rails_admin/main/_form_text.html.haml 0000644 0001756 0001757 00000000324 12633423745 024152 0 ustar pravi pravi = form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: false, options: {}.to_json }).reverse_merge({ value: field.form_value, class: 'form-control', required: field.required })
rails_admin-0.8.1/app/views/rails_admin/main/index.html.haml 0000644 0001756 0001757 00000014650 12633423745 023122 0 ustar pravi pravi :ruby
query = params[:query]
params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_export, :_pjax)
params.delete(:query) if params[:query].blank?
params.delete(:sort_reverse) unless params[:sort_reverse] == 'true'
sort_reverse = params[:sort_reverse]
sort = params[:sort]
params.delete(:sort) if params[:sort] == @model_config.list.sort_by.to_s
export_action = RailsAdmin::Config::Actions.find(:export, { controller: self.controller, abstract_model: @abstract_model })
export_action = nil unless export_action && authorized?(export_action.authorization_key, @abstract_model)
description = RailsAdmin.config(@abstract_model.model_name).description
properties = @model_config.list.with(controller: self.controller, view: self, object: @abstract_model.model.new).visible_fields
# columns paginate
sets = get_column_sets(properties)
properties = sets[params[:set].to_i] || []
other_left = ((params[:set].to_i - 1) >= 0) && sets[params[:set].to_i - 1].present?
other_right = sets[params[:set].to_i + 1].present?
- content_for :contextual_tabs do
= bulk_menu
- if filterable_fields.present?
%li.dropdown{style: 'float:right'}
%a.dropdown-toggle{href: '#', :'data-toggle' => "dropdown"}
= t('admin.misc.add_filter')
%b.caret
%ul.dropdown-menu#filters{style: 'left:auto; right:0;'}
- filterable_fields.each do |field|
- field_options = case field.type
- when :enum
- options_for_select(field.with(object: @abstract_model.model.new).enum)
- else
- ''
%li
%a{href: '#', :"data-field-label" => field.label, :"data-field-name" => field.name, :"data-field-options" => field_options.html_safe, :"data-field-type" => field.type, :"data-field-value" => "", :"data-field-datetimepicker-format" => (field.try(:parser) && field.parser.to_momentjs)}= capitalize_first_letter(field.label)
:javascript
jQuery(function($) {
#{ordered_filter_string}
});
%style
- properties.select{ |p| p.column_width.present? }.each do |property|
= "#list th.#{property.css_class} { width: #{property.column_width}px; min-width: #{property.column_width}px; }"
= "#list td.#{property.css_class} { max-width: #{property.column_width}px; }"
#list
= form_tag(index_path(params.except(*%w[page f query])), method: :get, class: "pjax-form form-inline") do
.well
%span#filters_box
%hr.filters_box{style: "display:#{ordered_filters.empty? ? 'none' : 'block'}"}
.input-group
%input.form-control.input-small{name: "query", type: "search", value: query, placeholder: t("admin.misc.filter")}
%span.input-group-btn
%button.btn.btn-primary{type: "submit", :'data-disable-with' => " ".html_safe + t("admin.misc.refresh")}
%i.icon-white.icon-refresh
= t("admin.misc.refresh")
%button#remove_filter.btn.btn-info{title: "Reset filters"}
%i.icon-white.icon-remove
- if export_action
%span{style: 'float:right'}= link_to wording_for(:link, export_action), export_path(params.except('set').except('page')), class: 'btn btn-info'
- unless @model_config.list.scopes.empty?
%ul.nav.nav-tabs#scope_selector
- @model_config.list.scopes.each_with_index do |scope, index|
- scope = '_all' if scope.nil?
%li{class: "#{'active' if scope.to_s == params[:scope] || (params[:scope].blank? && index == 0)}"}
%a{href: index_path(params.merge(scope: scope, page: nil)), class: 'pjax'}= I18n.t("admin.scopes.#{@abstract_model.to_param}.#{scope}", default: I18n.t("admin.scopes.#{scope}", default: scope.to_s.titleize))
= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: "form" do
= hidden_field_tag :bulk_action
- if description.present?
%p
%strong= description
%table.table.table-condensed.table-striped
%thead
%tr
%th.shrink
%input.toggle{type: "checkbox"}
- if other_left
%th.other.left.shrink= "..."
- properties.each do |property|
- selected = (sort == property.name.to_s)
- if property.sortable
- sort_location = index_path params.except('sort_reverse').except('page').merge(sort: property.name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {})
- sort_direction = (sort_reverse == 'true' ? "headerSortUp" : "headerSortDown" if selected)
%th{class: "#{property.sortable && "header pjax" || nil} #{sort_direction if property.sortable && sort_direction} #{property.css_class} #{property.type_css_class}", :'data-href' => (property.sortable && sort_location), rel: "tooltip", title: "#{property.hint}"}= capitalize_first_letter(property.label)
- if other_right
%th.other.right.shrink= "..."
%th.last.shrink
%tbody
- @objects.each do |object|
%tr{class: "#{@abstract_model.param_key}_row"}
%td
= check_box_tag "bulk_ids[]", object.id, false
- if @other_left_link ||= other_left && index_path(params.except('set').merge(params[:set].to_i != 1 ? {set: (params[:set].to_i - 1)} : {}))
%td.other.left= link_to "...", @other_left_link, class: 'pjax'
- properties.map{ |property| property.bind(:object, object) }.each do |property|
- value = property.pretty_value
%td{class: "#{property.css_class} #{property.type_css_class}", title: strip_tags(value.to_s)}= value
- if @other_right_link ||= other_right && index_path(params.merge(set: (params[:set].to_i + 1)))
%td.other.right= link_to "...", @other_right_link, class: 'pjax'
%td.last.links
%ul.inline.list-inline= menu_for :member, @abstract_model, object, true
- if @objects.respond_to?(:total_count)
- total_count = @objects.total_count.to_i
.row
.col-md-6= paginate(@objects, theme: 'twitter-bootstrap', remote: true)
.row
.col-md-6= link_to(t("admin.misc.show_all"), index_path(params.merge(all: true)), class: "show-all btn btn-default clearfix pjax") unless total_count > 100 || total_count <= @objects.to_a.size
.clearfix.total-count= "#{total_count} #{@model_config.pluralize(total_count).downcase}"
- else
.clearfix.total-count= "#{@objects.size} #{@model_config.pluralize(@objects.size).downcase}"
rails_admin-0.8.1/app/views/rails_admin/main/_form_file_upload.html.haml 0000644 0001756 0001757 00000001570 12633423745 025455 0 ustar pravi pravi - file = form.object.send(field.method_name).presence
.toggle{style: ('display:none;' if file && field.delete_method && form.object.send(field.delete_method) == '1')}
- if value = field.pretty_value
= value
= form.file_field(field.name, field.html_attributes.reverse_merge({ data: { fileupload: true }}))
- if field.optional? && field.errors.blank? && file && field.delete_method
%a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button', onclick: "$(this).siblings('[type=checkbox]').click(); $(this).siblings('.toggle').toggle('slow'); jQuery(this).toggleClass('btn-danger btn-info'); return false;"}
%i.icon-white.icon-trash
= I18n.t('admin.actions.delete.menu').capitalize + " #{field.label.downcase}"
= form.check_box(field.delete_method, style: 'display:none;')
- if field.cache_method
= form.hidden_field(field.cache_method)
rails_admin-0.8.1/app/views/rails_admin/main/export.html.haml 0000644 0001756 0001757 00000012530 12633423745 023327 0 ustar pravi pravi - params = request.params.except(:action, :controller, :utf8, :page, :per_page, :format, :authenticity_token)
- visible_fields = @model_config.export.with(view: self, object: @abstract_model.model.new, controller: self.controller).visible_fields
= form_tag export_path(params.merge(all: true)), method: 'post', class: 'form-horizontal denser' do
%input{name: "send_data", type: "hidden", value: "true"}/
%fieldset{id: 'fields_to_export'}
%legend
%i.icon-chevron-down
= t('admin.export.select')
.form-group.control-group.col-sm-12
.controls
.col-sm-12
%label.col-sm-12.checkbox{for: 'check_all'}
= check_box_tag 'all', 'all', true, { id: 'check_all' }
= t('admin.export.select_all_fields')
.form-group.control-group.col-sm-12
%label.col-sm-12.well.control-label{rel: 'tooltip', :'data-original-title' => t('admin.export.click_to_reverse_selection'), onclick: 'jQuery(this).siblings(".controls").find("input").click()'}= t('admin.export.fields_from', name: @model_config.label_plural.downcase)
.col-sm-11.col-sm-offset-1.controls
- visible_fields.select{ |f| !f.association? || f.association.polymorphic? }.each do |field|
- list = field.virtual? ? 'methods' : 'only'
- if field.association? && field.association.polymorphic?
%label.checkbox.col-sm-3{for: "schema_#{list}_#{field.method_name}"}
= check_box_tag "schema[#{list}][]", field.method_name, true, { id: "schema_#{list}_#{field.method_name}" }
= field.label + " [id]"
- polymorphic_type_column_name = @abstract_model.properties.detect {|p| field.association.foreign_type == p.name }.name
%label.checkbox.col-sm-3{for: "schema_#{list}_#{polymorphic_type_column_name}"}
= check_box_tag "schema[#{list}][]", polymorphic_type_column_name, true, { id: "schema_#{list}_#{polymorphic_type_column_name}" }
= capitalize_first_letter(field.label) + " [type]"
- else
%label.checkbox.col-sm-3{for: "schema_#{list}_#{field.name}"}
= check_box_tag "schema[#{list}][]", field.name, true, { id: "schema_#{list}_#{field.name}" }
= capitalize_first_letter(field.label)
- visible_fields.select{ |f| f.association? && !f.association.polymorphic? }.each do |field|
- fields = field.associated_model_config.export.with(controller: self.controller, view: self, object: (associated_model = field.associated_model_config.abstract_model.model).new).visible_fields.select{ |f| !f.association? }
.form-group.control-group.col-sm-12
%label.col-sm-12.well.control-label{rel: 'tooltip', :'data-original-title' => t('admin.export.click_to_reverse_selection'), onclick: 'jQuery(this).siblings(".controls").find("input").click()'}= t('admin.export.fields_from_associated', name: field.label.downcase)
.col-sm-11.col-sm-offset-1.controls
- fields.each do |associated_model_field|
- list = associated_model_field.virtual? ? 'methods' : 'only'
%label.checkbox.col-sm-3{for: "schema_include_#{field.name}_#{list}_#{associated_model_field.name}"}
= check_box_tag "schema[include][#{field.name}][#{list}][]", associated_model_field.name, true, { id: "schema_include_#{field.name}_#{list}_#{associated_model_field.name}" }
= capitalize_first_letter(associated_model_field.label)
%fieldset
%legend
%i.icon-chevron-down
= t('admin.export.options_for', name: 'csv')
.form-group.control-group
- guessed_encoding = @abstract_model.encoding
%label.col-sm-2.control-label{for: "csv_options_encoding_to"}= t('admin.export.csv.encoding_to')
.col-sm-10.controls
-# from http://books.google.com/support/partner/bin/answer.py?answer=30990 :
= select_tag 'csv_options[encoding_to]', options_for_select(RailsAdmin::CSVConverter::TARGET_ENCODINGS), include_blank: true
%p.help-block= t('admin.export.csv.encoding_to_help', name: guessed_encoding)
.form-group.control-group
%label.col-sm-2.control-label{for: "csv_options_skip_header"}= t('admin.export.csv.skip_header')
.col-sm-10.controls
%label.checkbox
= check_box_tag 'csv_options[skip_header]', 'true'
%p.help-block= t('admin.export.csv.skip_header_help')
.form-group.control-group
%label.col-sm-2.control-label{for: "csv_options_generator_col_sep"}= t('admin.export.csv.col_sep')
.col-sm-10.controls
= select_tag 'csv_options[generator][col_sep]', options_for_select({ '' => t('admin.export.csv.default_col_sep'), " ','" => ',', " ';'" => ';', '' => "'\t'" })
%p.help-block= t('admin.export.csv.col_sep_help', value: t('admin.export.csv.default_col_sep'))
.form-group.form-actions
.col-sm-offset-2.col-sm-10
%input{type: :hidden, name: 'return_to', value: (params[:return_to].presence || request.referer)}
%button.btn.btn-primary{type: "submit", name: 'csv'}
%i.icon-white.icon-ok
= t("admin.export.confirmation", name: 'csv')
%button.btn.btn-info{type: "submit", name: 'json'}
= t("admin.export.confirmation", name: 'json')
%button.btn.btn-info{type: "submit", name: 'xml'}
= t("admin.export.confirmation", name: 'xml')
%button.btn{type: "submit", name: "_continue"}
%i.icon-remove
= t("admin.form.cancel")
rails_admin-0.8.1/app/views/rails_admin/main/bulk_delete.html.haml 0000644 0001756 0001757 00000001204 12633423745 024261 0 ustar pravi pravi %h4= I18n.t('admin.form.bulk_delete')
%ul= render partial: "delete_notice", collection: @objects
= form_tag bulk_delete_path(model_name: @abstract_model.to_param, bulk_ids: @objects.map(&:id)), method: :delete do
.form-actions
%input{type: :hidden, name: 'return_to', value: (params[:return_to].presence || request.referer)}
%button.btn.btn-danger{type: "submit", :'data-disable-with' => t("admin.form.confirmation")}
%i.icon-white.icon-ok
= t("admin.form.confirmation")
%button.btn{type: "submit", name: "_continue", :'data-disable-with' => t("admin.form.cancel")}
%i.icon-remove
= t("admin.form.cancel")
rails_admin-0.8.1/app/views/rails_admin/main/dashboard.html.haml 0000644 0001756 0001757 00000003651 12633423745 023741 0 ustar pravi pravi - if @abstract_models
%table.table.table-condensed.table-striped
%thead
%tr
%th.shrink.model-name= t "admin.table_headers.model_name"
%th.shrink.last-used= t "admin.table_headers.last_used"
%th.records= t "admin.table_headers.records"
%th.shrink.controls
%tbody
- @abstract_models.each do |abstract_model|
- if authorized? :index, abstract_model
- index_path = index_path(model_name: abstract_model.to_param)
- row_class = "#{cycle("odd", "even")}#{" link" if index_path} #{abstract_model.param_key}_links"
%tr{class: row_class, :"data-link" => index_path}
- last_used = @most_recent_changes[abstract_model.model.name]
- active = last_used.try(:today?)
%td
%span.show= link_to capitalize_first_letter(abstract_model.config.label_plural), index_path, class: 'pjax'
%td
- if last_used
= time_ago_in_words last_used
= t "admin.misc.ago"
%td
- count = @count[abstract_model.model.name]
- percent = count > 0 ? (@max <= 1 ? count : ((Math.log(count+1) * 100.0) / Math.log(@max+1)).to_i) : -1
.progress{style: "margin-bottom:0px", class: "progress-#{get_indicator(percent)} #{active && 'active progress-striped'}" }
.progress-bar.animate-width-to{:class => "progress-bar-#{get_indicator(percent)}", :'data-animate-length' => ([1.0, percent].max.to_i * 20), :'data-animate-width-to' => "#{[2.0, percent].max.to_i}%", style: "width:2%"}
= @count[abstract_model.model.name]
%td.links
%ul.inline.list-inline= menu_for :collection, abstract_model, nil, true
- if @auditing_adapter && authorized?(:history_index)
#block-tables.block
.content
%h2= t("admin.actions.history_index.menu")
= render partial: 'rails_admin/main/dashboard_history'
rails_admin-0.8.1/app/views/rails_admin/main/_form_filtering_multiselect.html.haml 0000644 0001756 0001757 00000005114 12633423745 027565 0 ustar pravi pravi :ruby
related_id = params[:associations] && params[:associations][field.name.to_s]
config = field.associated_model_config
source_abstract_model = RailsAdmin.config(form.object.class).abstract_model
if form.object.new_record? && related_id.present? && related_id != 'new'
selected = [config.abstract_model.get(related_id)]
else
selected = form.object.send(field.name)
end
selected_ids = selected.map{|s| s.send(field.associated_primary_key)}
current_action = params[:action].in?(['create', 'new']) ? 'create' : 'update'
xhr = !field.associated_collection_cache_all
collection = if xhr
selected.map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }
else
i = 0
controller.list_entries(config, :index, field.associated_collection_scope, false).map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }.sort_by {|a| [selected_ids.index(a[1]) || selected_ids.size, i+=1] }
end
js_data = {
xhr: xhr,
:'edit-url' => (authorized?(:edit, config.abstract_model) ? edit_path(model_name: config.abstract_model.to_param, id: '__ID__') : ''),
remote_source: index_path(config.abstract_model, source_object_id: form.object.id, source_abstract_model: source_abstract_model.to_param, associated_collection: field.name, current_action: current_action, compact: true),
sortable: !!field.orderable,
removable: !!field.removable,
cacheAll: !!field.associated_collection_cache_all,
regional: {
chooseAll: t("admin.misc.chose_all"),
chosen: t("admin.misc.chosen", name: config.label_plural),
clearAll: t("admin.misc.clear_all"),
search: t("admin.misc.search"),
up: t("admin.misc.up"),
down: t("admin.misc.down")
}
}
%input{name: form.dom_name(field), type: "hidden", value: ""}
- selected_ids = (hdv = field.form_default_value).nil? ? selected_ids : hdv
= form.select field.method_name, collection, { selected: selected_ids, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true})
- if authorized?(:new, config.abstract_model) && field.inline_add
- path_hash = { model_name: config.abstract_model.to_param, modal: true }
- path_hash.merge!({ associations: { field.inverse_of => (form.object.persisted? ? form.object.id : 'new') } }) if field.inverse_of
= link_to " ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "create btn btn-info", style: 'margin-left:10px'
rails_admin-0.8.1/app/views/rails_admin/main/_form_froala.html.haml 0000644 0001756 0001757 00000000475 12633423745 024441 0 ustar pravi pravi :ruby
js_data = {
csspath: field.css_location,
jspath: field.js_location,
config_options: field.config_options.to_json
}
= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'froala-wysiwyg', options: js_data.to_json }).reverse_merge({ value: field.form_value })
rails_admin-0.8.1/app/views/rails_admin/main/_delete_notice.html.haml 0000644 0001756 0001757 00000001701 12633423745 024746 0 ustar pravi pravi - object = delete_notice
%li{style: 'display:block; margin-top:10px'}
%span.label.label-default= @abstract_model.pretty_name
- wording = object.send(@model_config.object_label_method)
- if show_action = action(:show, @abstract_model, object)
= link_to(wording, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: object.id), class: 'pjax')
- else
= wording
%ul
- @abstract_model.each_associated_children(object) do |association, child|
%li
- child_config = RailsAdmin.config(child)
= @abstract_model.model.human_attribute_name association.name
- wording = child.send(child_config.object_label_method)
- if child.id && (show_action = action(:show, child_config.abstract_model, child))
= link_to(wording, url_for(action: show_action.action_name, model_name: child_config.abstract_model.to_param, id: child.id), class: 'pjax')
- else
= wording
rails_admin-0.8.1/app/views/rails_admin/main/_submit_buttons.html.haml 0000644 0001756 0001757 00000001706 12633423745 025231 0 ustar pravi pravi .form-group.form-actions
.col-sm-offset-2.col-sm-10
%input{type: :hidden, name: 'return_to', value: (params[:return_to].presence || request.referer)}
%button.btn.btn-primary{type: "submit", name: "_save", :'data-disable-with' => t("admin.form.save")}
%i.icon-white.icon-ok
= t("admin.form.save")
%span.extra_buttons
- if authorized? :new, @abstract_model
%button.btn.btn-info{type: "submit", name: "_add_another", :'data-disable-with' => t("admin.form.save_and_add_another")}
= t("admin.form.save_and_add_another")
- if authorized? :edit, @abstract_model
%button.btn.btn-info{type: "submit", name: "_add_edit", :'data-disable-with' => t("admin.form.save_and_edit")}
= t("admin.form.save_and_edit")
%button.btn.btn-default{type: "submit", name: "_continue", :'data-disable-with' => t("admin.form.cancel"), :formnovalidate => true}
%i.icon-remove
= t("admin.form.cancel")
rails_admin-0.8.1/app/views/rails_admin/main/_form_nested_one.html.haml 0000644 0001756 0001757 00000002136 12633423745 025314 0 ustar pravi pravi .controls.col-sm-10{data: { nestedone: true }}
%ul.nav{style: 'margin-bottom:0px; display:none'}
.btn-group
%a.btn.btn-info.toggler{:'data-toggle' => "button", :'data-target' => "#{form.jquery_namespace(field)} > .tab-content", class: (field.active? ? 'active' : '') }
%i.icon-white
- unless field.nested_form[:update_only] || !field.inline_add
= form.link_to_add " #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".html_safe,
field.name,
{ class: 'btn btn-info', :'data-add-label' => " #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".gsub("\n", "") }
= form.errors_for(field)
= form.help_for(field)
.tab-content
= form.fields_for field.name do |nested_form|
- if field.nested_form[:allow_destroy]
= nested_form.link_to_remove ''.html_safe
= nested_form.generate({action: :nested, model_config: field.associated_model_config, nested_in: field })
rails_admin-0.8.1/app/views/rails_admin/main/_dashboard_history.html.haml 0000644 0001756 0001757 00000001602 12633423745 025653 0 ustar pravi pravi %table.table.table-condensed.table-striped
%thead
%tr
%th.shrink.user= t("admin.table_headers.username")
%th.shrink.items= t("admin.table_headers.item")
%th.changes= t("admin.table_headers.changes")
%tbody
- @history.each do |t|
- abstract_model = RailsAdmin.config(t.table).abstract_model
%tr
%td= t.try :username
- if o = abstract_model.try(:get, t.item)
- label = o.send(abstract_model.config.object_label_method)
- if show_action = action(:show, abstract_model, o)
%td= link_to(label, url_for(action: show_action.action_name, model_name: abstract_model.to_param, id: o.id), class: 'pjax')
- else
%td= label
- else
- label = Object.const_defined?(t.table) ? t.table.constantize.model_name.human : t.table
%td= "#{label} ##{t.item}"
%td= t.message
rails_admin-0.8.1/app/views/rails_admin/main/_form_enumeration.html.haml 0000644 0001756 0001757 00000001532 12633423745 025516 0 ustar pravi pravi - unless field.multiple?
= form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search') })
- else
:ruby
js_data = {
xhr: false,
sortable: false,
cacheAll: true,
regional: {
chooseAll: t("admin.misc.chose_all"),
chosen: t("admin.misc.chosen", name: config.label_plural),
clearAll: t("admin.misc.clear_all"),
search: t("admin.misc.search"),
up: t("admin.misc.up"),
down: t("admin.misc.down")
}
}
= form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true})
rails_admin-0.8.1/app/views/rails_admin/main/history.html.haml 0000644 0001756 0001757 00000005772 12633423745 023521 0 ustar pravi pravi - params = request.params.except(:action, :controller, :model_name)
- query = params[:query]
- filter = params[:filter]
- sort = params[:sort]
- sort_reverse = params[:sort_reverse]
- path_method = params[:id] ? "history_show_path" : "history_index_path"
= form_tag("", method: "get", class: "search pjax-form form-inline") do
.well
.input-group
%input.form-control.input-small{name: "query", type: "search", value: query, placeholder: "#{t("admin.misc.filter")}", class: 'input-small'}
%span.input-group-btn
%button.btn.btn-primary{type: "submit", :'data-disable-with' => " ".html_safe + t("admin.misc.refresh")}
%i.icon-white.icon-refresh
= t("admin.misc.refresh")
%table#history.table.table-striped.table-condensed
%thead
%tr
- columns = []
- columns << { property_name: "created_at", css_class: "created_at",link_text: t('admin.table_headers.created_at') }
- columns << { property_name: "username", css_class: "username", link_text: t('admin.table_headers.username') }
- columns << { property_name: "item", css_class: "item", link_text: t('admin.table_headers.item') } if @general
- columns << { property_name: "message", css_class: "message", link_text: t('admin.table_headers.message') }
- columns.each do |column|
- property_name = column[:property_name]
- selected = (sort == property_name)
- sort_direction = (sort_reverse ? "headerSortUp" : "headerSortDown" if selected)
- sort_location = send(path_method, params.except("sort_reverse").merge(model_name: @abstract_model.to_param, sort: property_name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {}))
%th{class: "header pjax #{column[:css_class]} #{sort_direction if selected}", :'data-href' => sort_location}= column[:link_text]
%tbody
- @history.each_with_index do |object, index|
%tr
- unless object.created_at.nil?
%td= l(object.created_at, format: :long, default: l(object.created_at, format: :long, locale: :en))
%td= object.username
- if @general
- if o = @abstract_model.get(object.item)
- label = o.send(@abstract_model.config.object_label_method)
- if show_action = action(:show, @abstract_model, o)
%td= link_to(label, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: o.id), class: 'pjax')
- else
%td= label
- else
%td= "#{@abstract_model.config.label} ##{object.item}"
%td= object.message.in?(['delete', 'new']) ? t("admin.actions.#{object.message}.done").capitalize : object.message
- unless params[:all] || !@history.respond_to?(:current_page)
= paginate(@history, theme: 'twitter-bootstrap', remote: true)
= link_to(t("admin.misc.show_all"), send(path_method, params.merge(all: true)), class: "show-all btn pjax") unless (tc = @history.total_count) <= @history.size || tc > 100
rails_admin-0.8.1/app/views/rails_admin/main/_form_polymorphic_association.html.haml 0000644 0001756 0001757 00000001326 12633423745 030132 0 ustar pravi pravi :ruby
type_collection = field.polymorphic_type_collection
type_column = field.association.foreign_type.to_s
selected_type = field.bindings[:object].send(type_column)
collection = field.associated_collection(selected_type)
selected = field.bindings[:object].send(field.association.name)
column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, type_column)
.form-inline
= form.select type_column, type_collection, {include_blank: true, selected: selected_type}, class: "form-control", id: column_type_dom_id, data: { polymorphic: true, urls: field.polymorphic_type_urls.to_json }
= form.select field.method_name, collection, {include_blank: true, selected: selected.try(:id)}, class: "form-control"
rails_admin-0.8.1/app/views/rails_admin/main/show.html.haml 0000644 0001756 0001757 00000001455 12633423745 022772 0 ustar pravi pravi - @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset|
- unless (fields = fieldset.with(object: @object, view: self, controller: self.controller).visible_fields).empty?
- if !(values = fields.map{ |f| f.formatted_value.presence }).compact.empty? || !RailsAdmin::config.compact_show_view
.fieldset
%h4
= fieldset.label
- if fieldset.help
%p= fieldset.help
%dl
- fields.each_with_index do |field, index|
- unless values[index].nil? && RailsAdmin::config.compact_show_view
%dt
%span.label.label-info{class: "#{field.type_css_class} #{field.css_class}"}
= field.label
%dd.well
= field.pretty_value
rails_admin-0.8.1/app/views/rails_admin/main/_form_wysihtml5.html.haml 0000644 0001756 0001757 00000000502 12633423745 025131 0 ustar pravi pravi :ruby
js_data = {
csspath: field.css_location,
jspath: field.js_location,
config_options: field.config_options.to_json
}
= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'bootstrap-wysihtml5', options: js_data.to_json }).reverse_merge({ value: field.form_value })
rails_admin-0.8.1/app/views/rails_admin/main/_form_ck_editor.html.haml 0000644 0001756 0001757 00000000660 12633423745 025134 0 ustar pravi pravi :ruby
js_data = {
jspath: field.location ? field.location : field.base_location + "ckeditor.js",
base_location: field.base_location,
options: {
customConfig: field.config_js ? field.config_js : field.base_location + "config.js"
}
}
= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'ckeditor', options: js_data.to_json }).reverse_merge({ value: field.form_value })
rails_admin-0.8.1/app/views/rails_admin/main/_form_code_mirror.html.haml 0000644 0001756 0001757 00000000477 12633423745 025503 0 ustar pravi pravi :ruby
js_data = {
csspath: field.css_location,
jspath: field.js_location,
options: field.config,
locations: field.assets
}
= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'codemirror', options: js_data.to_json }).reverse_merge({ value: field.form_value })
rails_admin-0.8.1/app/views/layouts/ 0000755 0001756 0001757 00000000000 12633423745 016471 5 ustar pravi pravi rails_admin-0.8.1/app/views/layouts/rails_admin/ 0000755 0001756 0001757 00000000000 12633423745 020753 5 ustar pravi pravi rails_admin-0.8.1/app/views/layouts/rails_admin/pjax.html.haml 0000644 0001756 0001757 00000001267 12633423745 023531 0 ustar pravi pravi :javascript
$('.nav.nav-pills li.active').removeClass('active');
$('.nav.nav-pills li[data-model="#{@abstract_model.to_param}"]').addClass('active');
%title= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}"
.page-header
%h1= @page_name
- flash && flash.each do |key, value|
.alert.alert-dismissible{class: flash_alert_class(key)}
%button.close{type: 'button', :'data-dismiss' => "alert"} ×
= value
= breadcrumb
%ul.nav.nav-tabs
= menu_for((@abstract_model ? (@object.try(:persisted?) ? :member : :collection) : :root), @abstract_model, @object)
= content_for :contextual_tabs
= yield
rails_admin-0.8.1/app/views/layouts/rails_admin/_sidebar_navigation.html.haml 0000644 0001756 0001757 00000000137 12633423745 026551 0 ustar pravi pravi %ul.nav.nav-pills.nav-stacked= main_navigation
%ul.nav.nav-pills.nav-stacked= static_navigation rails_admin-0.8.1/app/views/layouts/rails_admin/application.html.haml 0000644 0001756 0001757 00000002044 12633423745 025064 0 ustar pravi pravi !!! 5
%html{lang: I18n.locale}
%head
%meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
%meta{content: "NONE,NOARCHIVE", name: "robots"}
= csrf_meta_tag
= stylesheet_link_tag "rails_admin/rails_admin.css", media: :all
= javascript_include_tag "rails_admin/rails_admin.js"
-# Initialize JS simple i18n
:javascript
RailsAdmin.I18n.init('#{I18n.locale}', JSON.parse("#{j I18n.t("admin.js").to_json}"))
%body.rails_admin
#loading.label.label-warning{style: 'display:none; position:fixed; right:20px; bottom:20px; z-index:100000'}= t('admin.loading')
%nav.navbar.navbar-default.navbar-fixed-top
= render "layouts/rails_admin/navigation"
.container-fluid
.row
.col-sm-3.col-md-2.sidebar-nav
= render "layouts/rails_admin/sidebar_navigation"
.col-sm-9.col-sm-offset-3.col-md-10.col-md-offset-2
.content{:'data-pjax-container' => true}= render template: 'layouts/rails_admin/pjax'
rails_admin-0.8.1/app/views/layouts/rails_admin/_navigation.html.haml 0000644 0001756 0001757 00000000775 12633423745 025070 0 ustar pravi pravi .container-fluid
.navbar-header
%button.navbar-toggle.collapsed{ type: 'button', data: { toggle: 'collapse', target: '#secondary-navigation' } }
%span.sr-only= t('admin.toggle_navigation')
%span.icon-bar
%span.icon-bar
%span.icon-bar
%a.navbar-brand.pjax{href: dashboard_path}
= _get_plugin_name[0] || 'Rails'
%small= _get_plugin_name[1] || 'Admin'
.collapse.navbar-collapse#secondary-navigation
= render partial: 'layouts/rails_admin/secondary_navigation'
rails_admin-0.8.1/app/views/layouts/rails_admin/_secondary_navigation.html.haml 0000644 0001756 0001757 00000001155 12633423745 027130 0 ustar pravi pravi %ul.nav.navbar-nav.navbar-right.root_links
- actions(:root).each do |action|
%li{class: "#{action.action_name}_root_link"}= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: "pjax"
- if main_app_root_path = (main_app.root_path rescue false)
%li= link_to t('admin.home.name'), main_app_root_path
- if _current_user
- if user_link = edit_user_link
%li.edit_user_root_link= user_link
- if logout_path.present?
%li= link_to content_tag('span', t('admin.misc.log_out'), class: 'label label-danger'), logout_path, method: logout_method
rails_admin-0.8.1/app/controllers/ 0000755 0001756 0001757 00000000000 12633423745 016202 5 ustar pravi pravi rails_admin-0.8.1/app/controllers/rails_admin/ 0000755 0001756 0001757 00000000000 12633423745 020464 5 ustar pravi pravi rails_admin-0.8.1/app/controllers/rails_admin/main_controller.rb 0000644 0001756 0001757 00000016346 12633423745 024212 0 ustar pravi pravi module RailsAdmin
class MainController < RailsAdmin::ApplicationController
include ActionView::Helpers::TextHelper
include RailsAdmin::MainHelper
include RailsAdmin::ApplicationHelper
layout :get_layout
before_filter :get_model, except: RailsAdmin::Config::Actions.all(:root).collect(&:action_name)
before_filter :get_object, only: RailsAdmin::Config::Actions.all(:member).collect(&:action_name)
before_filter :check_for_cancel
RailsAdmin::Config::Actions.all.each do |action|
class_eval <<-EOS, __FILE__, __LINE__ + 1
def #{action.action_name}
action = RailsAdmin::Config::Actions.find('#{action.action_name}'.to_sym)
@authorization_adapter.try(:authorize, action.authorization_key, @abstract_model, @object)
@action = action.with({controller: self, abstract_model: @abstract_model, object: @object})
fail(ActionNotAllowed) unless @action.enabled?
@page_name = wording_for(:title)
instance_eval &@action.controller
end
EOS
end
def bulk_action
send(params[:bulk_action]) if params[:bulk_action].in?(RailsAdmin::Config::Actions.all(controller: self, abstract_model: @abstract_model).select(&:bulkable?).collect(&:route_fragment))
end
def list_entries(model_config = @model_config, auth_scope_key = :index, additional_scope = get_association_scope_from_params, pagination = !(params[:associated_collection] || params[:all] || params[:bulk_ids]))
scope = model_config.abstract_model.scoped
if auth_scope = @authorization_adapter && @authorization_adapter.query(auth_scope_key, model_config.abstract_model)
scope = scope.merge(auth_scope)
end
scope = scope.instance_eval(&additional_scope) if additional_scope
get_collection(model_config, scope, pagination)
end
private
def get_layout
"rails_admin/#{request.headers['X-PJAX'] ? 'pjax' : 'application'}"
end
def back_or_index
params[:return_to].presence && params[:return_to].include?(request.host) && (params[:return_to] != request.fullpath) ? params[:return_to] : index_path
end
def get_sort_hash(model_config)
abstract_model = model_config.abstract_model
params[:sort] = params[:sort_reverse] = nil unless model_config.list.fields.collect { |f| f.name.to_s }.include? params[:sort]
params[:sort] ||= model_config.list.sort_by.to_s
params[:sort_reverse] ||= 'false'
field = model_config.list.fields.detect { |f| f.name.to_s == params[:sort] }
column = begin
if field.nil? || field.sortable == true # use params[:sort] on the base table
"#{abstract_model.table_name}.#{params[:sort]}"
elsif field.sortable == false # use default sort, asked field is not sortable
"#{abstract_model.table_name}.#{model_config.list.sort_by}"
elsif (field.sortable.is_a?(String) || field.sortable.is_a?(Symbol)) && field.sortable.to_s.include?('.') # just provide sortable, don't do anything smart
field.sortable
elsif field.sortable.is_a?(Hash) # just join sortable hash, don't do anything smart
"#{field.sortable.keys.first}.#{field.sortable.values.first}"
elsif field.association? # use column on target table
"#{field.associated_model_config.abstract_model.table_name}.#{field.sortable}"
else # use described column in the field conf.
"#{abstract_model.table_name}.#{field.sortable}"
end
end
reversed_sort = (field ? field.sort_reverse? : model_config.list.sort_reverse?)
{sort: column, sort_reverse: (params[:sort_reverse] == reversed_sort.to_s)}
end
def redirect_to_on_success
notice = t('admin.flash.successful', name: @model_config.label, action: t("admin.actions.#{@action.key}.done"))
if params[:_add_another]
redirect_to new_path(return_to: params[:return_to]), flash: {success: notice}
elsif params[:_add_edit]
redirect_to edit_path(id: @object.id, return_to: params[:return_to]), flash: {success: notice}
else
redirect_to back_or_index, flash: {success: notice}
end
end
def visible_fields(action, model_config = @model_config)
model_config.send(action).with(controller: self, view: view_context, object: @object).visible_fields
end
def sanitize_params_for!(action, model_config = @model_config, target_params = params[@abstract_model.param_key])
return unless target_params.present?
fields = visible_fields(action, model_config)
allowed_methods = fields.collect(&:allowed_methods).flatten.uniq.collect(&:to_s) << 'id' << '_destroy'
fields.each { |field| field.parse_input(target_params) }
target_params.slice!(*allowed_methods)
target_params.permit! if target_params.respond_to?(:permit!)
fields.select(&:nested_form).each do |association|
children_params = association.multiple? ? target_params[association.method_name].try(:values) : [target_params[association.method_name]].compact
(children_params || []).each do |children_param|
sanitize_params_for!(:nested, association.associated_model_config, children_param)
end
end
end
def handle_save_error(whereto = :new)
flash.now[:error] = t('admin.flash.error', name: @model_config.label, action: t("admin.actions.#{@action.key}.done").html_safe).html_safe
flash.now[:error] += %(
- #{@object.errors.full_messages.join('
- ')}).html_safe
respond_to do |format|
format.html { render whereto, status: :not_acceptable }
format.js { render whereto, layout: false, status: :not_acceptable }
end
end
def check_for_cancel
return unless params[:_continue] || (params[:bulk_action] && !params[:bulk_ids])
redirect_to(back_or_index, notice: t('admin.flash.noaction'))
end
def get_collection(model_config, scope, pagination)
associations = model_config.list.fields.select { |f| f.type == :belongs_to_association && !f.polymorphic? }.collect { |f| f.association.name }
options = {}
options = options.merge(page: (params[Kaminari.config.param_name] || 1).to_i, per: (params[:per] || model_config.list.items_per_page)) if pagination
options = options.merge(include: associations) unless associations.blank?
options = options.merge(get_sort_hash(model_config))
options = options.merge(query: params[:query]) if params[:query].present?
options = options.merge(filters: params[:f]) if params[:f].present?
options = options.merge(bulk_ids: params[:bulk_ids]) if params[:bulk_ids]
model_config.abstract_model.all(options, scope)
end
def get_association_scope_from_params
return nil unless params[:associated_collection].present?
source_abstract_model = RailsAdmin::AbstractModel.new(to_model_name(params[:source_abstract_model]))
source_model_config = source_abstract_model.config
source_object = source_abstract_model.get(params[:source_object_id])
action = params[:current_action].in?(%w(create update)) ? params[:current_action] : 'edit'
@association = source_model_config.send(action).fields.detect { |f| f.name == params[:associated_collection].to_sym }.with(controller: self, object: source_object)
@association.associated_collection_scope
end
end
end
rails_admin-0.8.1/app/controllers/rails_admin/application_controller.rb 0000644 0001756 0001757 00000004026 12633423745 025561 0 ustar pravi pravi require 'rails_admin/abstract_model'
module RailsAdmin
class ModelNotFound < ::StandardError
end
class ObjectNotFound < ::StandardError
end
class ActionNotAllowed < ::StandardError
end
class ApplicationController < Config.parent_controller.constantize
before_filter :_authenticate!
before_filter :_authorize!
before_filter :_audit!
helper_method :_current_user, :_get_plugin_name
attr_reader :object, :model_config, :abstract_model, :authorization_adapter
def get_model
@model_name = to_model_name(params[:model_name])
fail(RailsAdmin::ModelNotFound) unless (@abstract_model = RailsAdmin::AbstractModel.new(@model_name))
fail(RailsAdmin::ModelNotFound) if (@model_config = @abstract_model.config).excluded?
@properties = @abstract_model.properties
end
def get_object
fail(RailsAdmin::ObjectNotFound) unless (@object = @abstract_model.get(params[:id]))
end
def to_model_name(param)
param.split('~').collect(&:camelize).join('::')
end
def _current_user
instance_eval(&RailsAdmin::Config.current_user_method)
end
private
def _get_plugin_name
@plugin_name_array ||= [RailsAdmin.config.main_app_name.is_a?(Proc) ? instance_eval(&RailsAdmin.config.main_app_name) : RailsAdmin.config.main_app_name].flatten
end
def _authenticate!
instance_eval(&RailsAdmin::Config.authenticate_with)
end
def _authorize!
instance_eval(&RailsAdmin::Config.authorize_with)
end
def _audit!
instance_eval(&RailsAdmin::Config.audit_with)
end
def user_for_paper_trail
_current_user.try(:id) || _current_user
end
rescue_from RailsAdmin::ObjectNotFound do
flash[:error] = I18n.t('admin.flash.object_not_found', model: @model_name, id: params[:id])
params[:action] = 'index'
index
end
rescue_from RailsAdmin::ModelNotFound do
flash[:error] = I18n.t('admin.flash.model_not_found', model: @model_name)
params[:action] = 'dashboard'
dashboard
end
end
end
rails_admin-0.8.1/app/helpers/ 0000755 0001756 0001757 00000000000 12633423745 015276 5 ustar pravi pravi rails_admin-0.8.1/app/helpers/rails_admin/ 0000755 0001756 0001757 00000000000 12633423745 017560 5 ustar pravi pravi rails_admin-0.8.1/app/helpers/rails_admin/application_helper.rb 0000644 0001756 0001757 00000017511 12633423745 023754 0 ustar pravi pravi require 'rails_admin/support/i18n'
module RailsAdmin
module ApplicationHelper
include RailsAdmin::Support::I18n
def capitalize_first_letter(wording)
return nil unless wording.present? && wording.is_a?(String)
wording = wording.dup
wording[0] = wording[0].mb_chars.capitalize.to_s
wording
end
def authorized?(action_name, abstract_model = nil, object = nil)
object = nil if object.try :new_record?
action(action_name, abstract_model, object).try(:authorized?)
end
def current_action?(action, abstract_model = @abstract_model, object = @object)
@action.custom_key == action.custom_key &&
abstract_model.try(:to_param) == @abstract_model.try(:to_param) &&
(@object.try(:persisted?) ? @object.id == object.try(:id) : !object.try(:persisted?))
end
def action(key, abstract_model = nil, object = nil)
RailsAdmin::Config::Actions.find(key, controller: controller, abstract_model: abstract_model, object: object)
end
def actions(scope = :all, abstract_model = nil, object = nil)
RailsAdmin::Config::Actions.all(scope, controller: controller, abstract_model: abstract_model, object: object)
end
def edit_user_link
return nil unless _current_user.respond_to?(:email)
return nil unless abstract_model = RailsAdmin.config(_current_user.class).abstract_model
return nil unless (edit_action = RailsAdmin::Config::Actions.find(:edit, controller: controller, abstract_model: abstract_model, object: _current_user)).try(:authorized?)
link_to url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main') do
html = []
html << image_tag("#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: '') if _current_user.email.present?
html << content_tag(:span, _current_user.email)
html.join.html_safe
end
end
def logout_path
if defined?(Devise)
scope = Devise::Mapping.find_scope!(_current_user)
main_app.send("destroy_#{scope}_session_path") rescue false
else
main_app.logout_path if main_app.respond_to?(:logout_path)
end
end
def logout_method
return [Devise.sign_out_via].flatten.first if defined?(Devise)
:delete
end
def wording_for(label, action = @action, abstract_model = @abstract_model, object = @object)
model_config = abstract_model.try(:config)
object = abstract_model && object.is_a?(abstract_model.model) ? object : nil
action = RailsAdmin::Config::Actions.find(action.to_sym) if action.is_a?(Symbol) || action.is_a?(String)
capitalize_first_letter I18n.t(
"admin.actions.#{action.i18n_key}.#{label}",
model_label: model_config && model_config.label,
model_label_plural: model_config && model_config.label_plural,
object_label: model_config && object.try(model_config.object_label_method),
)
end
def main_navigation
nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
li_stack = navigation nodes_stack, nodes
label = navigation_label || t('admin.misc.navigation')
%(#{li_stack}) if li_stack.present?
end.join.html_safe
end
def static_navigation
li_stack = RailsAdmin::Config.navigation_static_links.collect do |title, url|
content_tag(:li, link_to(title.to_s, url, target: '_blank'))
end.join
label = RailsAdmin::Config.navigation_static_label || t('admin.misc.navigation_static_label')
li_stack = %(#{li_stack}).html_safe if li_stack.present?
li_stack
end
def navigation(nodes_stack, nodes, level = 0)
nodes.collect do |node|
model_param = node.abstract_model.to_param
url = url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
level_class = " nav-level-#{level}" if level > 0
nav_icon = node.navigation_icon ? %().html_safe : ''
li = content_tag :li, data: {model: model_param} do
link_to nav_icon + capitalize_first_letter(node.label_plural), url, class: "pjax#{level_class}"
end
li + navigation(nodes_stack, nodes_stack.select { |n| n.parent.to_s == node.abstract_model.model_name }, level + 1)
end.join.html_safe
end
def breadcrumb(action = @action, _acc = [])
begin
(parent_actions ||= []) << action
end while action.breadcrumb_parent && (action = action(*action.breadcrumb_parent)) # rubocop:disable Loop
content_tag(:ol, class: 'breadcrumb') do
parent_actions.collect do |a|
am = a.send(:eval, 'bindings[:abstract_model]')
o = a.send(:eval, 'bindings[:object]')
content_tag(:li, class: current_action?(a, am, o) && 'active') do
crumb = begin
if !current_action?(a, am, o)
if a.http_methods.include?(:get)
link_to url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)), class: 'pjax' do
wording_for(:breadcrumb, a, am, o)
end
else
content_tag(:span, wording_for(:breadcrumb, a, am, o))
end
else
wording_for(:breadcrumb, a, am, o)
end
end
crumb
end
end.reverse.join.html_safe
end
end
# parent => :root, :collection, :member
def menu_for(parent, abstract_model = nil, object = nil, only_icon = false) # perf matters here (no action view trickery)
actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) }
actions.collect do |action|
wording = wording_for(:menu, action)
%(
#{wording}
)
end.join.html_safe
end
def bulk_menu(abstract_model = @abstract_model)
actions = actions(:bulkable, abstract_model)
return '' if actions.empty?
content_tag :li, class: 'dropdown', style: 'float:right' do
content_tag(:a, class: 'dropdown-toggle', data: {toggle: 'dropdown'}, href: '#') { t('admin.misc.bulk_menu_title').html_safe + ' ' + ''.html_safe } +
content_tag(:ul, class: 'dropdown-menu', style: 'left:auto; right:0;') do
actions.collect do |action|
content_tag :li do
link_to wording_for(:bulk_link, action), '#', onclick: "jQuery('#bulk_action').val('#{action.action_name}'); jQuery('#bulk_form').submit(); return false;"
end
end.join.html_safe
end
end.html_safe
end
def flash_alert_class(flash_key)
case flash_key.to_s
when 'error' then 'alert-danger'
when 'alert' then 'alert-warning'
when 'notice' then 'alert-info'
else "alert-#{flash_key}"
end
end
end
end
rails_admin-0.8.1/app/helpers/rails_admin/main_helper.rb 0000644 0001756 0001757 00000006026 12633423745 022374 0 ustar pravi pravi require 'builder'
module RailsAdmin
module MainHelper
def rails_admin_form_for(*args, &block)
options = args.extract_options!.reverse_merge(builder: RailsAdmin::FormBuilder)
(options[:html] ||= {})[:novalidate] ||= !RailsAdmin::Config.browser_validations
form_for(*(args << options), &block) << after_nested_form_callbacks
end
def get_indicator(percent)
return '' if percent < 0 # none
return 'info' if percent < 34 # < 1/100 of max
return 'success' if percent < 67 # < 1/10 of max
return 'warning' if percent < 84 # < 1/3 of max
'danger' # > 1/3 of max
end
def get_column_sets(properties)
sets = []
property_index = 0
set_index = 0
while property_index < properties.length
current_set_width = 0
loop do
sets[set_index] ||= []
sets[set_index] << properties[property_index]
current_set_width += (properties[property_index].column_width || 120)
property_index += 1
break if current_set_width >= RailsAdmin::Config.total_columns_width || property_index >= properties.length
end
set_index += 1
end
sets
end
def filterable_fields
@filterable_fields ||= @model_config.list.fields.select(&:filterable?)
end
def ordered_filters
return @ordered_filters if @ordered_filters.present?
@index = 0
@ordered_filters = (params[:f] || @model_config.list.filters).inject({}) do |memo, filter|
field_name = filter.is_a?(Array) ? filter.first : filter
(filter.is_a?(Array) ? filter.last : {(@index += 1) => {'v' => ''}}).each do |index, filter_hash|
if filter_hash['disabled'].blank?
memo[index] = {field_name => filter_hash}
else
params[:f].delete(field_name)
end
end
memo
end.to_a.sort_by(&:first)
end
def ordered_filter_string
@ordered_filter_string ||= ordered_filters.map do |duplet|
options = {index: duplet[0]}
filter_for_field = duplet[1]
filter_name = filter_for_field.keys.first
filter_hash = filter_for_field.values.first
unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym })
fail "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
end
case field.type
when :enum
options[:select_options] = options_for_select(field.with(object: @abstract_model.model.new).enum, filter_hash['v'])
when :date, :datetime, :time
options[:datetimepicker_format] = field.parser.to_momentjs
end
options[:label] = field.label
options[:name] = field.name
options[:type] = field.type
options[:value] = filter_hash['v']
options[:label] = field.label
options[:operator] = filter_hash['o']
%{$.filters.append(#{options.to_json});}
end.join("\n").html_safe if ordered_filters
end
end
end
rails_admin-0.8.1/app/helpers/rails_admin/form_builder.rb 0000644 0001756 0001757 00000012017 12633423745 022557 0 ustar pravi pravi module RailsAdmin
class FormBuilder < ::ActionView::Helpers::FormBuilder
include ::NestedForm::BuilderMixin
include ::RailsAdmin::ApplicationHelper
def generate(options = {})
without_field_error_proc_added_div do
options.reverse_merge!(
action: @template.controller.params[:action],
model_config: @template.instance_variable_get(:@model_config),
nested_in: false,
)
object_infos +
visible_groups(options[:model_config], generator_action(options[:action], options[:nested_in])).collect do |fieldset|
fieldset_for fieldset, options[:nested_in]
end.join.html_safe +
(options[:nested_in] ? '' : @template.render(partial: 'rails_admin/main/submit_buttons'))
end
end
def fieldset_for(fieldset, nested_in)
return unless (fields = fieldset.with(form: self, object: @object, view: @template, controller: @template.controller).visible_fields).length > 0
@template.content_tag :fieldset do
contents = []
contents << @template.content_tag(:legend, %( #{fieldset.label}).html_safe, style: "#{fieldset.name == :default ? 'display:none' : ''}")
contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
contents.join.html_safe
end
end
def field_wrapper_for(field, nested_in)
if field.label
# do not show nested field if the target is the origin
unless nested_field_association?(field, nested_in)
@template.content_tag(:div, class: "form-group control-group #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
label(field.method_name, capitalize_first_letter(field.label), class: 'col-sm-2 control-label') +
(field.nested_form ? field_for(field) : input_for(field))
end
end
else
field.nested_form ? field_for(field) : input_for(field)
end
end
def input_for(field)
css = 'col-sm-10 controls'
css += ' has-error' if field.errors.present?
@template.content_tag(:div, class: css) do
field_for(field) +
errors_for(field) +
help_for(field)
end
end
def errors_for(field)
field.errors.present? ? @template.content_tag(:span, field.errors.to_sentence, class: 'help-inline text-danger') : ''.html_safe
end
def help_for(field)
field.help.present? ? @template.content_tag(:span, field.help, class: 'help-block') : ''.html_safe
end
def field_for(field)
field.read_only? ? @template.content_tag(:div, field.pretty_value, class: 'form-control-static') : field.render
end
def object_infos
model_config = RailsAdmin.config(object)
model_label = model_config.label
object_label = begin
if object.new_record?
I18n.t('admin.form.new_model', name: model_label)
else
object.send(model_config.object_label_method).presence || "#{model_config.label} ##{object.id}"
end
end
%().html_safe
end
def jquery_namespace(field)
%(#{'#modal ' if @template.controller.params[:modal]}##{dom_id(field)}_field)
end
def dom_id(field)
(@dom_id ||= {})[field.name] ||=
[
@object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, '_').sub(/_$/, ''),
options[:index],
field.method_name,
].reject(&:blank?).join('_')
end
def dom_name(field)
(@dom_name ||= {})[field.name] ||= %(#{@object_name}#{options[:index] && "[#{options[:index]}]"}[#{field.method_name}]#{field.is_a?(Config::Fields::Association) && field.multiple? ? '[]' : ''})
end
protected
def generator_action(action, nested)
if nested
action = :nested
elsif @template.request.format == 'text/javascript'
action = :modal
end
action
end
def visible_groups(model_config, action)
model_config.send(action).with(
form: self,
object: @object,
view: @template,
controller: @template.controller,
).visible_groups
end
def without_field_error_proc_added_div
default_field_error_proc = ::ActionView::Base.field_error_proc
begin
::ActionView::Base.field_error_proc = proc { |html_tag, _instance| html_tag }
yield
ensure
::ActionView::Base.field_error_proc = default_field_error_proc
end
end
private
def nested_field_association?(field, nested_in)
field.inverse_of.presence && nested_in.presence && field.inverse_of == nested_in.name &&
(@template.instance_variable_get(:@model_config).abstract_model == field.associated_model_config.abstract_model ||
field.name == nested_in.inverse_of)
end
end
end
rails_admin-0.8.1/app/assets/ 0000755 0001756 0001757 00000000000 12633423745 015136 5 ustar pravi pravi rails_admin-0.8.1/app/assets/stylesheets/ 0000755 0001756 0001757 00000000000 12633423745 017512 5 ustar pravi pravi rails_admin-0.8.1/app/assets/stylesheets/rails_admin/ 0000755 0001756 0001757 00000000000 12633423745 021774 5 ustar pravi pravi rails_admin-0.8.1/app/assets/stylesheets/rails_admin/ra.widgets.scss 0000644 0001756 0001757 00000000224 12633423745 024736 0 ustar pravi pravi iframe.wysihtml5-sandbox{
height: 250px !important;
width: 75% !important;
}
.controls img.preview{
max-height: 200px;
max-width: 300px;
}
rails_admin-0.8.1/app/assets/stylesheets/rails_admin/aristo/ 0000755 0001756 0001757 00000000000 12633423745 023275 5 ustar pravi pravi rails_admin-0.8.1/app/assets/stylesheets/rails_admin/aristo/images/ 0000755 0001756 0001757 00000000000 12633423745 024542 5 ustar pravi pravi rails_admin-0.8.1/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif 0000644 0001756 0001757 00000000756 12633423745 027731 0 ustar pravi pravi GIF87a8 ֖٫ܵ , 8 @pH,Ȥr8ШtJR/cz8| zn~c,
8*\Ȱ"JHŋ3" Ǐ CI(S\ɲ˗@ȜI͛8s@
JhH*]ʴ ; rails_admin-0.8.1/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png 0000644 0001756 0001757 00000000401 12633423745 027452 0 ustar pravi pravi PNG
IHDR d n; PLTEʅˇ͊όяӒؘ֕ڛݞߡĨa 8IDAT8cc@,|FCτg$ φIge> + IENDB` rails_admin-0.8.1/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png 0000644 0001756 0001757 00000005144 12633423745 027572 0 ustar pravi pravi PNG
IHDR jfk
+IDATxĖ{L麶KziVS[Zm+4K5B9fI-xQ.5x/s:AEE)0z_ xAtT8)
9B#;rsK>