introduce organizations

This commit is contained in:
shlok007 2017-05-31 18:42:52 +05:30
parent bf54487a19
commit 8edf896d86
21 changed files with 345 additions and 4 deletions

View file

@ -0,0 +1,19 @@
module Admin
class OrganizationsController < Admin::BaseController
load_and_authorize_resource :organization
def index
@organizations = Organization.all
end
def destroy
if @organization.destroy
redirect_to admin_organizations_path,
notice: 'Organization successfully destroyed'
else
redirect_to admin_organizations_path,
error: 'Organization cannot be destroyed'
end
end
end
end

View file

@ -0,0 +1,50 @@
class OrganizationsController < ApplicationController
load_and_authorize_resource :organization
def index
@organizations = Organization.all
end
def create
@organization = Organization.new(organization_params)
if @organization.save
redirect_to organizations_path,
notice: 'Organization successfully created'
else
redirect_to new_organization_path,
error: @organization.errors.full_messages.join(', ')
end
end
def new
@organization = Organization.new
end
def edit; end
def update
if @organization.update_attributes(organization_params)
redirect_to organizations_path,
notice: 'Organization successfully updated'
else
redirect_to edit_organization_path(@organization),
error: @organization.errors.full_messages.join(', ')
end
end
def destroy
if @organization.destroy
redirect_to organizations_path,
notice: 'Organization successfully destroyed'
else
redirect_to organizations_path,
error: 'Organization cannot be destroyed'
end
end
private
def organization_params
params.require(:organization).permit(:name, :description, :picture)
end
end

View file

@ -7,6 +7,8 @@ class Conference < ActiveRecord::Base
default_scope { order('start_date DESC') }
belongs_to :organization
has_paper_trail ignore: %i(updated_at guid revision events_per_week), meta: { conference_id: :id }
has_and_belongs_to_many :questions
@ -53,7 +55,8 @@ class Conference < ActiveRecord::Base
:start_date,
:end_date,
:start_hour,
:end_hour, presence: true
:end_hour,
:organization, presence: true
validates :short_title, uniqueness: true
validates :short_title, format: { with: /\A[a-zA-Z0-9_-]*\z/ }

View file

@ -0,0 +1,7 @@
class Organization < ActiveRecord::Base
has_many :conferences, dependent: :destroy
validates :name, presence: true
mount_uploader :picture, PictureUploader, mount_on: :picture
end

View file

@ -0,0 +1,13 @@
= semantic_form_for(@organization) do |f|
= f.inputs name: 'Organization details' do
= f.input :name, as: :string, required: true
= f.input :description, input_html: { rows: 5 }, placeholder: 'Decribe about your organization..'
= image_tag f.object.picture.thumb.url if f.object.picture?
- if @organization.picture
= image_tag(@organization.picture.thumb.url, width: '20%')
= f.input :picture
%p.text-right
- if @organization.new_record?
= f.submit 'Create Organization', class: 'btn btn-success'
- else
= f.submit 'Update Organization', class: 'btn btn-success'

View file

@ -0,0 +1,31 @@
.row
.col-md-12
.page-header
%h1 Organizations
.btn-group.pull-right
= link_to 'Add Organization', new_admin_organization_path, class: 'btn btn-success pull-right'
%p.text-muted
Manage organizations in OSEM
.row
.col-md-12
%table.table.table-hover.datatable
%thead
%th Name
%th Upcoming Conferences
%th Past Conferences
%th Actions
%tbody
- @organizations.each do |organization|
%tr
%td
= organization.name
%td
= organization.conferences.count
%td
= organization.conferences.count
%td
.btn-group
= link_to 'Edit', edit_organization_path(organization),
method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_organization_path(organization),
method: :delete, class: 'btn btn-danger'

View file

@ -32,3 +32,7 @@
= link_to(admin_revision_history_path) do
%span.fa.fa-history
Revision History
%li
= link_to(admin_organizations_path) do
%span.fa.fa-group
Organizations

View file

@ -49,3 +49,7 @@
= link_to(admin_revision_history_path) do
%span.fa.fa-history
Revision History
%li
= link_to(admin_organizations_path) do
%span.fa.fa-group
Organizations

View file

@ -0,0 +1,13 @@
= semantic_form_for(@organization) do |f|
= f.inputs name: 'Organization details' do
= f.input :name, as: :string, required: true
= f.input :description, input_html: { rows: 5 }, placeholder: 'Decribe about your organization..'
= image_tag f.object.picture.thumb.url if f.object.picture?
- if @organization.picture
= image_tag(@organization.picture.thumb.url, width: '20%')
= f.input :picture
%p.text-right
- if @organization.new_record?
= f.submit 'Create Organization', class: 'btn btn-success'
- else
= f.submit 'Update Organization', class: 'btn btn-success'

View file

@ -0,0 +1,4 @@
.container
.row
.col-md-12
= render 'form'

View file

@ -0,0 +1,17 @@
.container
.row
.col-md-12.page-header
%h1
Organizations
.btn-group.pull-right
= link_to 'Add new', new_organization_path, class: 'btn btn-mini btn-success'
- @organizations.each do |organization|
.col-md-4
.thumbnail
= image_tag(organization.picture.thumb.url, width: '20%')
.caption
%h4
= organization.name
%button.btn.btn-success Conferences
= link_to 'Edit', edit_organization_path(organization), class: 'btn btn-mini btn-default'

View file

@ -0,0 +1,4 @@
.container
.row
.col-md-12
= render 'form'