Home Blog Page 294

Green Eggs

0
This Back to School Green Eggs recipe is a fun way to start the day!

Dr. Suess intrigued several generations of kids with the possibilities of green eggs. Whip these up at home and leave a copy of Green Eggs and Ham on the breakfast table. Magic will happen.

GREEN EGGS RECIPE

Makes 8

Ingredients
8 medium eggs

¼ tsp garlic powder

¼ tsp cumin powder

¼ tsp salt

2 cups baby spinach, packed

½ cup shredded cheddar

Instructions

1.     Blend eggs, spices, and spinach.

2.     Pour into a parchment-lined 8 x 8 baking pan and add the shredded cheddar.

3.     Bake at 325 degrees until set and lightly browned on top.

4.     Cool and slice into 8 triangles.

RECIPE AND STYLING BY SELENA ORKWIS / PHOTOGRAPHY BY LAURA PETRILLA

SunButter® Blondies

0

Here’s a sumptuous treat to celebrate a great test grade or a victory on the soccer field. It’s so good that it will become part of your “good job” traditions!

SUNBUTTER® BLONDIES RECIPE

Makes 9-12 bars

Ingredients

1 stick melted butter

1 cup packed light brown sugar

2 large eggs

1 cup SunButter®

1 tsp vanilla extract

1 ½ cups flour

1 tsp kosher salt

1 tsp baking powder

3 ½ oz dark chocolate, chopped

¼ cup pumpkin seeds

¼ cup sunflower seeds

1 tbsp black sesame seeds

Instructions

1.     Preheat oven to 325 degrees.

2.     Combine melted butter with brown sugar.

3.     Add eggs, stirring until combined.

4.     Add SunButter® and vanilla extract.

5.     Sift together flour, salt, and baking powder and add to the wet mixture.

6.     Gently stir in chocolate and seeds.

7.     Spread into an 8 x 8 baking pan and bake 20-25 minutes. Cool in pan. Slice into desired sizes.

RECIPE AND STYLING BY SELENA ORKWIS / PHOTOGRAPHY BY LAURA PETRILLA

Magical Zucchini Pasta Sauce

0
What makes this recipe magic? Shazaam: the complaints about vegetables will disappear when this dish hits the dinner table.

MAGICAL ZUCCHINI PASTA SAUCE RECIPE

Serves 8

Instructions

1 medium zucchini, quartered lengthwise and sliced into ½-inch pieces

1 medium yellow onion, diced

2 cloves garlic, sliced

2 tbsp extra-virgin olive oil

1 lb penne or other short, chunky pasta

½ tsp salt

½ lemon, zest and juice

12 large basil leaves

1 tsp capers

Ingredients

1.     Sauté zucchini, onion, and garlic in olive oil on medium heat for 20 minutes, until very soft but not browned.

2.     Cook pasta in boiling salted water until al dente.

3.     Puree zucchini mixture in a blender, adding lemon, basil, capers and ½ cup pasta cooking water.

4.     Serve in bowls topped with toasted, salted pistachios.

RECIPE AND STYLING BY SELENA ORKWIS / PHOTOGRAPHY BY LAURA PETRILLA

Art Has a Place in Cyber Education

0
At the Pittsburgh-South Side office, students created oil pastels while learning how to make seasonal artwork with color theory and the basics of shading and tinting.

Sponsored Content

PA Cyber is a public charter school that offers students in grades K-12 an alternative to traditional education. One of PA Cyber’s many unique offerings is its in-person ArtReach program, which provides students with hands-on arts experiences in a supportive classroom environment. ArtReach classes enrich students’ creative knowledge and skills while giving them an opportunity to socialize and express themselves.

Each semester, the school offers about 100 art classes across Pennsylvania. Students attend ArtReach classes at the PA Cyber office closest to them. Classes take place one day per week for twelve weeks each semester and are typically 1 hour and 15 minutes in length. Classes are available for all age groups and are free of charge.

PA Cyber’s ten regional offices host numerous arts classes and activities onsite.

ArtReach aims to broaden and deepen students’ knowledge of diverse art forms and cultivate their artistic talents. Class options include visual arts, graphic arts, music, theater, dance, and home arts, such as cooking and sewing. PA Cyber has teamed up with the Lincoln Park Performing Arts Center—a leading provider of arts and education programming in Pennsylvania—to design ArtReach curriculum. ArtReach teachers are skilled professionals in their fields of expertise.

Doreen Dembinski said her son Tyler, a fourth grader at PA Cyber, has become more well- rounded because of his participation in these classes. He attends every semester. This past summer, Tyler also attended an ArtReach camp at the Erie office, where participants met four times per week for two weeks. Students experimented with different musical instruments and even made their own instruments by the end of the camp. “It gives Tyler more opportunities to socialize with other kids, and he enjoys it,” Doreen said.

Students were proud to show their creations to family at a Philadelphia ArtReach showcase

Mo Severance said her son Justice loves ArtReach. “It’s one of the best things that has happened to him,” she said. “Art has always been calming for him. They’ve introduced him to all different things.” Justice is autistic with learning and development issues. Mo said PA Cyber staff provide accommodations to ensure he can participate more fully.

An eleventh grader, Justice typically enrolls in three ArtReach classes each semester. He likes fine arts, theater, music, graphic design, drawing, and animation classes.

At an ArtReach showcase in Allentown, students showed off their acting skills.

Near the end of each school year, regional offices host their own ArtReach showcases where students’ accomplishments are highlighted. There, students’ creations are displayed for other students and families to see. Mo said, “I never thought I’d see the day, but Justice sang in the showcase. I can’t believe how much he has come out of his shell. I credit that all to ArtReach and PA Cyber.”

Korey Ritchie, a parent of two PA Cyber students, said, “ArtReach will help your kids step out of their boundaries. It’ll surprise you. There’s no better feeling than seeing your kids succeed.”

If students can’t make it onsite to attend class in-person, a variety of ArtReach classes are offered virtually. Visit pacyber.org/ArtReach for more information.

Students perform a play for family and friends at the Pittsburgh-South Side office.

About PA Cyber

The Pennsylvania Cyber Charter School (PA Cyber) serves students in kindergarten through twelfth grade across Pennsylvania. Approximately 11,500 students enrolled from nearly every county and school district in the state for the 2021–2022 school year. As a public school, PA Cyber does not charge tuition to students or families.

While PA Cyber is an online school, students can attend a wide variety of school-organized events in person. Enrichment events include cultural events at the theater, snow tubing, baseball games, and state parks. In addition to ArtReach classes, our ten regional offices host holiday parties, STEM activities, game nights, and school dances. PA Cyber’s offices are located in Allentown, Erie, Greensburg, Harrisburg, Midland, Philadelphia, Pittsburgh, State College, Warrendale, and Wilkes-Barre.

Urban Farms Need Your Support

0

Sponsored Content

Pittsburgh is home to amazing individuals who started urban farms and community gardens in black communities that are suffering from decades of food apartheid. You have the opportunity to join forces with Farm to Table Buy Local in by contributing to their fundraising campaign.. Your dollars will support urban farm infrastructure projects such as solar power, irrigation, shade structures, washing stations, seeds, compost, and so much more. Additionally, many staff members of these urban farms and gardens are working for free on land they don’t own.

They need help to:

Acquire land / compensate staff / purchase equipment through co-operatives / capture food dollars that are spent by people living in the neighborhoods by working with WIC, SNAP, and PASS programs.

COOPERATIVE FARMS

Black Urban Gardeners of Pittsburgh Food Co-Op

Feed the Hood

MLK Community Garden

Oasis Farm & Fishery

Operation Better Block’s Jr. Green Corp

Out of the End, Incorporated

Peace & Friendship Farm

Sankofa Village Community Farm & Garden

The Peace And Friendship Farm in the Hill District was founded by Kent Bey, president of the Project LOVE Coalition. “I started this after the White House challenge to end veteran homelessness,” he says. Bey, who is a veteran, transformed a vacant corner into a thriving quarter-acre community garden filled with 80 raised beds and two greenhouses — creating a safe space for veterans and neighbors to grow their own food together.
Ebony Evans runs the Food For The Soul Community Farm in Manchester. The self-taught gardener began by teaching her own kids and neighbors how to grow their own food. Volunteers at the quarter-acre farm can take some of the harvest, neighbors get some produce, and the food is distributed weekly to high rises in the community, too. The farm produced 1,000 pounds of produce last season. Learn more about Urban Farm Fundraising Campaign

CHOOSE A LEVEL TO HELP THIS INDUSTRY GROW!

FRIENDS OF URBAN FARMS $5,000-$10,000

SUSTAINING SPONSORSHIPS $25,000-$50,000

FIELD OF DREAMS $100,000-$500,000

Learn more about urban farms here!

DONATE now!

FOR MORE INFO, CONTACT ERIN HART, EXECUTIVE DIRECTOR, FARM TO TABLE BUY LOCAL P: 412-657-3028 ERIN@FARMTOTABLEPA.COM

Chia Oat Parfait

0
clear glass jars with overnight chia oats and raspberries set in an orange dish on a purple table

Chia Oat Parfait is a simply delicious breakfast that appeals to palates of all ages. This recipe is filled with fiber and nutrients. A bonus: sturdy jars make for easy-peasy eating in the car or on the bus.

What are Chia Seeds?

Chia seeds, hailing from the Salvia hispanica plant, are tiny nutritional powerhouses. Native to Mexico and Guatemala, these ancient seeds were a staple food for civilizations like the Aztecs and Mayans. Incredibly versatile, they can be added to a variety of dishes, from smoothies and yogurt to salads and baked goods. Packed with essential nutrients such as fiber, omega-3 fatty acids, protein, and antioxidants, chia seeds also have the unique ability to absorb up to 12 times their weight in liquid, forming a gel-like substance that aids digestion and promotes satiety.

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

clear glass jars with overnight chia oats and raspberries set in an orange dish on a purple table

Chia Oat Parfait


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Selena Orkwis
  • Yield: Serves 2

Description

A healthy start full of chia and flax seeds.


Ingredients


Scale

  • 1 cup oats
  • 1 cup oat milk
  • 1 tsp ground flax seeds
  • 1 tbsp chia seeds
  • 1 tbsp maple syrup
  • Fresh raspberries for serving


Instructions

  1. Combine all ingredients except berries. Sit overnight in a refrigerator until thick.
  2. To serve, layer ½ cup chia oat mixture in a glass, 5 raspberries, ¼ cup chia oat mixture and 5 more raspberries.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”2003796080″,”postId”:1358};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2)d2=D+1;else d1=D+1;break}else if(xD){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

Recipe and Styling by Selena Orkwis / Photography by Laura Petrilla

Subscribe to TABLE Magazine’s print edition.

Cider‑Glazed Pork Loin with Apples & Potatoes

0
An aerial shot of Cider-Glazed Pork Loin with Roasted Apples and Potatoes in a roasting tray.

A simple glaze makes this Cider-Glazed Pork Loin with Roasted Apples and Potatoes recipe a perfect weeknight dinner… but it’s also good enough for a special Sunday meal, too.

Do Purple Potatoes Taste Different Than Russet Potatoes?

While both are members of the solanum tuberosum species, purple potatoes contain higher levels of anthocyanins, which gives them their vibrant color. These anthocyanins also happen to contribute to a slightly nuttier, earthier, and almost slightly sweet taste in comparison to russet potatoes. Outside of the taste, the texture can vary a little as well. Purple potatoes tend to have a firmer texture which makes them great for roasting with our pork loin.

Recipe and Styling by Anna Franklin
Story by Keith Recker
Photography by Dave Bryce 

Subscribe to TABLE Magazine‘s print edition.

Ham, Beans and Greens

0
Many of us take a break from cooking during the peak-heat of summer. But once things get a little crisp outside, the impetus to ignite the stove cannot be ignored. Try six easy-peasy recipes full of flavorful fall farmers’ market ingredients, all based on farm produce brought to us by Buy Fresh, Buy Local of Western PA.

A traditional boiled dinner with a surprise addition of wilted escarole to add dimension and texture. A dab of English mustard and some crusty bread makes it a meal. Springhouse Market in Washington, PA, is a great place to procure a country-style smoked ham. Frankferd Farms Foods offers many dried bean varieties.

HAM & BEANS & GREENS RECIPE 

Ingredients

1 smoked ham shank

½ lb dried beans from the farmers’ market, soaked in cold water overnight

2 carrots, minced

1 onion, minced

2 qt chicken stock

2 bay leaves

1 head escarole, chopped

Salt and pepper to taste

English mustard as condiment for the table

Instructions

1.     Add first 6 ingredients to a pot, excluding the chopped escarole.

2.     Simmer for 3 hours or until the beans are tender and the ham shank is falling off the bone.

3.     Remove the shank and let cool until it is able to be handled. Pick the meat off the bone and return to the pot.

4.     Add escarole and simmer until greens are wilted.

5.     Season with salt and pepper and serve with crusty bread.

RECIPES AND STYLING BY ANNA CALABRESE / PHOTOGRAPHY BY DAVE BRYCE / STORY BY KEITH RECKER / WITH SUPPORT FROM BUY FRESH, BUY LOCAL OF WESTERN PA

Sweet and Sour Red Cabbage

0
Many of us take a break from cooking during the peak-heat of summer. But once things get a little crisp outside, the impetus to ignite the stove cannot be ignored. Try six easy-peasy recipes full of flavorful fall farmers’ market ingredients, all based on farm produce brought to us by Buy Fresh, Buy Local of Western PA.

This delicious recipe is simple to make but packed with flavor. At once savory and sweet, this side dish will become one of your dependable go-to options for every day and for special occasions. As the weather cools, cabbage is available at many farm stands and farmers’ markets. Try Janoski’s Farm & Greenhouse.

SWEET AND SOUR RED CABBAGE RECIPE

Ingredients

½ lb bacon

1 sweet onion, sliced

½ cup apple cider vinegar

½ cup Concord grape juice

2 tsp salt

3 tbsp brown sugar

1 tsp paprika

4 cups shredded red cabbage

Instructions

1.     Cook bacon in a pan until crispy, remove from pan and set aside, leaving the bacon fat in the pan.

2.     Add sliced onion to bacon fat and cook until softened.

3.     Add vinegar, grape juice, salt, brown sugar, paprika, and cabbage, simmering until most of the liquid is evaporated. The cabbage should be tender and there shouldn’t be a lot of liquid at the bottom of the pan. Place on a serving platter and crumble with bacon.

RECIPES AND STYLING BY ANNA CALABRESE / PHOTOGRAPHY BY DAVE BRYCE / STORY BY KEITH RECKER / WITH SUPPORT FROM BUY FRESH, BUY LOCAL OF WESTERN PA

Iyam Bayildi

0
Rozendal Farm, in the heart of South Africa’s Cape Winelands, is the magical setting where farmer Nathalie Amman creates biodynamic vinegars. Her organic process, her savvy flavors, and her storybook farm transport us to foodie heaven.

A subtle mix of herbs and spices elevates this perfect vegetarian entree to great heights. Try it for a Meatless Monday entrée…and watch it take a place in your regular rotation of special dishes. Or, better yet, travel to magical Rozendal Farm as part of a trip to South Africa.

IMAM BAYILDI – TURKISH STUFFED AUBERGINES RECIPE

Recipe by Jess Shepherd and Luke Grant, Good to Gather Restaurant, Rozendal Farm, South Africa

Serves 2

Ingredients

2 eggplants

½ cup best-quality olive oil (a mild extra virgin if you can)

1 heaped tsp tomato paste

300 ml boiling water

½ tsp sugar

Fresh herbs (parsley, dill, mint) to garnish

For the stuffing

2 tbspn best-quality olive oil (a mild extra virgin if you can)

2 medium onions, finely sliced

4 garlic cloves, finely sliced

250g tomatoes, peeled and cut into wedges

10g flat-leaf parsley, chopped

1 tsp chilli flakes (optional)

salt and pepper

Instructions

  1. Peel half the skin off the eggplants so they resemble a zebra pattern. Roast in a preheated oven at 200 C until starting to soften, around 20 minutes.

  2. Meanwhile, make the stuffing. Heat a thick-bottomed frying pan over medium heat. Add 2 Tbsp olive oil and fry the onion until softened but not browned, 8-10 minutes. Stir regularly. Add the garlic and fry for another minute, constantly stirring, not burning the garlic. Add the tomatoes and chilli pepper (if using). Keep frying until the tomatoes collapse, and the liquid starts to thicken, 5-6 minutes. Add the flat-leaf parsley and some salt and pepper, and remove from the heat.

  3. Make a lengthwise incision down the middle of the eggplants, leaving 2 cm at either end. Do not cut all the way through the base of the eggplant.

  4. Add the stuffing into the eggplants and place them, stuffed side up, in a pan for which you have a lid. Add the remaining olive oil to the pan. Mix the tomato paste, sugar and boiling water with a bit of salt and pepper. Add the liquid to the pan with the eggplants.

  5. Bring to a boil, put on a lid and turn the heat down to low. Leave to simmer until the eggplants are entirely soft, around 45 minutes. Add extra liquid if things start to look too dry.

  6. Set aside to cool completely, then scatter over the picked herbs before serving.

STORY BY LORI COHEN / PHOTOGRAPHY BY WARREN HEATH – BUREAUX / PRODUCTION BY SVEN ALBERDING

Don't Miss