diff --git a/.gitignore b/.gitignore index 960fdd4..ee170d8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ # Ignore all logfiles, tempfiles, public assets, /log/*.log /tmp +public/system/* public/assets/* public/apidocs/* diff --git a/Gemfile b/Gemfile index 41541aa..9947167 100644 --- a/Gemfile +++ b/Gemfile @@ -80,6 +80,10 @@ gem 'turbolinks' #implementation of forms gem 'activeadmin', github: 'activeadmin' +# +# LOGO UPLOAD +# +gem 'dragonfly' # # EXPORTING PLANS diff --git a/Gemfile.lock b/Gemfile.lock index b4c911a..afb8242 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -116,6 +116,10 @@ devise_invitable (1.7.0) actionmailer (>= 4.0.0) devise (>= 4.0.0) + dragonfly (1.0.12) + addressable (~> 2.3) + multi_json (~> 1.0) + rack (>= 1.3.0) email_validator (1.6.0) activemodel erubis (2.7.0) @@ -343,6 +347,7 @@ contact_us (>= 1.2.0) devise devise_invitable + dragonfly email_validator exception_notification feedjira diff --git a/app/controllers/organisations_controller.rb b/app/controllers/organisations_controller.rb index 45121e5..7caca1c 100644 --- a/app/controllers/organisations_controller.rb +++ b/app/controllers/organisations_controller.rb @@ -25,7 +25,7 @@ # POST /organisations.json def create @organisation = Organisation.new(params[:organisation]) - + @organisation.logo = param[:organisation][:logo] respond_to do |format| if @organisation.save format.html { redirect_to @organisation, notice: I18n.t("admin.org_created_message") } @@ -71,14 +71,17 @@ if user_signed_in? && current_user.is_org_admin? then @organisation = Organisation.find(params[:id]) @organisation.banner_text = params["org_banner_text"] - + @organisation.logo = params[:organisation][:logo] if params[:organisation][:logo] + assign_params = params[:organisation].dup + assign_params.delete(:logo) respond_to do |format| - if @organisation.update_attributes(params[:organisation]) + if @organisation.update_attributes(assign_params) format.html { redirect_to admin_show_organisation_path(params[:id]), notice: I18n.t("admin.org_updated_message") } format.json { head :no_content } else - format.html { render action: "edit" } + flash[:alert] = I18n.t("org_admin.org_logo_failed_message") + format.html { render action: "admin_edit" } format.json { render json: @organisation.errors, status: :unprocessable_entity } end end diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 1da4a0b..eaed3ba 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -1,20 +1,23 @@ class Organisation < ActiveRecord::Base include GlobalHelpers - #associations between tables - belongs_to :organisation_type - has_many :guidance_groups - has_many :dmptemplates - has_many :sections - has_many :users, through: :user_org_roles - has_many :option_warnings - has_many :suggested_answers - has_and_belongs_to_many :token_permission_types, join_table: "org_token_permissions" - has_many :user_org_roles + extend Dragonfly::Model::Validations - belongs_to :parent, :class_name => 'Organisation' + #associations between tables + belongs_to :organisation_type + has_many :guidance_groups + has_many :dmptemplates + has_many :sections + has_many :users, through: :user_org_roles + has_many :option_warnings + has_many :suggested_answers + has_and_belongs_to_many :token_permission_types, join_table: "org_token_permissions" - has_one :language + has_many :user_org_roles + + belongs_to :parent, :class_name => 'Organisation' + + has_one :language has_many :children, :class_name => 'Organisation', :foreign_key => 'parent_id' @@ -22,11 +25,20 @@ accepts_nested_attributes_for :dmptemplates accepts_nested_attributes_for :token_permission_types - attr_accessible :abbreviation, :banner_text, :description, :domain, - :logo_file_name, :name, :stylesheet_file_id, :target_url, + attr_accessible :abbreviation, :banner_text, :logo, :remove_logo, :description, :domain, + :logo_file_name, :name, :stylesheet_file_id, :target_url, :organisation_type_id, :wayfless_entity, :parent_id, :sort_name, :token_permission_type_ids, :language_id + # allow validations for logo upload + dragonfly_accessor :logo + validates_property :height, of: :logo, in: (0..100) + validates_property :format, of: :logo, in: ['jpeg', 'png', 'gif','jpg','bmp'] + validates_size_of :logo, maximum: 500.kilobytes + + def to_s + name + end ## # returns the name of the organisation diff --git a/app/views/layouts/_dmponline_header.html.erb b/app/views/layouts/_dmponline_header.html.erb index b02f3dd..b80c58b 100644 --- a/app/views/layouts/_dmponline_header.html.erb +++ b/app/views/layouts/_dmponline_header.html.erb @@ -1,23 +1,27 @@ - - -
| <%= t('org_admin.org_name') %> | -<%= f.text_field :name, - :as => :string, - :class => 'text_field has-tooltip', 'data-toggle' => "tooltip", 'title' => t('org_admin.name_help_text') %> | -
| <%= t('org_admin.org_abbr') %> | -
-
- <%= f.text_field :abbreviation,
- :as => :string,
- :class => 'text_field' %>
-
-
- <%= link_to(image_tag('help_button.png'), '#', :class => 'org_abbr_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.templates.desc_help_text_html')) %>
-
-
- |
-
-
| <%= t('org_admin.org_desc') %> | -<%= f.text_area :description, { - :rows => 5, - :class => 'text_area has-tooltip', 'data-toggle' => "tooltip", 'data-html' => "true", 'title' => t('org_admin.desc_help_text_html')} %> | -
| <%= t('org_admin.org_banner_text') %> | -- <%= text_area_tag("org_banner_text", @organisation.banner_text, class: "tinymce") %> - | -
| <%= t('org_admin.org_target_url') %> | -<%= f.text_field :target_url, - :as => :string, - :class => 'text_field has-tooltip', 'data-toggle' => "tooltip", 'title' => t('org_admin.target_url_help_text') %> | -
| <%= t('org_admin.org_default_language') %> | -
-
- <%= collection_select(:@organisation,
- :language_id, Language.all.order("name"),
- :id, :name, {selected: Language.where(default_language: true).first.id},
- {:class => "typeahead org_sign_up"}) %>
-
-
- <%= link_to(image_tag('help_button.png'), '#', :class => 'org_abbr_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.org_default_language_help_text')) %>
-
-
- |
-
-
| <%= t('org_admin.org_type') %> | -<%= @organisation.organisation_type.name %> | -
| <%= t('org_admin.org_name') %> | +<%= f.text_field :name, + :as => :string, + :class => 'text_field has-tooltip', 'data-toggle' => "tooltip", 'title' => t('org_admin.name_help_text') %> | +
| <%= t('org_admin.org_abbr') %> | +
+ <%= f.text_field :abbreviation,
+ :as => :string,
+ :class => 'text_field' %>
+
+
+ <%= link_to( image_tag('help_button.png'), '#', :class => 'org_abbr_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.templates.desc_help_text_html'))%>
+
+
+ |
+
+
| <%= t('org_admin.org_logo') %> | +<%= image_tag @organisation.logo.url %> | +
| + | <%= f.check_box :remove_logo %> <%= t('org_admin.remove_logo') %> | +
| <%= t('org_admin.new_org_logo') %> | +<%= f.file_field :logo %> | +
| <%= t('org_admin.org_desc') %> | +<%= f.text_area :description, { + :rows => 5, + :class => 'text_area has-tooltip', 'data-toggle' => "tooltip", 'data-html' => "true", 'title'=> t('org_admin.desc_help_text_html')} %> | +
| <%= t('org_admin.org_banner_text') %> | ++ <%= text_area_tag("org_banner_text", @organisation.banner_text, class: "tinymce") %> + | +
| <%= t('org_admin.org_target_url') %> | +<%= f.text_field :target_url, + :as => :string, + :class => 'text_field has-tooltip', 'data-toggle' => "tooltip", 'title' => t('org_admin.target_url_help_text') %> | +
| <%= t('org_admin.org_type') %> | +<%= @organisation.organisation_type.name %> | +
| <%= t('org_admin.org_name') %> | -<%= @organisation.name %> | -
| <%= t('org_admin.org_abbr') %> | -<%= @organisation.abbreviation %> | -
| <%= t('org_admin.org_desc') %> | -<%= raw @organisation.description %> | -
| <%= t('org_admin.org_banner_text') %> | -<%= raw @organisation.banner_text %> | -
| <%= t('org_admin.org_target_url') %> | -<%= @organisation.target_url %> | -
| <%= t('org_admin.org_type') %> | -<%= @organisation.organisation_type.name %> | -
| <%= t('org_admin.parent_org') %> | -<%= @organisation.parent.name %> | -
| <%= t('org_admin.last_updated') %> | -<%= l @organisation.updated_at.to_date, :formats => :short %> | -
| <%= t('org_admin.org_name') %> | +<%= @organisation.name %> | +
| <%= t('org_admin.org_abbr') %> | +<%= @organisation.abbreviation %> | +
| <%= t('org_admin.org_logo') %> | +<%= image_tag @organisation.logo.thumb('100x100%').url %> | +
| <%= t('org_admin.org_desc') %> | +<%= raw @organisation.description %> | +
| <%= t('org_admin.org_banner_text') %> | +<%= raw @organisation.banner_text %> | +
| <%= t('org_admin.org_target_url') %> | +<%= @organisation.target_url %> | +
| <%= t('org_admin.org_type') %> | +<%= @organisation.organisation_type.name %> | +
| <%= t('org_admin.parent_org') %> | +<%= @organisation.parent.name %> | +
| <%= t('org_admin.last_updated') %> | +<%= l @organisation.updated_at.to_date, :formats => :short %> | +