Add Workshop controller functionality
This commit is contained in:
parent
d43a9bc941
commit
c33e95bdd8
|
@ -0,0 +1,46 @@
|
||||||
|
class WorkshopsController < ApplicationController
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
before_action :assign_lecture, only: [:show, :edit, :update]
|
||||||
|
|
||||||
|
def index
|
||||||
|
@workshops = Workshop.where user: current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@workshop = Workshop.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@workshop = current_user.workshops.build workshop_params
|
||||||
|
|
||||||
|
if @workshop.save
|
||||||
|
redirect_to @workshop
|
||||||
|
else
|
||||||
|
render :new, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @workshop.update workshop_params
|
||||||
|
redirect_to @workshop
|
||||||
|
else
|
||||||
|
render :edit, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def assign_workshop
|
||||||
|
@workshop = Workshop.find params[:id]
|
||||||
|
end
|
||||||
|
|
||||||
|
def workshop_params
|
||||||
|
params.require(:workshop).permit [:title, :subtitle, :length, :language, :abstract, :description, :notes, :track_id]
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,4 +11,5 @@ ul
|
||||||
|
|
||||||
.centered
|
.centered
|
||||||
= link_to 'Предложи лекция', new_lecture_path
|
= link_to 'Предложи лекция', new_lecture_path
|
||||||
button type="button" Предложи уъркшоп
|
|
||||||
|
= link_to 'Предложи уъркшоп', new_workshop_path
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
<%= content_tag :li, class: [('current_page_item' if controller_name == 'lectures')] do %>
|
<%= content_tag :li, class: [('current_page_item' if controller_name == 'lectures')] do %>
|
||||||
<%= link_to "Лекции", lectures_path %>
|
<%= link_to "Лекции", lectures_path %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= content_tag :li, class: [('current_page_item' if controller_name == 'workshops')] do %>
|
||||||
|
<%= link_to "Уъркшопи", workshops_path %>
|
||||||
|
<% end %>
|
||||||
<%= content_tag :li, class: [('current_page_item' if controller_name == 'registrations')] do %>
|
<%= content_tag :li, class: [('current_page_item' if controller_name == 'registrations')] do %>
|
||||||
<%= link_to "Редакция на профил", edit_user_registration_path %>
|
<%= link_to "Редакция на профил", edit_user_registration_path %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
== simple_form_for @workshop do |form|
|
||||||
|
p
|
||||||
|
= form.error_notification
|
||||||
|
|
||||||
|
.form-inputs
|
||||||
|
= form.input :title, autofocus: true
|
||||||
|
= form.input :subtitle
|
||||||
|
= form.association :track
|
||||||
|
= form.input :length, input_html: {value: 60}
|
||||||
|
= form.input :language, collection: I18n.available_locales, include_blank: false, default: I18n.locale
|
||||||
|
= form.input :abstract
|
||||||
|
= form.input :description
|
||||||
|
= form.input :notes
|
||||||
|
= form.button :submit
|
|
@ -0,0 +1,2 @@
|
||||||
|
h1.entry-title Редакция на уъркшоп
|
||||||
|
= render 'form'
|
|
@ -0,0 +1,7 @@
|
||||||
|
h1.entry-title Моите предложения за уъркшопи
|
||||||
|
|
||||||
|
ul
|
||||||
|
- for workshop in @workshops
|
||||||
|
li = link_to workshop.title, workshop
|
||||||
|
|
||||||
|
= link_to 'Предложи уъркшоп', new_workshop_path
|
|
@ -0,0 +1,2 @@
|
||||||
|
h1.entry-title Предложи нов уъркшоп
|
||||||
|
= render 'form'
|
|
@ -0,0 +1,20 @@
|
||||||
|
h1.entry-title Преглед на уъркшоп
|
||||||
|
|
||||||
|
h2.workshop-title
|
||||||
|
= @workshop.title
|
||||||
|
span.subtitle = @workshop.subtitle
|
||||||
|
.entry-meta
|
||||||
|
|
|
||||||
|
поток: „#{@workshop.track.name}“,
|
||||||
|
продължителност: #{@workshop.length} мин.
|
||||||
|
|
||||||
|
section.abstract
|
||||||
|
h3 Резюме
|
||||||
|
= simple_format @workshop.abstract
|
||||||
|
|
||||||
|
section.description
|
||||||
|
h3 Описание
|
||||||
|
= simple_format @workshop.description
|
||||||
|
|
||||||
|
- if current_user == @workshop.user
|
||||||
|
= link_to 'Редактирай', edit_workshop_path(@workshop)
|
|
@ -25,6 +25,9 @@ bg:
|
||||||
lecture:
|
lecture:
|
||||||
one: Лекция
|
one: Лекция
|
||||||
other: Лекции
|
other: Лекции
|
||||||
|
workshop:
|
||||||
|
one: Уъркшоп
|
||||||
|
other: Уъркшопи
|
||||||
track: Поток от лекции
|
track: Поток от лекции
|
||||||
attributes:
|
attributes:
|
||||||
lecture:
|
lecture:
|
||||||
|
@ -36,6 +39,15 @@ bg:
|
||||||
description: Описание
|
description: Описание
|
||||||
notes: Забележки
|
notes: Забележки
|
||||||
track: Поток от лекции
|
track: Поток от лекции
|
||||||
|
workshop:
|
||||||
|
title: Заглавие
|
||||||
|
subtitle: Подзаглавие
|
||||||
|
length: Продължителност
|
||||||
|
language: Език
|
||||||
|
abstract: Резюме
|
||||||
|
description: Описание
|
||||||
|
notes: Забележки
|
||||||
|
track: Поток от лекции
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
improbable_phone: 'не е валиден телефонен номер'
|
improbable_phone: 'не е валиден телефонен номер'
|
|
@ -17,3 +17,12 @@ bg:
|
||||||
abstract: Резюме на лекцията, което да може да бъде прочетено от посетителите
|
abstract: Резюме на лекцията, което да може да бъде прочетено от посетителите
|
||||||
description: Подробно описание на лекцията, което да бъде използвано от организаторския екип
|
description: Подробно описание на лекцията, което да бъде използвано от организаторския екип
|
||||||
notes: Забележки, които искате да споделите с организаторския екип
|
notes: Забележки, които искате да споделите с организаторския екип
|
||||||
|
workshop:
|
||||||
|
title: Заглавието на уъркшопа Ви
|
||||||
|
subtitle: Подзаглавието на уъркшопа Ви (ако има такова)
|
||||||
|
track: Потокът от уъркшопи, в който искате да попадне уъркшопа Ви
|
||||||
|
length: Продължителността на уъркшоп може да бъде от 30 до 120 минути
|
||||||
|
language: Език, на който ще бъде воден уъркшопа
|
||||||
|
abstract: Резюме на уъркшопа, което да може да бъде прочетено от посетителите
|
||||||
|
description: Подробно описание на уъркшопа, което да бъде използвано от организаторския екип
|
||||||
|
notes: Забележки, които искате да споделите с организаторския екип
|
|
@ -1,5 +1,6 @@
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
resources :lectures, only: [:index, :new, :create, :edit, :update, :show]
|
resources :lectures, only: [:index, :new, :create, :edit, :update, :show]
|
||||||
|
resources :workshops, only: [:index, :new, :create, :edit, :update, :show]
|
||||||
|
|
||||||
devise_for :users
|
devise_for :users
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe WorkshopsController, type: :controller do
|
||||||
|
let(:user) { create :user, confirmed_at: Time.now }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in user
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'GET index' do
|
||||||
|
it 'returns HTTP Success status code'
|
||||||
|
it 'assigns the workshops of the current user to @workshops'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'GET new' do
|
||||||
|
it 'returns HTTP Success status code' do
|
||||||
|
get :new
|
||||||
|
expect(response).to be_success
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'assigns a blank workshop to @workshop'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'POST create' do
|
||||||
|
it 'assigns the new workshop to @workshop'
|
||||||
|
|
||||||
|
context 'when passed correct parameters' do
|
||||||
|
it 'creates a new workshop'
|
||||||
|
it 'redirects to the created workshop'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when passed incorrect parameters' do
|
||||||
|
it 'renders the edit template'
|
||||||
|
it 'returns HTTP Unprocessable Entity status code'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'GET edit' do
|
||||||
|
context 'when the workshop exists' do
|
||||||
|
it 'returns http success'
|
||||||
|
it 'assigns the workshop to @workshop'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the workshop does not exist' do
|
||||||
|
it 'returns HTTP Not Found status code'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'PUT update' do
|
||||||
|
context 'when the workshop does not exist' do
|
||||||
|
it 'returns HTTP Not Found status code'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the workshop exists' do
|
||||||
|
it 'assigns the workshop to @workshop'
|
||||||
|
|
||||||
|
context 'when passed correct parameters' do
|
||||||
|
it 'redirects to the updated workshop'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when passed incorrect parameters' do
|
||||||
|
it 'renders the edit template'
|
||||||
|
it 'returns HTTP Unprocessable Entity status code'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'GET show' do
|
||||||
|
context 'when the workshop exists' do
|
||||||
|
it 'returns HTTP Success status code'
|
||||||
|
it 'assigns the workshop to @workshop'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the workshop does not exist' do
|
||||||
|
it 'returns HTTP Not Found status code'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue