finished markdown transition
This commit is contained in:
parent
f560764292
commit
2a5301f5d5
@ -160,7 +160,37 @@
|
||||
}
|
||||
|
||||
if ($stepInput.length) {
|
||||
CodeMirror.fromTextArea($stepInput[0]);
|
||||
CodeMirror.fromTextArea(
|
||||
$stepInput[0],
|
||||
{
|
||||
mode: {
|
||||
name: 'markdown',
|
||||
strikethrough: true
|
||||
},
|
||||
// config tomfoolery to enable soft tabs
|
||||
extraKeys: {
|
||||
Tab: function(cm) {
|
||||
if (cm.somethingSelected()) {
|
||||
cm.indentSelection("add");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cm.options.indentWithTabs)
|
||||
cm.replaceSelection("\t", "end", "+input");
|
||||
else
|
||||
cm.execCommand("insertSoftTab");
|
||||
},
|
||||
"Shift-Tab": function(cm) {
|
||||
cm.indentSelection("subtract");
|
||||
}
|
||||
},
|
||||
indentUnit: 2,
|
||||
tabSize: 2,
|
||||
indentWithTabs: false,
|
||||
lineWrapping: true,
|
||||
lineNumbers: true
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$tagInput.tagsinput({
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
$(document).on("turbolinks:load", function() {
|
||||
$(".recipe-view ul.ingredients").checkable();
|
||||
$(".recipe-view ol.steps").checkable();
|
||||
$(".recipe-view div.steps ol").checkable();
|
||||
|
||||
var $searchBtn = $("#recipe_index_search_button");
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
@import "typeahead-bootstrap";
|
||||
@import "recipes";
|
||||
@import "star_rating";
|
||||
@import "codemirror_custom";
|
||||
|
||||
// Skin overrides
|
||||
.has-error {
|
||||
|
5
app/assets/stylesheets/codemirror_custom.scss
Normal file
5
app/assets/stylesheets/codemirror_custom.scss
Normal file
@ -0,0 +1,5 @@
|
||||
.CodeMirror {
|
||||
border: 1px solid $gray-light;
|
||||
font-family: inconsolata monospace;
|
||||
font-size: 15px;
|
||||
}
|
@ -87,3 +87,19 @@
|
||||
font-weight: 700;
|
||||
src: local('News Cycle Bold'), local('NewsCycle-Bold'), font_url("news-cycle-bold.woff2") format('woff2');
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inconsolata';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Inconsolata Regular'), local('Inconsolata-Regular'), font_url('inconsolata.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inconsolata';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Inconsolata Bold'), local('Inconsolata-Bold'), font_url('inconsolata-bold.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
|
||||
}
|
@ -30,11 +30,6 @@ div.ingredient-editor {
|
||||
|
||||
}
|
||||
|
||||
div.recipe_editor div.steps {
|
||||
border: 1px solid black ;
|
||||
}
|
||||
|
||||
|
||||
div#ingredient-list {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ class LogsController < ApplicationController
|
||||
|
||||
def set_recipe
|
||||
if params[:recipe_id].present?
|
||||
@recipe = Recipe.includes([{recipe_ingredients: [:ingredient]}, :recipe_steps]).find(params[:recipe_id])
|
||||
@recipe = Recipe.includes([{recipe_ingredients: [:ingredient]}]).find(params[:recipe_id])
|
||||
end
|
||||
end
|
||||
|
||||
@ -77,7 +77,7 @@ class LogsController < ApplicationController
|
||||
end
|
||||
|
||||
def log_params
|
||||
params.require(:log).permit(:date, :rating, :notes, recipe_attributes: [:name, :description, :source, :yields, :total_time, :active_time, recipe_ingredients_attributes: [:name, :ingredient_id, :quantity, :units, :preparation, :sort_order, :id, :_destroy], recipe_steps_attributes: [:step, :sort_order, :id, :_destroy]])
|
||||
params.require(:log).permit(:date, :rating, :notes, recipe_attributes: [:name, :description, :source, :yields, :total_time, :active_time, :step_text, recipe_ingredients_attributes: [:name, :ingredient_id, :quantity, :units, :preparation, :sort_order, :id, :_destroy]])
|
||||
end
|
||||
|
||||
end
|
@ -2,7 +2,6 @@ class Recipe < ApplicationRecord
|
||||
include TokenizedLike
|
||||
|
||||
has_many :recipe_ingredients, -> { order :sort_order }, inverse_of: :recipe, dependent: :destroy
|
||||
has_many :recipe_steps, -> { order :sort_order }, inverse_of: :recipe, dependent: :destroy
|
||||
belongs_to :user
|
||||
|
||||
has_and_belongs_to_many :tags
|
||||
@ -12,7 +11,6 @@ class Recipe < ApplicationRecord
|
||||
scope :active, -> { undeleted.not_log }
|
||||
|
||||
accepts_nested_attributes_for :recipe_ingredients, allow_destroy: true
|
||||
accepts_nested_attributes_for :recipe_steps, allow_destroy: true
|
||||
|
||||
validates :name, presence: true
|
||||
validates :total_time, numericality: true, allow_blank: true
|
||||
@ -92,15 +90,12 @@ class Recipe < ApplicationRecord
|
||||
copy.yields = self.yields
|
||||
copy.total_time = self.total_time
|
||||
copy.active_time = self.active_time
|
||||
copy.step_text = self.step_text
|
||||
|
||||
self.recipe_ingredients.each do |ri|
|
||||
copy.recipe_ingredients << ri.log_copy
|
||||
end
|
||||
|
||||
self.recipe_steps.each do |rs|
|
||||
copy.recipe_steps << rs.log_copy
|
||||
end
|
||||
|
||||
copy
|
||||
end
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
class RecipeStep < ApplicationRecord
|
||||
|
||||
belongs_to :recipe, inverse_of: :recipe_steps
|
||||
|
||||
validates :step, presence: true
|
||||
validates :sort_order, presence: true
|
||||
|
||||
def log_copy
|
||||
copy = RecipeStep.new
|
||||
copy.sort_order = self.sort_order
|
||||
copy.step = self.step
|
||||
|
||||
copy
|
||||
end
|
||||
|
||||
end
|
@ -72,12 +72,8 @@
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Directions</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ol class="steps">
|
||||
<% @recipe.recipe_steps.each do |s| %>
|
||||
<li><div><%= "#{s.step}" %></div></li>
|
||||
<% end %>
|
||||
</ol>
|
||||
<div class="panel-body steps">
|
||||
<%= @recipe.step_text %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -72,7 +72,7 @@
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Directions</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="panel-body steps">
|
||||
<%= @recipe.step_text %>
|
||||
</div>
|
||||
</div>
|
||||
|
28
db/migrate/20170414185039_migrate_steps.rb
Normal file
28
db/migrate/20170414185039_migrate_steps.rb
Normal file
@ -0,0 +1,28 @@
|
||||
class MigrateSteps < ActiveRecord::Migration[5.0]
|
||||
|
||||
class RecipeStub < ActiveRecord::Base
|
||||
self.table_name = 'recipes'
|
||||
end
|
||||
|
||||
class RecipeStepStub < ActiveRecord::Base
|
||||
self.table_name = 'recipe_steps'
|
||||
end
|
||||
|
||||
def up
|
||||
RecipeStub.all.each do |r|
|
||||
text = ''
|
||||
RecipeStepStub.where(recipe_id: r.id).order(:sort_order).each do |s|
|
||||
text << '1. '
|
||||
text << s.step
|
||||
text << "\n"
|
||||
end
|
||||
|
||||
r.step_text = text
|
||||
r.save!
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration, "Can't undo step migration"
|
||||
end
|
||||
end
|
@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20170413173225) do
|
||||
ActiveRecord::Schema.define(version: 20170414185039) do
|
||||
|
||||
create_table "ingredient_units", force: :cascade do |t|
|
||||
t.integer "ingredient_id", null: false
|
||||
|
@ -72,7 +72,7 @@ RSpec.describe NotesController, type: :controller do
|
||||
|
||||
it "redirects to the created note" do
|
||||
post :create, params: {note: valid_attributes}, session: valid_session
|
||||
expect(response).to redirect_to(Note.last)
|
||||
expect(response).to redirect_to notes_path
|
||||
end
|
||||
end
|
||||
|
||||
@ -111,7 +111,7 @@ RSpec.describe NotesController, type: :controller do
|
||||
it "redirects to the note" do
|
||||
note = create(:note, user: user)
|
||||
put :update, params: {id: note.to_param, note: valid_attributes}, session: valid_session
|
||||
expect(response).to redirect_to(note)
|
||||
expect(response).to redirect_to(notes_path)
|
||||
end
|
||||
|
||||
it 'redirects if note is not owned' do
|
||||
|
@ -1,7 +0,0 @@
|
||||
FactoryGirl.define do
|
||||
factory :recipe_step do
|
||||
sort_order 1
|
||||
step "MyText"
|
||||
end
|
||||
|
||||
end
|
@ -1,4 +0,0 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe RecipeStep, type: :model do
|
||||
end
|
BIN
vendor/assets/fonts/inconsolata-bold.woff2
vendored
Normal file
BIN
vendor/assets/fonts/inconsolata-bold.woff2
vendored
Normal file
Binary file not shown.
BIN
vendor/assets/fonts/inconsolata.woff2
vendored
Normal file
BIN
vendor/assets/fonts/inconsolata.woff2
vendored
Normal file
Binary file not shown.
@ -677,5 +677,4 @@ fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus {
|
||||
border-width: 1px 0;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-datepicker3.css.map */
|
||||
}
|
Loading…
Reference in New Issue
Block a user