Updated form to be able to submit all recipe data

This commit is contained in:
Beth Parker 2022-02-12 18:36:39 -06:00
parent 1d81ab8957
commit f6679194eb
5 changed files with 197 additions and 29 deletions

View file

@ -29,11 +29,69 @@ class RecipeController extends Controller
$lists['measurements']=array_values(RecipeIngredient::get()->sortby('measurement')->pluck('measurement')->unique()->toArray()); $lists['measurements']=array_values(RecipeIngredient::get()->sortby('measurement')->pluck('measurement')->unique()->toArray());
$lists['categories']=array_values(RecipeCategory::get()->sortby('name')->pluck('name')->unique()->toArray()); $lists['categories']=array_values(RecipeCategory::get()->sortby('name')->pluck('name')->unique()->toArray());
$lists['authors']=array_values(Recipe::get()->sortby('author')->pluck('author')->unique()->toArray()); $lists['authors']=array_values(Recipe::get()->sortby('author')->pluck('author')->unique()->toArray());
$lists['owners']=array_values(User::get()->sortby('name')->pluck('name')->unique()->toArray()); $lists['owners']=User::select('id','name')->get()->sortby('name');
return view('recipes.edit')->with('recipe', $recipe)->with('lists',$lists); return view('recipes.edit')->with('recipe', $recipe)->with('lists',$lists);
} }
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
$recipe = Recipe::with('ingredients')->with('categories')->findOrFail($id);
return $recipe;
$this->validate($request, [
]);
return $request;
//Find and update FormYear and Forms after validating
$formyear = FormYear::with('forms')->findOrFail($id);
$this->validate($request, [
'year'=>'required|max:120',
'postcard_notice'=>'max:5000',
'show_date'=>'required|date_format:"m/d/Y"|before:hide_date',
'hide_date'=>'required|date_format:"m/d/Y"'
]);
//break forms into array for validation
$forms = array();
foreach($request->all() as $element => $value){
if(preg_match('/forms_.*/', $element)){
$explosion = explode('_',$element);
$forms[$explosion[1]][$explosion[2]]=$value;
}
}
foreach($forms as $form){
$newreq = new Request($form);
$this->validate($newreq, [
'filename'=>'required|max:500',
'title'=>'required|max:120',
'description'=>'required|max:5000',
]);
}
if($request->get('postcard_notice') == null){
$request->merge(['postcard_notice'=>'']);
}
$update = $request->only('year','postcard_notice','show_date','hide_date');
$formyear->fill($update)->save();
//Delete forms that don't exist in new forms array
foreach($formyear->forms as $form){
if(!array_key_exists($form->id,$forms)){
$form->delete();
}
}
foreach($forms as $formid => $form){
//Add form_year_id
$form["form_year_id"]=$id;
$newreq = new Request($form);
//Find form if exists, create if it doesn't
$currentform = Form::where('id','=',$formid)->first();
if($currentform === null){
$form = Form::create($newreq->only('form_year_id','filename','title','description'));
}else{
$update = $newreq->only('filename','title','description');
$currentform->fill($update)->save();
}
}
return redirect()->route('forms.index')->with('message','FormYear successfully edited.');
} }
} }

View file

@ -13,5 +13,6 @@ class VerifyCsrfToken extends Middleware
*/ */
protected $except = [ protected $except = [
// //
'*'
]; ];
} }

View file

@ -8,7 +8,7 @@ use Carbon\Carbon;
class Recipe extends Model class Recipe extends Model
{ {
protected $fillable = ['name','maintainer','author','servings','date_entered','date_modified','description','instructions']; protected $fillable = ['name','maintainer','author','servings','serving_size','date_entered','date_modified','description','instructions'];
protected $dates = ['date_entered','date_modified']; protected $dates = ['date_entered','date_modified'];
public function setDateEnteredAttribute($value){ public function setDateEnteredAttribute($value){

View file

@ -22,7 +22,7 @@ class RecipeSeeder extends Seeder
$recipe=Recipe::updateOrCreate(['name'=>'Test','user_id'=>$first_user['id'],'author'=>'Jayne','servings'=>1,'serving_size'=>'1 cup','date_entered'=>now(),'date_modified'=>now(),'description'=>'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Varius quam quisque id diam vel.','instructions'=>'<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet volutpat consequat mauris. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Dignissim diam quis enim lobortis scelerisque fermentum dui faucibus. Rutrum quisque non tellus orci ac auctor augue mauris. Id venenatis a condimentum vitae sapien. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Sed libero enim sed faucibus turpis. Commodo viverra maecenas accumsan lacus vel facilisis volutpat est velit. Quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum. Volutpat odio facilisis mauris sit amet massa vitae tortor. Morbi enim nunc faucibus a pellentesque. Hendrerit gravida rutrum quisque non tellus orci ac auctor. Amet est placerat in egestas erat imperdiet. Eget nunc scelerisque viverra mauris in aliquam sem fringilla. Massa enim nec dui nunc mattis enim ut.</p><p>Ultricies tristique nulla aliquet enim tortor at auctor urna. A arcu cursus vitae congue mauris rhoncus aenean vel. Vel facilisis volutpat est velit egestas. Sed viverra ipsum nunc aliquet bibendum enim facilisis gravida. Dolor sit amet consectetur adipiscing elit duis. Non pulvinar neque laoreet suspendisse interdum consectetur libero id. Aenean et tortor at risus viverra adipiscing at. Morbi leo urna molestie at elementum eu facilisis sed odio. Non enim praesent elementum facilisis leo vel fringilla est. Ultrices dui sapien eget mi proin sed libero enim. Fames ac turpis egestas sed tempus urna. Id cursus metus aliquam eleifend.</p>']); $recipe=Recipe::updateOrCreate(['name'=>'Test','user_id'=>$first_user['id'],'author'=>'Jayne','servings'=>1,'serving_size'=>'1 cup','date_entered'=>now(),'date_modified'=>now(),'description'=>'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Varius quam quisque id diam vel.','instructions'=>'<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet volutpat consequat mauris. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Dignissim diam quis enim lobortis scelerisque fermentum dui faucibus. Rutrum quisque non tellus orci ac auctor augue mauris. Id venenatis a condimentum vitae sapien. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Sed libero enim sed faucibus turpis. Commodo viverra maecenas accumsan lacus vel facilisis volutpat est velit. Quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum. Volutpat odio facilisis mauris sit amet massa vitae tortor. Morbi enim nunc faucibus a pellentesque. Hendrerit gravida rutrum quisque non tellus orci ac auctor. Amet est placerat in egestas erat imperdiet. Eget nunc scelerisque viverra mauris in aliquam sem fringilla. Massa enim nec dui nunc mattis enim ut.</p><p>Ultricies tristique nulla aliquet enim tortor at auctor urna. A arcu cursus vitae congue mauris rhoncus aenean vel. Vel facilisis volutpat est velit egestas. Sed viverra ipsum nunc aliquet bibendum enim facilisis gravida. Dolor sit amet consectetur adipiscing elit duis. Non pulvinar neque laoreet suspendisse interdum consectetur libero id. Aenean et tortor at risus viverra adipiscing at. Morbi leo urna molestie at elementum eu facilisis sed odio. Non enim praesent elementum facilisis leo vel fringilla est. Ultrices dui sapien eget mi proin sed libero enim. Fames ac turpis egestas sed tempus urna. Id cursus metus aliquam eleifend.</p>']);
RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'hamburger','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']); RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'hamburger','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']);
RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>true,'name'=>'sausage','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']); RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>true,'name'=>'sausage','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']);
RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'carrot','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']); RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'carrot','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'(optional)']);
RecipeCategory::updateOrCreate(['recipe_id'=>$recipe['id'],'name'=>'breakfast']); RecipeCategory::updateOrCreate(['recipe_id'=>$recipe['id'],'name'=>'breakfast']);
@ -42,7 +42,7 @@ class RecipeSeeder extends Seeder
$recipe=Recipe::updateOrCreate(['name'=>'Test3','user_id'=>$jayne['id'],'author'=>'Jayne','servings'=>1,'serving_size'=>'1 cup','date_entered'=>now(),'date_modified'=>now(),'description'=>'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Varius quam quisque id diam vel.','instructions'=>'<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet volutpat consequat mauris. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Dignissim diam quis enim lobortis scelerisque fermentum dui faucibus. Rutrum quisque non tellus orci ac auctor augue mauris. Id venenatis a condimentum vitae sapien. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Sed libero enim sed faucibus turpis. Commodo viverra maecenas accumsan lacus vel facilisis volutpat est velit. Quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum. Volutpat odio facilisis mauris sit amet massa vitae tortor. Morbi enim nunc faucibus a pellentesque. Hendrerit gravida rutrum quisque non tellus orci ac auctor. Amet est placerat in egestas erat imperdiet. Eget nunc scelerisque viverra mauris in aliquam sem fringilla. Massa enim nec dui nunc mattis enim ut.</p><p>Ultricies tristique nulla aliquet enim tortor at auctor urna. A arcu cursus vitae congue mauris rhoncus aenean vel. Vel facilisis volutpat est velit egestas. Sed viverra ipsum nunc aliquet bibendum enim facilisis gravida. Dolor sit amet consectetur adipiscing elit duis. Non pulvinar neque laoreet suspendisse interdum consectetur libero id. Aenean et tortor at risus viverra adipiscing at. Morbi leo urna molestie at elementum eu facilisis sed odio. Non enim praesent elementum facilisis leo vel fringilla est. Ultrices dui sapien eget mi proin sed libero enim. Fames ac turpis egestas sed tempus urna. Id cursus metus aliquam eleifend.</p>']); $recipe=Recipe::updateOrCreate(['name'=>'Test3','user_id'=>$jayne['id'],'author'=>'Jayne','servings'=>1,'serving_size'=>'1 cup','date_entered'=>now(),'date_modified'=>now(),'description'=>'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Varius quam quisque id diam vel.','instructions'=>'<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet volutpat consequat mauris. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Dignissim diam quis enim lobortis scelerisque fermentum dui faucibus. Rutrum quisque non tellus orci ac auctor augue mauris. Id venenatis a condimentum vitae sapien. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Sed libero enim sed faucibus turpis. Commodo viverra maecenas accumsan lacus vel facilisis volutpat est velit. Quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum. Volutpat odio facilisis mauris sit amet massa vitae tortor. Morbi enim nunc faucibus a pellentesque. Hendrerit gravida rutrum quisque non tellus orci ac auctor. Amet est placerat in egestas erat imperdiet. Eget nunc scelerisque viverra mauris in aliquam sem fringilla. Massa enim nec dui nunc mattis enim ut.</p><p>Ultricies tristique nulla aliquet enim tortor at auctor urna. A arcu cursus vitae congue mauris rhoncus aenean vel. Vel facilisis volutpat est velit egestas. Sed viverra ipsum nunc aliquet bibendum enim facilisis gravida. Dolor sit amet consectetur adipiscing elit duis. Non pulvinar neque laoreet suspendisse interdum consectetur libero id. Aenean et tortor at risus viverra adipiscing at. Morbi leo urna molestie at elementum eu facilisis sed odio. Non enim praesent elementum facilisis leo vel fringilla est. Ultrices dui sapien eget mi proin sed libero enim. Fames ac turpis egestas sed tempus urna. Id cursus metus aliquam eleifend.</p>']);
RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'chicken','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']); RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'chicken','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']);
RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'carrot','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'']); RecipeIngredient::updateOrCreate(['recipe_id'=>$recipe['id'],'order'=>0,'alternative'=>false,'name'=>'carrot','quantity'=>1.0,'measurement'=>'lb','special_notes'=>'(Optional)']);
RecipeCategory::updateOrCreate(['recipe_id'=>$recipe['id'],'name'=>'entree']); RecipeCategory::updateOrCreate(['recipe_id'=>$recipe['id'],'name'=>'entree']);
RecipeCategory::updateOrCreate(['recipe_id'=>$recipe['id'],'name'=>'mexican']); RecipeCategory::updateOrCreate(['recipe_id'=>$recipe['id'],'name'=>'mexican']);

View file

@ -6,7 +6,7 @@
@section('content') @section('content')
<div class="panel-body"> <div class="panel-body">
{{ Form::model($recipe, array('route' => array('recipes.update', $recipe->id), 'method' => 'PUT')) }} {{ Form::model($recipe, array('route' => array('recipes.update', $recipe->id), 'method' => 'PUT', 'id' => 'recipeForm')) }}
<div class="row"> <div class="row">
<div class="form-group col-md-3 text-center"> <div class="form-group col-md-3 text-center">
{{ Form::label('author', 'Created By:') }} {{ Form::label('author', 'Created By:') }}
@ -14,7 +14,11 @@
</div> </div>
<div class="col-md-3 text-center"> <div class="col-md-3 text-center">
{{ Form::label('user', 'Maintained By:') }} {{ Form::label('user', 'Maintained By:') }}
{{ Form::select($recipe->user->name, $lists['owners'], array('class' => 'form-control')) }} <select name="owner" class="form-control" id="owner">
@foreach($lists['owners'] as $user)
<option value="{{ $user->id}}" {{ $recipe->user->id == $user->id ? 'selected' : '' }}> {{ $user->name }}</option>
@endforeach
</select>
</div> </div>
<div class="col-md-3 text-center">Entered On: {{$recipe->date_entered->format('Y/m/d') }}</div> <div class="col-md-3 text-center">Entered On: {{$recipe->date_entered->format('Y/m/d') }}</div>
@ -23,15 +27,19 @@
<div class="row"> <div class="row">
<div class="col-sm-offset-3 col-sm-3 text-center"> <div class="col-sm-offset-3 col-sm-3 text-center">
{{ Form::label('servings', 'Servings:') }} {{ Form::label('servings', 'Servings:') }}
{{ Form::text('servings', null, array('class' => 'form-control')) }} {{ Form::text('servings', null, array('class' => 'form-control','id' => 'servings')) }}
</div>
<div class="col-sm-3 text-center">
{{ Form::label('servings', 'Serving Size:') }}
{{ Form::text('serving_size', null, array('class' => 'form-control','id' => 'serving_size')) }}
</div> </div>
<div class="col-sm-3 text-center">Serving Size: {{$recipe->serving_size}}</div>
</div> </div>
<br /> <br />
<div class="row"><div class="panel-heading"><h1>Categories</h1></div></div> <div class="row"><div class="panel-heading"><h1>Categories</h1></div></div>
<div id="categories" class="row text-center"> <div id="categories" class="row text-center">
@foreach ($recipe->categories as $index => $category) @foreach ($recipe->categories as $index => $category)
{{ Form::button(ucwords($category->name), array('class' => 'btn form-control category','style'=>'width:100px;margin-left:10px;margin-bottom:10px;'))}} {{ Form::hidden('category_'.$index.'_name', $category->name, array('class' => 'form-control category_name')) }}
{{ Form::button(ucwords($category->name), array('class' => 'btn form-control category_button','style'=>'width:100px;margin-left:10px;margin-bottom:10px;'))}}
@endforeach @endforeach
</div> </div>
<div class='row text-center'> <div class='row text-center'>
@ -44,35 +52,43 @@
<br /> <br />
<div class="row"><div class="panel-heading"><h1>Ingredients</h1></div></div> <div class="row"><div class="panel-heading"><h1>Ingredients</h1></div></div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped" id="ingredientTable">
<thead> <thead>
<tr> <tr>
<th class='col-sm-1'>Order</th>
<th class='col-sm-2'>Alternative?</th> <th class='col-sm-2'>Alternative?</th>
<th class='col-sm-1'>Quantity</th> <th class='col-sm-1'>Quantity</th>
<th class='col-sm-2'>Measurement</th> <th class='col-sm-2'>Measurement</th>
<th class='col-sm-5'>Name&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</th> <th class='col-sm-5'>Name&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</th>
<th class='col-sm-5'>Notes</th>
<th class='col-sm-2'></th> <th class='col-sm-2'></th>
</tr> </tr>
</thead> </thead>
@foreach ($recipe->ingredients as $index => $ingredient) @foreach ($recipe->ingredients as $index => $ingredient)
<tr> <tr class="recipeIngredient">
<td>{{Form::hidden("ingredient_".$index."_order",$ingredient->order,array('class' => 'form-control ingredientOrder'))}}</td>
<td> <td>
@if($index != 0) @if($index == 0)
{{Form::checkbox($ingredient->alternative,null,$ingredient->alternative,array('class' => 'form-control ingredientAlternative'))}} {{Form::checkbox("ingredient_".$index."_alternative",null,$ingredient->alternative,array('class' => 'form-control ingredientAlternative','disabled'))}}
@else
{{Form::checkbox("ingredient_".$index."_alternative",null,$ingredient->alternative,array('class' => 'form-control ingredientAlternative'))}}
@endif @endif
</td> </td>
<td>{{Form::text($ingredient->quantity,$ingredient->quantity,array('class' => 'form-control ingredientQuantity'))}}</td> <td>{{Form::text("ingredient_".$index."_quantity",$ingredient->quantity,array('class' => 'form-control ingredientQuantity'))}}</td>
<td>{{Form::text($ingredient->measurement,$ingredient->measurement,array('class' => 'form-control ingredientMeasurement'))}}</td> <td>{{Form::text("ingredient_".$index."_measurement",$ingredient->measurement,array('class' => 'form-control ingredientMeasurement'))}}</td>
<td>{{Form::text($ingredient->name,$ingredient->name,array('class' => 'form-control ingredientName'))}}</td> <td>{{Form::text("ingredient_".$index."_name",$ingredient->name,array('class' => 'form-control ingredientName'))}}</td>
<td>{{Form::text("ingredient_".$index."_notes",$ingredient->special_notes,array('class' => 'form-control ingredientNotes'))}}</td>
<td>{{Form::button("Remove",array('class' => 'form-control ingredientRemove'))}}</td> <td>{{Form::button("Remove",array('class' => 'form-control ingredientRemove'))}}</td>
</tr> </tr>
@endforeach @endforeach
<tr id="blankRow"><td colspan='5'></td></tr> <tr id="blankRow"><td colspan='7'></td></tr>
<tr id="addRow"> <tr id="addRow">
<td></td>
<td>{{Form::checkbox($ingredient->alternative,null,false,array('class' => 'form-control ingredientAlternative','id'=>'addIngredientAlternative'))}}</td> <td>{{Form::checkbox($ingredient->alternative,null,false,array('class' => 'form-control ingredientAlternative','id'=>'addIngredientAlternative'))}}</td>
<td>{{Form::text($ingredient->quantity,null,array('class' => 'form-control ingredientQuantity'))}}</td> <td>{{Form::text("addIngredientAlternative",null,array('class' => 'form-control ingredientQuantity'))}}</td>
<td>{{Form::text($ingredient->measurement,null,array('class' => 'form-control ingredientMeasurement'))}}</td> <td>{{Form::text("addIngredientMeasurement",null,array('class' => 'form-control ingredientMeasurement'))}}</td>
<td>{{Form::text($ingredient->name,null,array('class' => 'form-control ingredientName'))}}</td> <td>{{Form::text("addIngredientName",null,array('class' => 'form-control ingredientName'))}}</td>
<td>{{Form::text("addIngredientSpecial_notes",null,array('class' => 'form-control ingredientNotes'))}}</td>
<td>{{Form::button("Add",array('class' => 'form-control','id' => 'addIngredient'))}}</td> <td>{{Form::button("Add",array('class' => 'form-control','id' => 'addIngredient'))}}</td>
</tr> </tr>
</table> </table>
@ -86,7 +102,7 @@
{{ Form::textarea('instructions', null, array('class' => 'form-control', 'id' => 'instructionsEditor','name'=>'instructionsEditor')) }} {{ Form::textarea('instructions', null, array('class' => 'form-control', 'id' => 'instructionsEditor','name'=>'instructionsEditor')) }}
</div> </div>
{{ Form::submit('Save', array('class' => 'btn btn-primary')) }} {{ Form::submit('Save', array('class' => 'btn btn-primary','id'=>'submit')) }}
{{ Form::close() }} {{ Form::close() }}
@endsection @endsection
@ -117,7 +133,7 @@
source: measurements source: measurements
}); });
$(".category").on("click",function(){ $("#categories").on("click",'.category',function(){
$(this).remove(); $(this).remove();
}); });
@ -128,7 +144,8 @@
currentCategories.push($(this).text()); currentCategories.push($(this).text());
}); });
if(newCategory!="" && currentCategories.indexOf(newCategory) == -1){ if(newCategory!="" && currentCategories.indexOf(newCategory) == -1){
$("#categories").append('<button type="button" class="btn form-control category" style="width: 100px; margin-left: 10px;margin-bottom: 10px;">'+newCategory+'</button>'); var id=uuidv4();
$("#categories").append('<input name="category_'+id+'_name" type="hidden" class="form-control category_name ui-autocomplete-input" autocomplete="off" value="'+newCategory+'"><button type="button" class="btn form-control category_button" style="width: 100px; margin-left: 10px;margin-bottom: 10px;">'+newCategory+'</button>');
} }
}); });
@ -140,8 +157,10 @@
return words.join(" "); return words.join(" ");
} }
$(".ingredientRemove").on("click",function(){ $("#ingredientTable").on("click",".ingredientRemove",function(){
$(this).parent().parent().remove(); $(this).parent().parent().remove();
$("#ingredientTable").find('.recipeIngredient .ingredientAlternative:first').attr('disabled',true);
$("#ingredientTable").find('.recipeIngredient .ingredientAlternative:first').attr('checked',false);
}); });
$("#addIngredient").on("click", function(){ $("#addIngredient").on("click", function(){
@ -149,15 +168,21 @@
var ingredientQuantity=$('#addRow .ingredientQuantity').val(); var ingredientQuantity=$('#addRow .ingredientQuantity').val();
var ingredientMeasurement=$('#addRow .ingredientMeasurement').val(); var ingredientMeasurement=$('#addRow .ingredientMeasurement').val();
var ingredientName=$('#addRow .ingredientName').val(); var ingredientName=$('#addRow .ingredientName').val();
var ingredientNotes=$('#addRow .ingredientNotes').val();
if(isFraction(ingredientQuantity) && ingredientMeasurement != "" && ingredientName != ""){ if(isFraction(ingredientQuantity) && ingredientMeasurement != "" && ingredientName != ""){
var newRow='<tr>'; var id=uuidv4();
newRow+='<td><input name="0" type="checkbox" '+ (ingredientAlternative ? 'checked="checked"' : "") +'class="form-control ingredientAlternative"></td>'; var newRow='<tr class="recipeIngredient">';
newRow+='<td><input name="1" type="text" value="'+ingredientQuantity+'" class="form-control ingredientQuantity"></td>'; newRow+='<td><input name="ingredient_'+id+'_order" type="hidden" class="form-control ingredientOrder ui-autocomplete-input" autocomplete="off"></td>';
newRow+='<td><input name="lb" type="text" value="'+ingredientMeasurement+'" class="form-control ingredientMeasurement ui-autocomplete-input" autocomplete="off"></td>'; newRow+='<td><input name="ingredient_'+id+'_alternative" type="checkbox" '+ (ingredientAlternative ? 'checked="checked"' : "") +'class="form-control ingredientAlternative"></td>';
newRow+='<td><input name="carrot" type="text" value="'+ingredientName+'" class="form-control ingredientName ui-autocomplete-input" autocomplete="off"></td>'; newRow+='<td><input name="ingredient_'+id+'_quantity" type="text" value="'+ingredientQuantity+'" class="form-control ingredientQuantity"></td>';
newRow+='<td><input name="ingredient_'+id+'_measurement" type="text" value="'+ingredientMeasurement+'" class="form-control ingredientMeasurement ui-autocomplete-input" autocomplete="off"></td>';
newRow+='<td><input name="ingredient_'+id+'_name" type="text" value="'+ingredientName+'" class="form-control ingredientName ui-autocomplete-input" autocomplete="off"></td>';
newRow+='<td><input name="ingredient_'+id+'_notes" type="text" value="'+ingredientNotes+'" class="form-control ingredientNotes ui-autocomplete-input" autocomplete="off"></td>';
newRow+='<td><button type="button" class="form-control ingredientRemove">Remove</button></td>'; newRow+='<td><button type="button" class="form-control ingredientRemove">Remove</button></td>';
newRow+='</tr>'; newRow+='</tr>';
$("#blankRow").before(newRow); $("#blankRow").before(newRow);
$("#ingredientTable").find('.recipeIngredient .ingredientAlternative:first').attr('disabled',true);
$("#ingredientTable").find('.recipeIngredient .ingredientAlternative:first').attr('checked',false);
}else{ }else{
if(ingredientMeasurement == ""){alert("Ingredient measurement required")}; if(ingredientMeasurement == ""){alert("Ingredient measurement required")};
if(ingredientName == ""){alert("Ingredient name required")}; if(ingredientName == ""){alert("Ingredient name required")};
@ -172,6 +197,90 @@
return false return false
} }
} }
$('#submit').on("click",function(){
$('.recipeIngredient').each(function(index){
$(this).find('.ingredientOrder').val(index);
});
$('#recipeForm').submit();
});
/*$('#submit').on("click",function(){
var recipe = @json($recipe->toArray());
recipe['author'] = $("#authorFilter").val();
recipe['user']['id'] = $("#owner option:selected").val();
recipe['servings'] = $("#servings").val();
recipe['serving_size'] = $("#serving_size").val();
recipe['categories'] = [];
$(".category").each(function(){
recipe['categories'].push($(this).text());
});
recipe['description'] = $("#descriptionEditor").val();
recipe['ingredients'] = [];
$('.recipeIngredient').each(function(index){
var ingredientAlternative=($(this).find('.ingredientAlternative').prop("checked")) ? 1 : 0;
var ingredientQuantity=$(this).find('.ingredientQuantity').val();
var ingredientMeasurement=$(this).find('.ingredientMeasurement').val();
var ingredientName=$(this).find('.ingredientName').val();
var ingredientNotes=$(this).find('.ingredientNotes').val();
var newIngredient = {
"recipe_id":{{$recipe->id}},
"order":index,
"alternative":ingredientAlternative,
"quantity":ingredientQuantity,
"measurement":ingredientMeasurement,
"name":ingredientName,
"special_notes":ingredientNotes
};
recipe['ingredients'].push(newIngredient);
});
recipe['instructions'] = $("#instructionsEditor").val();
fetch('{{route('recipes.update', $recipe->id)}}', {
method: 'PUT',
body: JSON.stringify({'test':'test'}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
});
/*$.ajax({
type: "POST",
url: "{{route('users.update', $recipe->id)}}",
data: {'test':'test'},
success: function(){},
dataType: "json",
contentType : "application/json",
'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
});*/
/* var xhr = new XMLHttpRequest();
//open the request
xhr.open('PUT','{{route('recipes.update', $recipe->id)}}')
xhr.setRequestHeader("Content-Type", "application/json");
//send the form data
xhr.send(JSON.stringify(recipe));
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
//reset form after AJAX success or do something else
}
}
//Fail the onsubmit to avoid page refresh.
return false;*/
//$('#recipeForm').submit();
//});
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
</script> </script>
@endsection @endsection