Scaffold file templates
This commit is contained in:
3
app/assets/javascripts/file_templates.js.coffee
Normal file
3
app/assets/javascripts/file_templates.js.coffee
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://coffeescript.org/
|
3
app/assets/stylesheets/file_templates.css.scss
Normal file
3
app/assets/stylesheets/file_templates.css.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the FileTemplates controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
86
app/controllers/file_templates_controller.rb
Normal file
86
app/controllers/file_templates_controller.rb
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
class FileTemplatesController < ApplicationController
|
||||||
|
before_action :set_file_template, only: [:show, :edit, :update, :destroy]
|
||||||
|
|
||||||
|
def authorize!
|
||||||
|
authorize(@file_template || @file_templates)
|
||||||
|
end
|
||||||
|
private :authorize!
|
||||||
|
|
||||||
|
# GET /file_templates
|
||||||
|
# GET /file_templates.json
|
||||||
|
def index
|
||||||
|
@file_templates = FileTemplate.all.order(:file_type_id).paginate(page: params[:page])
|
||||||
|
authorize!
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /file_templates/1
|
||||||
|
# GET /file_templates/1.json
|
||||||
|
def show
|
||||||
|
authorize!
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /file_templates/new
|
||||||
|
def new
|
||||||
|
@file_template = FileTemplate.new
|
||||||
|
authorize!
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /file_templates/1/edit
|
||||||
|
def edit
|
||||||
|
authorize!
|
||||||
|
end
|
||||||
|
|
||||||
|
# POST /file_templates
|
||||||
|
# POST /file_templates.json
|
||||||
|
def create
|
||||||
|
@file_template = FileTemplate.new(file_template_params)
|
||||||
|
authorize!
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @file_template.save
|
||||||
|
format.html { redirect_to @file_template, notice: 'File template was successfully created.' }
|
||||||
|
format.json { render :show, status: :created, location: @file_template }
|
||||||
|
else
|
||||||
|
format.html { render :new }
|
||||||
|
format.json { render json: @file_template.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# PATCH/PUT /file_templates/1
|
||||||
|
# PATCH/PUT /file_templates/1.json
|
||||||
|
def update
|
||||||
|
authorize!
|
||||||
|
respond_to do |format|
|
||||||
|
if @file_template.update(file_template_params)
|
||||||
|
format.html { redirect_to @file_template, notice: 'File template was successfully updated.' }
|
||||||
|
format.json { render :show, status: :ok, location: @file_template }
|
||||||
|
else
|
||||||
|
format.html { render :edit }
|
||||||
|
format.json { render json: @file_template.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# DELETE /file_templates/1
|
||||||
|
# DELETE /file_templates/1.json
|
||||||
|
def destroy
|
||||||
|
authorize!
|
||||||
|
@file_template.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to file_templates_url, notice: 'File template was successfully destroyed.' }
|
||||||
|
format.json { head :no_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
# Use callbacks to share common setup or constraints between actions.
|
||||||
|
def set_file_template
|
||||||
|
@file_template = FileTemplate.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
# Never trust parameters from the scary internet, only allow the white list through.
|
||||||
|
def file_template_params
|
||||||
|
params[:file_template].permit(:name, :file_type_id, :content)
|
||||||
|
end
|
||||||
|
end
|
10
app/models/file_template.rb
Normal file
10
app/models/file_template.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
class FileTemplate < ActiveRecord::Base
|
||||||
|
|
||||||
|
belongs_to :file_type
|
||||||
|
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
name
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -12,6 +12,7 @@ class FileType < ActiveRecord::Base
|
|||||||
|
|
||||||
has_many :execution_environments
|
has_many :execution_environments
|
||||||
has_many :files
|
has_many :files
|
||||||
|
has_many :file_templates
|
||||||
|
|
||||||
validates :binary, boolean_presence: true
|
validates :binary, boolean_presence: true
|
||||||
validates :editor_mode, presence: true, unless: :binary?
|
validates :editor_mode, presence: true, unless: :binary?
|
||||||
|
7
app/policies/file_template_policy.rb
Normal file
7
app/policies/file_template_policy.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
class FileTemplatePolicy < AdminOnlyPolicy
|
||||||
|
|
||||||
|
def show?
|
||||||
|
everyone
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
12
app/views/file_templates/_form.html.slim
Normal file
12
app/views/file_templates/_form.html.slim
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
= form_for(@file_template) do |f|
|
||||||
|
= render('shared/form_errors', object: @file_template)
|
||||||
|
.form-group
|
||||||
|
= f.label(:name)
|
||||||
|
= f.text_field(:name, class: 'form-control', required: true)
|
||||||
|
.form-group
|
||||||
|
= f.label(:file_type_id)
|
||||||
|
= f.collection_select(:file_type_id, FileType.all.order(:name), :id, :name, {}, class: 'form-control')
|
||||||
|
.form-group
|
||||||
|
= f.label(:content)
|
||||||
|
= f.text_area(:content, class: 'form-control')
|
||||||
|
.actions = render('shared/submit_button', f: f, object: @file_template)
|
3
app/views/file_templates/edit.html.slim
Normal file
3
app/views/file_templates/edit.html.slim
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
h1 = @file_template
|
||||||
|
|
||||||
|
= render('form')
|
20
app/views/file_templates/index.html.slim
Normal file
20
app/views/file_templates/index.html.slim
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
h1 = FileTemplate.model_name.human(count: 2)
|
||||||
|
|
||||||
|
.table-responsive
|
||||||
|
table.table
|
||||||
|
thead
|
||||||
|
tr
|
||||||
|
th = t('activerecord.attributes.file_template.name')
|
||||||
|
th = t('activerecord.attributes.file_template.file_type')
|
||||||
|
th colspan=3 = t('shared.actions')
|
||||||
|
tbody
|
||||||
|
- @file_templates.each do |file_template|
|
||||||
|
tr
|
||||||
|
td = file_template.name
|
||||||
|
td = link_to(file_template.file_type, file_type_path(file_template.file_type))
|
||||||
|
td = link_to(t('shared.show'), file_template)
|
||||||
|
td = link_to(t('shared.edit'), edit_file_template_path(file_template))
|
||||||
|
td = link_to(t('shared.destroy'), file_template, data: {confirm: t('shared.confirm_destroy')}, method: :delete)
|
||||||
|
|
||||||
|
= render('shared/pagination', collection: @file_templates)
|
||||||
|
p = render('shared/new_button', model: FileTemplate)
|
3
app/views/file_templates/new.html.slim
Normal file
3
app/views/file_templates/new.html.slim
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
h1 = t('shared.new_model', model: FileTemplate.model_name.human)
|
||||||
|
|
||||||
|
= render('form')
|
7
app/views/file_templates/show.html.slim
Normal file
7
app/views/file_templates/show.html.slim
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
h1
|
||||||
|
= @file_template
|
||||||
|
= render('shared/edit_button', object: @file_template)
|
||||||
|
|
||||||
|
= row(label: 'file_template.name', value: @file_template.name)
|
||||||
|
= row(label: 'file_template.file_type', value: link_to(@file_template.file_type, file_type_path(@file_template.file_type)))
|
||||||
|
= row(label: 'file_template.content', value: @file_template.content)
|
@ -93,6 +93,10 @@ de:
|
|||||||
team:
|
team:
|
||||||
internal_user_ids: Mitglieder
|
internal_user_ids: Mitglieder
|
||||||
name: Name
|
name: Name
|
||||||
|
file_template:
|
||||||
|
name: "Name"
|
||||||
|
file_type: "Dateityp"
|
||||||
|
content: "Code"
|
||||||
models:
|
models:
|
||||||
code_harbor_link:
|
code_harbor_link:
|
||||||
one: CodeHarbor-Link
|
one: CodeHarbor-Link
|
||||||
|
@ -93,6 +93,10 @@ en:
|
|||||||
team:
|
team:
|
||||||
internal_user_ids: Members
|
internal_user_ids: Members
|
||||||
name: Name
|
name: Name
|
||||||
|
file_template:
|
||||||
|
name: "Name"
|
||||||
|
file_type: "File Type"
|
||||||
|
content: "Content"
|
||||||
models:
|
models:
|
||||||
code_harbor_link:
|
code_harbor_link:
|
||||||
one: CodeHarbor Link
|
one: CodeHarbor Link
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
FILENAME_REGEXP = /[\w\.]+/ unless Kernel.const_defined?(:FILENAME_REGEXP)
|
FILENAME_REGEXP = /[\w\.]+/ unless Kernel.const_defined?(:FILENAME_REGEXP)
|
||||||
|
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
|
resources :file_templates
|
||||||
resources :code_harbor_links
|
resources :code_harbor_links
|
||||||
resources :request_for_comments
|
resources :request_for_comments
|
||||||
get '/my_request_for_comments', as: 'my_request_for_comments', to: 'request_for_comments#get_my_comment_requests'
|
get '/my_request_for_comments', as: 'my_request_for_comments', to: 'request_for_comments#get_my_comment_requests'
|
||||||
|
10
db/migrate/20160609185708_create_file_templates.rb
Normal file
10
db/migrate/20160609185708_create_file_templates.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
class CreateFileTemplates < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :file_templates do |t|
|
||||||
|
t.string :name
|
||||||
|
t.text :content
|
||||||
|
t.belongs_to :file_type
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
db/schema.rb
10
db/schema.rb
@ -11,7 +11,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20160512131539) do
|
ActiveRecord::Schema.define(version: 20160609185708) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
@ -101,6 +101,14 @@ ActiveRecord::Schema.define(version: 20160512131539) do
|
|||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "file_templates", force: true do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.text "content"
|
||||||
|
t.integer "file_type_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "file_types", force: true do |t|
|
create_table "file_types", force: true do |t|
|
||||||
t.string "editor_mode"
|
t.string "editor_mode"
|
||||||
t.string "file_extension"
|
t.string "file_extension"
|
||||||
|
Reference in New Issue
Block a user