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 :files
|
||||
has_many :file_templates
|
||||
|
||||
validates :binary, boolean_presence: true
|
||||
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:
|
||||
internal_user_ids: Mitglieder
|
||||
name: Name
|
||||
file_template:
|
||||
name: "Name"
|
||||
file_type: "Dateityp"
|
||||
content: "Code"
|
||||
models:
|
||||
code_harbor_link:
|
||||
one: CodeHarbor-Link
|
||||
|
@ -93,6 +93,10 @@ en:
|
||||
team:
|
||||
internal_user_ids: Members
|
||||
name: Name
|
||||
file_template:
|
||||
name: "Name"
|
||||
file_type: "File Type"
|
||||
content: "Content"
|
||||
models:
|
||||
code_harbor_link:
|
||||
one: CodeHarbor Link
|
||||
|
@ -1,6 +1,7 @@
|
||||
FILENAME_REGEXP = /[\w\.]+/ unless Kernel.const_defined?(:FILENAME_REGEXP)
|
||||
|
||||
Rails.application.routes.draw do
|
||||
resources :file_templates
|
||||
resources :code_harbor_links
|
||||
resources :request_for_comments
|
||||
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.
|
||||
|
||||
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
|
||||
enable_extension "plpgsql"
|
||||
@ -101,6 +101,14 @@ ActiveRecord::Schema.define(version: 20160512131539) do
|
||||
t.datetime "updated_at"
|
||||
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|
|
||||
t.string "editor_mode"
|
||||
t.string "file_extension"
|
||||
|
Reference in New Issue
Block a user