Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ndomar/rails_admin
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: Trustious/rails_admin
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Able to merge. These branches can be automatically merged.

Commits on Jul 9, 2013

  1. Updating item merge

    saherneklawy committed Jul 9, 2013
    Copy the full SHA
    b738c4f View commit details
  2. Copy the full SHA
    5b9855b View commit details

Commits on Aug 20, 2013

  1. import_export_v1

    ekoshairy committed Aug 20, 2013
    Copy the full SHA
    7e6f6c6 View commit details

Commits on Aug 22, 2013

  1. admin version 1

    ekoshairy committed Aug 22, 2013
    Copy the full SHA
    084e800 View commit details
  2. admin version 1.1

    ekoshairy committed Aug 22, 2013
    Copy the full SHA
    ade680e View commit details
  3. Copy the full SHA
    5de6253 View commit details

Commits on Aug 25, 2013

  1. Copy the full SHA
    5bd841c View commit details

Commits on Aug 28, 2013

  1. Merge pull request #1 from ekoshairy/master

    Data I/O Admin
    Saher El-Neklawy committed Aug 28, 2013
    Copy the full SHA
    598e1a4 View commit details

Commits on Sep 11, 2013

  1. Fixing bulk export

    ekoshairy committed Sep 11, 2013
    Copy the full SHA
    b5857c9 View commit details
  2. Copy the full SHA
    d656b1f View commit details
  3. Copy the full SHA
    a1ac439 View commit details
  4. Merge pull request #2 from ekoshairy/master

    Rails Admin Bulk Export and Enhanced filtering for Category
    Saher El-Neklawy committed Sep 11, 2013
    Copy the full SHA
    22cdc84 View commit details
  5. Copy the full SHA
    ab45abb View commit details
  6. Merge pull request railsadminteam#3 from ekoshairy/master

    Sorting the category dropdown list
    Saher El-Neklawy committed Sep 11, 2013
    Copy the full SHA
    e142262 View commit details

Commits on Sep 12, 2013

  1. Copy the full SHA
    d9b95a0 View commit details
  2. Copy the full SHA
    42f1c93 View commit details
  3. Copy the full SHA
    f37d80d View commit details
  4. Copy the full SHA
    9b49870 View commit details
  5. Copy the full SHA
    e0d5df8 View commit details

Commits on Dec 26, 2013

  1. Add new action for photopanel in homepage.

    Islam authored and Islam committed Dec 26, 2013
    Copy the full SHA
    905a6ae View commit details
  2. Modify admin system code for the new action.

    Islam authored and Islam committed Dec 26, 2013
    Copy the full SHA
    f40480a View commit details
  3. Add view for the new action.

    Islam authored and Islam committed Dec 26, 2013
    Copy the full SHA
    67661d6 View commit details

Commits on Jan 5, 2014

  1. Merge pull request railsadminteam#4 from islam-al-aarag/master

    Third party photo panel
    Saher El-Neklawy committed Jan 5, 2014
    Copy the full SHA
    4add2e1 View commit details

Commits on Mar 9, 2014

  1. Adding Education Content

    Islam authored and Islam committed Mar 9, 2014
    Copy the full SHA
    1c96670 View commit details

Commits on Mar 11, 2014

  1. Merge pull request railsadminteam#5 from islam-al-aarag/master

    Adding Education Content
    Saher El-Neklawy committed Mar 11, 2014
    Copy the full SHA
    34c4d3e View commit details
1 change: 0 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -72,5 +72,4 @@ group :development, :test do
gem 'devise'
gem 'paperclip', '~> 2.7'
end

gemspec
11 changes: 8 additions & 3 deletions app/controllers/rails_admin/application_controller.rb
Original file line number Diff line number Diff line change
@@ -68,9 +68,14 @@ def _attr_accessible_role
end

rescue_from RailsAdmin::ModelNotFound do
flash[:error] = I18n.t('admin.flash.model_not_found', :model => @model_name)
params[:action] = 'dashboard'
dashboard
if @model_name == 'Photopanel'
params[:action] = 'photopanel'
photopanel
else
flash[:error] = I18n.t('admin.flash.model_not_found', :model => @model_name)
params[:action] = 'dashboard'
dashboard
end
end

def not_found
114 changes: 70 additions & 44 deletions app/controllers/rails_admin/main_controller.rb
Original file line number Diff line number Diff line change
@@ -8,10 +8,8 @@ class MainController < RailsAdmin::ApplicationController
include ActionView::Helpers::TextHelper
include RailsAdmin::MainHelper
include RailsAdmin::ApplicationHelper
include Maintenance::ItemMerger
include Maintenance::Tags


layout :get_layout

before_filter :get_model, :except => RailsAdmin::Config::Actions.all(:root).map(&:action_name)
@@ -44,7 +42,6 @@ def bulk_action
self.send(params[:bulk_action]) if params[:bulk_action].in?(RailsAdmin::Config::Actions.all(:controller => self, :abstract_model => @abstract_model).select(&:bulkable?).map(&:route_fragment))
end


def persist_objects
@filtered_objs = @objects
if params.has_key?(:f)
@@ -61,27 +58,27 @@ def list_entries(is_edit, model_config = @model_config, auth_scope_key = :index,
@entries = get_collection(is_edit, model_config, scope, pagination)
@entries
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
private

def get_layout
"rails_admin/#{request.headers['X-PJAX'] ? 'pjax' : 'application'}"
end

def get_sort_hash(model_config)
abstract_model = model_config.abstract_model
params[:sort] = params[:sort_reverse] = nil unless model_config.list.fields.map {|f| f.name.to_s}.include? params[:sort]
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

params[:sort] ||= model_config.list.sort_by.to_s
params[:sort_reverse] ||= 'false'

field = model_config.list.fields.find{ |f| f.name.to_s == params[:sort] }
def get_sort_hash(model_config)
abstract_model = model_config.abstract_model
params[:sort] = params[:sort_reverse] = nil unless model_config.list.fields.map {|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.find{ |f| f.name.to_s == params[:sort] }

column = if field.nil? || field.sortable == true # use params[:sort] on the base table
"#{abstract_model.table_name}.#{params[:sort]}"
@@ -117,7 +114,7 @@ def redirect_to_on_success
obj = @objects[session["index"]]
@object.resolve true
redirect_to edit_path(:id => obj.id, :return_to => params[:return_to]), :flash => { :success => notice }
elsif params[:_invalid_another]
elsif params[:_invalid_another]
@objects ||= list_entries(true)
obj = @objects[session["index"]]
@object.resolve false
@@ -172,12 +169,12 @@ def check_for_cancel
def get_collection(is_edit, model_config, scope, pagination)
or_filters = Hash.new
if params[:f] != nil
params[:f].each do |param|
puts param[0]
or_filters[param[0]] = param[1] if param[0].start_with? "OR"
params[:f].delete param[0] if param[0].start_with? "OR"
params[:f].each do |param|
puts param[0]
or_filters[param[0]] = param[1] if param[0].start_with? "OR"
params[:f].delete param[0] if param[0].start_with? "OR"
end
end
end
puts or_filters
if params.has_key?(:object_type)
if params[:object_type] != "All"
@@ -241,6 +238,29 @@ def get_collection(is_edit, model_config, scope, pagination)

end
end


if params.has_key?(:category_cache)
if params[:category_cache] != "All"
search_query = Hash.new
search_query[:o] = "is"
search_query[:v] = params[:category_cache]
query_hash = Hash.new
query_hash["94742"] = search_query
if params[:f] != nil
params[:f][:category_cache] = query_hash
else
params[:f] = Hash.new
params[:f][:category_cache] = query_hash
end
else
if params[:f] != nil
params[:f].delete(:category_cache)
end

end
end

puts query_hash
puts params
if params.has_key?(:f)
@@ -272,31 +292,37 @@ def get_collection(is_edit, model_config, scope, pagination)
params[:f].delete(:reason) if params[:f] != nil
params[:f].delete(:status) if params[:f] != nil
# params[:f].merge(:or_filters) if :or_filters.present?
return objects
end
return objects
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?(['create', 'update']) ? params[:current_action] : 'edit'
@association = source_model_config.send(action).fields.find{|f| f.name == params[:associated_collection].to_sym }.with(:controller => self, :object => source_object)
@association.associated_collection_scope
end

def associations_hash
associations = {}
@abstract_model.associations.each do |association|
if [:has_many, :has_and_belongs_to_many].include?(association[:type])
records = Array(@object.send(association[:name]))
associations[association[:name]] = records.collect(&:id)
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?(['create', 'update']) ? params[:current_action] : 'edit'
@association = source_model_config.send(action).fields.find{|f| f.name == params[:associated_collection].to_sym }.with(:controller => self, :object => source_object)
@association.associated_collection_scope
end

def associations_hash
associations = {}
@abstract_model.associations.each do |association|
if [:has_many, :has_and_belongs_to_many].include?(association[:type])
records = Array(@object.send(association[:name]))
associations[association[:name]] = records.collect(&:id)
end
associations
end
associations
end




end
end


102 changes: 1 addition & 101 deletions app/views/rails_admin/main/export.html.haml
Original file line number Diff line number Diff line change
@@ -1,112 +1,12 @@
- 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).visible_fields


- specs = @model_config.export.with(:view => self, :object => @abstract_model.model.new).extract_specs

- specs_fields = @model_config.export.with(:view => self, :object => @abstract_model.model.new).spec_fields specs[0]




= form_tag export_path(params.merge(:all => true)), :method => 'post', :class => 'form-horizontal denser' do

%input{:name => "send_data", :type => "hidden", :value => "true"}/
%fieldset
%legend
%i.icon-chevron-down
= t('admin.export.select')

.control-group
%label.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)
.controls
- visible_fields.select{ |f| !f.spec? }.each do |field|
- list = field.virtual? ? 'methods' : 'only'
- if field.association? && field.association[:polymorphic]
%label.checkbox{: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.find {|p| field.association[:foreign_type] == p[:name] }[:name]
%label.checkbox{:for => "schema_#{list}_#{polymorphic_type_column_name}"}
= check_box_tag "schema[#{list}][]", polymorphic_type_column_name, true, { :id => "schema_#{list}_#{polymorphic_type_column_name}" }
= field.label + " [type]"
- else
%label.checkbox{:for => "schema_#{list}_#{field.name}"}
= check_box_tag "schema[#{list}][]", field.name, true, { :id => "schema_#{list}_#{field.name}" }
= field.label



- specs.each do |spec|
- spec_fields = @model_config.export.with(:view => self, :object => @abstract_model.model.new).spec_fields spec
.control-group
%label.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 => spec)
</br>
</br>
</br>
.controls
- spec_fields.select{ |f| !f.association? || f.association[:polymorphic] }.each do |field|
- list = field.virtual? ? 'methods' : 'only'
- if field.association? && field.association[:polymorphic]
%label.checkbox{: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.find {|p| field.association[:foreign_type] == p[:name] }[:name]
%label.checkbox{:for => "schema_#{list}_#{polymorphic_type_column_name}"}
= check_box_tag "schema[#{list}][]", polymorphic_type_column_name, true, { :id => "schema_#{list}_#{polymorphic_type_column_name}" }
= field.label + " [type]"
- else
%label.checkbox{:for => "schema_#{list}_#{field.name}"}
= check_box_tag "schema[#{list}][]", field.name, true, { :id => "schema_#{list}_#{field.name}" }
= field.label




- visible_fields.select{ |f| f.association? && !f.association[:polymorphic] }.each do |field|
- fields = field.associated_model_config.export.with(:view => self, :object => (associated_model = field.associated_model_config.abstract_model.model).new).new_fields.select{ |f| !f.association? }
.control-group
%label.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)
.controls
- fields.each do |associated_model_field|
- list = associated_model_field.virtual? ? 'methods' : 'only'
%label.checkbox{: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}" }
= associated_model_field.label

%fieldset
%legend
%i.icon-chevron-down
= t('admin.export.options_for', :name => 'csv')
.control-group
- guessed_encoding = (Rails.configuration.database_configuration[Rails.env]['encoding'].presence rescue 'UTF-8') || 'UTF-8'
%label.control-label{:for => "csv_options_encoding_to"}= t('admin.export.csv.encoding_to')
.controls
-# from http://books.google.com/support/partner/bin/answer.py?answer=30990 :
= select_tag 'csv_options[encoding_to]', options_for_select(["", "UTF-8", "UTF-16LE", "UTF-16BE", "UTF-32LE", "UTF-32BE", "UTF-7", "ISO-8859-1", "ISO-8859-15", "IBM-850", "MacRoman", "Windows-1252", "ISO-8859-3", "IBM-852", "ISO-8859-2", "MacCE", "Windows-1250", "IBM-855", "ISO-8859-5", "ISO-IR-111", "KOI8-R", "MacCyrillic", "Windows-1251", "CP-866", "KOI-U", "MacUkranian", "GB2312", "GBK", "GB18030", "HZ", "ISO-2022-CN", "Big5", "Big5-HKSCS", "EUC-TW", "EUC-JP", "ISO-2022-JP", "Shift_JIS", "EUC-KR", "UHC", "JOHAB", "ISO-2022-KR"])
%p.help-block= t('admin.export.csv.encoding_to_help', :name => guessed_encoding)

.control-group
%label.control-label{:for => "csv_options_skip_header"}= t('admin.export.csv.skip_header')
.controls
= check_box_tag 'csv_options[skip_header]', 'true'
%p.help-block= t('admin.export.csv.skip_header_help')

.control-group
%label.control-label{:for => "csv_options_generator_col_sep"}= t('admin.export.csv.col_sep')
.controls
= select_tag 'csv_options[generator][col_sep]', options_for_select({ '' => t('admin.export.csv.default_col_sep'), "<comma> ','" => ',', "<semicolon> ';'" => ';', '<tabs>' => "'\t'" })
%p.help-block= t('admin.export.csv.col_sep_help', :value => t('admin.export.csv.default_col_sep'))

.form-actions
%input{:type => :hidden, :name => 'return_to', :value => (params[:return_to].presence || request.referer)}
Confirm Exporting of Selected Items:
%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")
35 changes: 35 additions & 0 deletions app/views/rails_admin/main/import.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<h1>File Upload</h1>
<%= form_for :upload_file, :url=>{ :action=>"import"}, :html => { :multipart => true } do |f| %>
<table>
<tr>
<td>
<label for="import_file">
Select a CSV File :
</label>
</td>
<td >
<%= f.file_field :file%>
</td>

</tr>
<tr>
<td>
<label for="category">
Select Imported Items Category :
</label>
</td>
<td>
<%= f.select :category, options_for_select(["Category"]+Tag.first_level_categorization_nodes.map(&:tagname).sort) %>

</td>
</tr>
<tr>
<td colspan='2'>
<button class="btn btn-primary" type="submit">

Upload File</button>
</td>
</tr>
</table>
<% end %>

16 changes: 13 additions & 3 deletions app/views/rails_admin/main/index.html.haml
Original file line number Diff line number Diff line change
@@ -136,25 +136,35 @@

.well
%span#filters_box

-if @abstract_model.to_param.to_s.eql? "flag"
="Object Type: "
%select{:name => 'object_type'}
-items.each do |c|
%option{:value=>c, selected: params[:object_type] == c}
=h c
<br/>
<br/><br/>
="Reason: "
%select{:name => 'reason'}
-reasons.each do |c|
%option{:value=>c, selected: params[:reason] == c}
=h c
<br/>
<br/><br/>
="Status: "
%select{:name => 'status'}
-status.each do |c|
%option{:value=>c, selected: params[:status] == c}
=h c
<br/>
<br/><br/>
-if @abstract_model.to_param.to_s.eql? "item"
="Category: "
%select{:name => 'category_cache'}
-Tag.first_level_categorization_nodes.map(&:tagname).sort.each do |c|
%option{:value=>c, selected: params[:category_cache] == c}
=h c
<br/><br/>


%hr.filters_box{:style => "display:#{@ordered_filters.empty? ? 'none' : 'block'}"}
%input.input-small{:name => "query", :type => "search", :value => query, :placeholder => t("admin.misc.filter")}
%button.btn.btn-primary{:type => "submit", :'data-disable-with' => "<i class='icon-white icon-refresh'></i> ".html_safe + t("admin.misc.refresh")}
Loading