There was a problem initializing the feedlist plugin. Make sure the file feedlist.php is directly under your wp-content/plugins directory and not a subdirectory.
args = $args; $this->id = md5(uniqid(rand(), true)); } function GetID(){ $this->Debug($this->id); } /* core methods */ // called automagically if you use an inline filter (inside a post/page). function FeedListFilter(){ return $this->BuildFeedOutput(); } // call this if you want to process one feed function FeedListFeed(){ echo $this->BuildFeedOutput(); } // call this if you want to process a feed file function FeedListFile(){ $this->args = $this->GetArgumentArray(); $this->output = ''; // Seed the random number generator: srand((double)microtime()*1000000); $feed = Array(); $feedInfo = $this->LoadFile($this->args['file']); if(count($feedInfo)){ // we have some feeds // Randomize the array: shuffle($feedInfo); // Make sure we are set to show something: ($this->args['feedsToShow'] < 1) ? 1 : $this->args['feedsToShow']; ($this->args['feedsToShow'] > sizeof($feedInfo)) ? sizeof($feedInfo) : $this->args['feedsToShow']; // we will fetch each feed, then coallate items for($i=0;$i<$this->args['feedsToShow'];$i++){ $thisFeed = $feedInfo[$i]; $urlAndTitle = preg_split("/~/", $thisFeed); $feedUrl = trim($urlAndTitle[0]); $feedTitle = trim($urlAndTitle[1]); $this->rs = $this->GetFeed($feedUrl); if($this->rs){ $this->items = $this->rs->items; if($this->args['random']){ shuffle($this->items); } // Slice off the number of items that we want: if ($this->args['num_items'] > 0) { $this->items = array_slice($this->items, 0, $this->args['num_items']); } if(!$this->args['mergeFeeds']){ $this->output.= '
'.$feedTitle.'
'; if($this->args['show_date']){ $this->output .= '
updated: '. $this->NormalizeDate($this->rs) . '
'; // fl_tz_convert($this->rs->last_modified,0,Date('I')).''; } $this->output.=$this->Draw($this->items,$this->args); } else { $feed = array_merge($feed,$this->items); } } } $this->output .= ''; } else { $this->output = $this->args['before'] . 'No Items Were Found In the Provided Feeds. Perhaps there is a communication problem.' . $this->args['after']; } // coallate feed items echo $this->output; } /* end core methods */ /* basic settings - you can edit these */ function GetSettings(){ /* CONFIGURATION SETTINGS ---------------------- cacheTimeout how long should your cache file live in seconds? By default it is 21600 or 6 hours. most sites prefer you use caching so please make sure you do! connectionTimeout how long should I try to connect the feed provider before I give up, default is 15 seconds showRssLinkListJS TRUE by default and will include a small block of JS in your header. If it is false the JS will not be included. If you want the $new_window = 'true' option to use the JS then this must also be true. Otherwise both true and simple will hardcode the target="_blank" into the new window links */ // DEFINE THE SETTINGS -- EDIT AS YOU NEED: $feedListDebug = false; // To debug this script during programming (true/false). $cacheTimeout = 21600; // 21600 sec is 6 hours. $connectionTimeout = 15; // 15 seconds is default $showRSSLinkListJS = true; $Language = 'en_US'; // Choose your language (from the available languages below,in the translations): $Translations = array(); // Please send in your suggestions/translations: // English: $Translations['en_US'] = array(); $Translations['en_US']['ReadMore'] = 'Read more...'; // Dutch: $Translations['nl_NL'] = array(); $Translations['nl_NL']['ReadMore'] = '[lees verder]'; // French: $Translations['fr_FR'] = array(); $Translations['fr_FR']['ReadMore'] = 'Lisez davantage'; $feedListFile = '/feeds.txt'; // IF you are going to use the random feedlist generator make sure this holds the correct name for your feed file: // Build an array out of the settings and send them back: $settings = array ( 'feedListDebug' => $feedListDebug, 'cacheTimeout' => $cacheTimeout, 'connectionTimeout' => $connectionTimeout, 'showRSSLinkListJS' => $showRSSLinkListJS, 'language' => $Language, 'translations' => $Translations, 'feedListFile' => $feedListFile ); return $settings; } function GetDefaults(){ $settings = $this->GetSettings(); return array( 'rss_feed_url' => 'http://del.icio.us/rss', 'num_items' => 15, 'show_description' => true, 'random' => false, 'before' => '
  • ', 'after' => '
  • ', 'description_separator' => ' - ', 'encoding' => false, 'sort' => 'none', 'new_window' => false, 'ignore_cache' => false, 'suppress_link' => false, 'show_date' => false, 'additional_fields' => '', 'max_characters' => 0, 'max_char_wordbreak' => true, 'file'=>$settings['file'], 'feedsToShow'=>0, 'mergeFeeds'=>false, 'show_date_per_item' => false, 'show_description_only' => false ); } /* end basic settings */ function BuildFeedOutput(){ $this->args = $this->GetArgumentArray(); $this->rs = $this->GetFeed($this->args['rss_feed_url']); $this->output = ''; if($this->rs){ $this->items = $this->rs->items; if($this->args['random']){ shuffle($this->items); } // Slice off the number of items that we want: if ($this->args['num_items'] > 0) { $this->items = array_slice($this->items, 0, $this->args['num_items']); } $this->output = $this->Draw(); } return $this->output; } function Draw(){ $settings = $this->GetSettings(); $this->items = $this->NormalizeDates($this->items); $this->items = $this->SortItems($this->items,$this->args['sort']); // Explicitly set this because $new_window could be "simple": $target = ''; if($this->args["new_window"] == true && $settings["showRSSLinkListJS"]) { $target=' rel="external" '; } elseif ($this->args["new_window"] == true || $settings["new_window"] == 'simple') { $target=' target="_blank" '; } $this->output =''; foreach($this->items as $item){ $thisLink = ''; $linkTitle = ''; $thisDescription = ''; $thisTitle = $item['title']; $thisItemDate = ''; if($this->args['show_description_only']){ $this->args['show_description'] = true; } if ($this->args['encoding']){ // very poor and limited internationalization effort $thisTitle = htmlentities(utf8_decode($thisTitle)); } if (isset($item['content']['encoded']) || isset($item['description'])){ if (isset($item['description'])){ $thisDescription = $item['description']; } else{ $thisDescription = $item['content']['encoded']; } // Handle max_characters and max_char_wordbreak before the htmlentities makes it more complicated: if (!empty($this->args['max_characters']) && is_numeric($this->args['max_characters'])) { $thisDescription = substr($thisDescription, 0, $this->args['max_characters']); // If true, we cut on the last space: if (!empty($this->args['max_char_wordbreak'])) { $max_char_pos = strrpos($thisDescription, ' '); if ($max_char_pos > 0) { $thisDescription = substr($thisDescription, 0, $max_char_pos); } } } else if ($encoding) { //further really weak attempt at internationalization $thisDescription = htmlentities(utf8_decode($thisDescription)); } $linkTitle = $thisDescription; $linkTitle = strip_tags($linkTitle); $linkTitle = str_replace(array("\n", "\t", '"'), array('', '', "'"), $linkTitle); $linkTitle = substr($linkTitle, 0, 300); // if we are only showing the description we don't need the separator.. if (strlen(trim($thisDescription)) && !$this->args['show_description_only']) { $thisDescription = $this->args['description_separator'].$thisDescription; } } // Only build the hyperlink if a link is provided..and we are not told to suppress the link: if (!$this->args['suppress_link'] && strlen(trim($item['link'])) && strlen(trim($thisTitle)) && !$this->args['show_description_only']){ $thisLink = ''.$thisTitle.''; } elseif (strlen(trim($item['link'])) && $this->args['show_description']) { // If we don't have a title but we do have a description we want to show.. link the description $thisLink = ''.$thisDescription.''; $thisDescription = ''; } else { $thisLink = '' . $thisTitle . ''; } if($this->args['show_date_per_item']){ $thisItemDate = '
    ' . $item['feeddate'] . '
    '; } // Determine if any extra data should be shown: $extraData = ''; if (strlen($this->args['additional_fields'])){ // Magpie converts all key names to lowercase so we do too: $this->args['additional_fields'] = strtolower($this->args['additional_fields']); // Get each additional field: $addFields = explode('~', $this->args['additional_fields']); foreach ($addFields as $addField) { // Determine if the field was a nested field: $fieldDef = explode('.', $addField); $thisNode = $item; foreach($fieldDef as $fieldName) { // Check to see if the fieldName has a COLON in it, if so then we are referencing an array: $thisField = explode(':', $fieldName); $fieldName = $thisField[0]; $thisNode = $thisNode[$fieldName]; if (count($thisField) == 2) { $fieldName = $thisField[1]; $thisNode = $thisNode[$fieldName]; } } if (is_string($thisNode) && isset($thisNode)) { $extraData .= '
    ' . $thisNode . '
    '; } } } if($this->args['show_description_only']){ $this->output .= $this->args['before'].$thisLink.$thisItemDate.$extraData; } else if ($this->args['show_description']){ $this->output .= $this->args['before'].$thisLink.$thisItemDate.$thisDescription.$extraData; }else{ $this->output .= $this->args['before'].$thisLink.$thisItemDate.$extraData; } if (is_numeric($this->args['max_characters']) && $this->args['max_characters'] > 0) { $this->output .= ''; } $this->output .= $this->args['after']; } return $this->output; } function ArrayPush(&$arr) { $args = func_get_args(); foreach ($args as $arg) { if (is_array($arg)) { foreach ($arg as $key => $value) { $arr[$key] = $value; $ret++; } }else{ $arr[$arg] = ""; } } return $ret; } /* utility functions */ function NormalizeDates(){ $newItems = array(); foreach($this->items as $item){ $this->ArrayPush($item,array("feeddate"=>$this->NormalizeDate($item))); array_push($newItems,$item); } return $newItems; } function NormalizeDate($item){ $d=""; if(array_key_exists('pubdate',$item)) { $d = date($this->dateFormat,strtotime($item['pubdate'])); } else if (array_key_exists('published',$item)) { $d = date($this->dateFormat,strtotime($item['published'])); } else if (array_key_exists('dc',$item) && array_key_exists('date',$item['dc'])) { $d = date($this->dateFormat,strtotime($item['dc']['date'])); } else if (array_key_exists('last_modified',$item)) { $d = $this->TimezoneConvert($item['last_modified'],0,Date('I')); } else { $d = date($this->dateFormat); } return $d; } function TimezoneConvert($datetime,$tz_from,$tz_to,$format='d M Y h:ia T'){ return date($format,strtotime($datetime)+(3600*($tz_to - $tz_from))); } function MakeNumericOnly($val){ return ereg_replace( '[^0-9]+', '', $val); } function GetMonthNum($month){ $months = array('jan'=>'01','feb'=>'02','mar'=>'03','apr'=>'04','may'=>'05','jun'=>'06','jul'=>'07','aug'=>'08','sep'=>'09','oct'=>'10','nov'=>'11','dec'=>'12'); $month = strtolower($month); return $months[$month]; } function SortItems(){ $sort = strtolower($this->args['sort']); $sort = explode(" ",$sort); if((count($sort) ==1 || $sort[0] == 'asc') && $sort[0] != 'none'){ $sort[1] = SORT_ASC; } elseif ($sort[1] == 'desc') { $sort[1] = SORT_DESC; } else { $sort[1] = ''; } if($sort[0] == 'feeddate'){ $sort[2] = SORT_NUMERIC; } else { $sort[2] = SORT_STRING; } if (($sort[1]!='') && count($this->items)) { // Order by sortCol: foreach($this->items as $item) { $sortBy[] = $item[$sort[0]]; } // Make titles lowercase (otherwise capitals will come before lowercase): $sortByLower = array_map('strtolower', $sortBy); array_multisort($sortByLower, $sort[1], $sort[2], $this->items); } return $this->items; } function LoadFile($file){ /* load the $feedListFile contents into an array, using the --NEXT-- text as a delimeter between feeds and a tilde (~) between URL and TITLE */ $x = file($file); return preg_split("/--NEXT--/", join('', file($file))); } function GetArgumentArray(){ $this->args = $this->AssignDefaults(); $a = array(); foreach($this->args as $d=>$v){ if($this->args[$d] === 'true') { $a[$d] = 1; }else if($this->args[$d] === 'false'){ $a[$d] = 0; }else{ $a[$d] = $v; } $a[$d] = html_entity_decode($a[$d]); } return $a; } function AssignDefaults(){ $defaults = $this->GetDefaults(); $a = array(); $i=0; foreach ($defaults as $d => $v) { $a[$d] = isset($this->args[$d]) ? $this->args[$d] : $v; $a[$d] = isset($this->args[$i]) ? $this->args[$i] : $a[$d]; $i++; } return $a; } function GetFeed($feedUrl){ $this->feed = false; if(function_exists('fetch_rss')){ $this->feed = fetch_rss($feedUrl); } return $this->feed; } function InitializeReader($ignore_cache){ $settings = $this->GetSettings(); if ($ignore_cache) { if (is_numeric($ignore_cache)) { define('MAGPIE_CACHE_AGE', $ignore_cache); } else { define('MAGPIE_CACHE_ON', false); } } else { define('MAGPIE_CACHE_AGE', $settings["cacheTimeout"]); } define('MAGPIE_DEBUG', false); define('MAGPIE_FETCH_TIME_OUT', $settings["connectionTimeout"]); } function Debug($val,$name=''){ if(strlen($name)){ print('

    '.$name.'

    '); } print('
    ');
    				print_r($val);
    				print('
    '); } /* end utility functions */ } function rssLinkListFilter($text) { return preg_replace_callback("//", "feedListFilter", $text); } /* Templates can call any of these functions */ function rssLinkList($args){ if(!is_array($args)){ $args = func_get_args(); } return feedList($args); } function feedList($args){ if(!is_array($args)){ $args = func_get_args(); } $feed = new FeedList($args); return $feed->FeedListFeed(); } function randomFeedList($args){ if(!is_array($args)){ $this->args = parse_str($args,$a); $this->args = $a; } $feed = new FeedList($args); return $feed->FeedListFile(); } function feedListFilter($args){ $args = explode(",",$args[1]); if(count($args) == 1 && !strpos($args[0],":=")){ $a = array(); $a["rss_feed_url"] = $args[0]; $args = $a; } else { $a = array(); foreach($args as $arg){ $arg = explode(":=",$arg); $a[$arg[0]] = $arg[1]; } $args = $a; } $feed = new FeedList($args); return $feed->FeedListFilter(); } /* end template functions */ if (function_exists('add_filter')) { add_filter('the_content', 'rssLinkListFilter'); } if(function_exists('FeedListInitError')){ add_action('admin_head','FeedListInitError'); } if(function_exists('add_action')) { function rssLinkList_JS(){ $jsstring = ' '; echo $jsstring; } $jsFeed = new FeedList(''); $settings = $jsFeed->GetSettings(); if($settings["showRSSLinkListJS"]){ add_action('wp_head', 'rssLinkList_JS'); } } ?> Shop Updates-- Heart To Hand: Quilt Talk with Wendy

    ARRIVAL OF THE ACCUQUILT GO!

    March 9th, 2010

    AccuQuilt GoThe AccuQuilt GO! Fabric Cutter is a lightweight, portable fabric cutter quilters can transport easily to classes, guild meetings, retreats and quilting bees. Its design was inspired by the ideas and suggestions of quilters throughout the world and features an easy-lift handle, comfortable roller handle grip, magnetic seal and a neutral, light-colored work surface. Fabric cutting dies for the AccuQuilt GO! are light and made exclusively to ft the portable GO!fabric cutter. Designed for time-saving accuracy, these dies ensure all cuts are quick and precise so your shapes piece together perfectly every time. A GO!

    My friend, neighbor and co-worker Jan and I bought the AccuQuilt about a month ago. We have been experimenting with the different templates.  Jan just loves the 2 1/2″ Strip cutter for borders and binding. She continues to comment on how straight her borders are now.

    I started with the cutting die that has three different shapes on it.  I designed a table runner using the 2 1/2″ Square ; 2″ Finished Half Square Triangle.  I love the exactness of this product.  Cutting half square triangles was never my strength and they would bob and weave all over my quilt.  But with the AccuQuilt, I did not have that problem.

    I have only loaded 15 of the MANY dies that the AccuQuilt uses on the web tonight.  Look for the rest of them on the web in the next week or so.  If you are going to order some dies, and want other ones not listed, just include a note in the comments section of your checkout form and we will have it for you so you can save on postage. You can check out all the dies that Accuquilt offers at The AccuQuilt Website.

    Before to long, we will be offering to cut your fabric with the new AccuQuilt and hope to be able to set up a rental option for you at the shop. I will be doing several demo’s at the shop on the AccuQuilt in April so check the class schedule and drop by the shop to test it out!

    Happy Day!

    Wendy

    ONE MILLION PILLOWCASE CHALLENGE

    January 21st, 2010

    Pillowcase Challenge Logo

    American Patchwork & Quilting® magazine is challenging quilters, crafters and sewers across the country to Make a Pillowcase, Make a Difference. Local quilting enthusiasts will join the cause to help reach the goal of making and donating one million pillowcases to benefit local charities. Every pillowcase can make a difference in our community. A pillowcase can provide comfort for a cancer patient, hope for a foster child, encouragement for a battered woman, or beauty for a nursing home resident.

    Heart To Hand, will be hosting events locally at 412 Beavercreek Road, Suite 607, Oregon City, OR 97045 (located in the Red Soils Business Park). We are also hosting opportunities on our web site.

    Throughout 2010, quilters, crafters and sewers across the nation will make pillowcases at their local quilt shops. The shops will then collect the pillowcases and donate them to a local charity of their choice. A counter will track nationwide progress toward the goal of one million pillowcases.

    As the owner of Heart To Hand I see the One Million Pillowcase Challenge as a way to give back to the local community. “We have worked locally with the Passages Quilt Program and Emanuel Children Hospital, Oregon Food Bank as well as making over 50 quilts that were auctioned off for Breast Cancer awareness. I am glad to be able to help our customers serve the community in yet another way. Pillowcase Challenge

    We will be hosting pillowcase events locally and on-line. How you can participate:
    1. Donate 100% Cotton Fabric in 1 yard increments to the shop to be made into pillowcases.
    2. Make pillowcases at home and get them to the shop.
    3. Join the Pillowcase Parties! in January and February (Click link to see dates and times)
    4. Order Pillowcase kits with the pattern from Heart To Hand. These are sale priced at $6.99. Make your pillowcase and return them to the shop to help us reach our goal!

    FREE PATTERNS:
    Need some pattern idea for getting started. Check out this link for four free Pillowcase Patterns

    For more questions call 503-230-9075, visit the store or the website at: www.hearttohandonline.com.
    Happy Day!
    Wendy

    Questions and Answers!

    October 24th, 2009

    I received a great note from Sharon tonight.  She posed some good questions so I thought I would post it on the blog, because I am sure many of you have similar questions.

    NOTE FROM SHARON:

    Hi Weeble,
    Love your postings. You have a definite flair for words, and you are a stunning canine besides. I am a first time Lotto Block of the Month participant. It has been great fun to make my blocks, but now that I am ready to send them to Mom, I have a question. The instructions state “attach your name and address to the back of the block”. Do I use scotch tape, pins, glue stick? All choices seem to be potential dangers to the sewn block, plus pins would be a hazard to the automatic postal machines….What do most people do?
    How is the drawing conducted? Are the blocks laid out so that you can put your paw on the winner(s)? Are the papers with the names put in a bowl so you can daintily point out the winner with your tongue? If it is the latter, I might cheat a little and put a little cheese flavor on my entry. We have a lovely little next door neighbor of your breed, Maggie, and she is a sucker for cheese!
    Please let me know the best way to send my blocks.
    Hugs and kisses,
    Sharon
    ANSWER FOR SHARON
    Hi Sharon,
    Thanks for your nice note!  I so appreciate your feedback!
    Weeble is crashed out in her bed, we were at the shop all day, and so I thought I would respond to your questions.
    Do I use scotch tape, pins, glue stick? Most people attach a sticky address label to the back of the block.  We take them off before we mail them to the winners.  Some people use scotch tape and some people DO use pins.  Some people use a little post-it note too.
    Are the blocks laid out so that you can put your paw on the winner(s)? HAHA! This is a good one.  especially the cheese flavored entry!!! We hang all the blocks as they arrive on a long string of picture wire across the front of the store, attached with little clothes pins.  They are on display until the drawing.  Then we take them down and mix the blocks us in a bag and draw the winners. Most
    Please let me know the best way to send my blocks. Most people fold them up in a little Ziploc bag, and send them in a standard envelope.
    Thanks again for your great note, you too my dear have a flair for words.
    Thanks for asking.  Do let us know if you have any more questions.
    Happy Day!
    Wendy and Weeble

    2010 McKenna Ryan Club

    September 24th, 2009

    As 2009 rapidly comes to a close it is time to start choosing projects for the New Year.  We just concluded voting for the Thimbleberries 2010 and the color Midnight won.  You can sign up for Thimbleberries now on our web site.

    Our McKenna Ryan club is just finishing Once Upon A Star and I would like to invite you all to vote on which of the following four quilts you would like to see us work on for next year.  Take a look at the quilts and then vote below in the “Leave A Reply” Section.

    Quilt One: Back on the Farm

     Back on the Farm

     

     

     

     

     

     

     

     

     

     

     

    Quilt Two: Storybook Farm

     Storybook Farm

     

     

     

     

     

     

     

     

     

     

     

    Quilt Three: Journey To The Light

     Journey to the Light

     

     

     

     

     

     

     

     

     

     

     

    Quilt Four: When Friends Gather

     When Friends Gather

     

     

     

     

     

     

     

     

     

     

     

    Please cast your vote by October 2, 2009

    Happy Day!

    Wendy

     

    Thimbleberries 2010

    September 14th, 2009

    Village Green

    It is voting time again, no not for politics, but rather for what color you would like to see us offer for Thimbleberries 2010.

    This year the quilt is called Village Green, the quilt finishes at 72″ x 82″ and comes in three color options.  Each is created to reflect the stages of light: Dawn, Dusk, and Midnight.  You will see houses, trees, stars and flowers.

    In addition to the monthly block patterns, Lynette designs extra club projects exclusively for Thimbleberries Quilt Club members, and communicates with you monthly through her Quilt Club newsletter. Before we commit to this major investment of time and fabric, we need to know from you if you might interested and what color way you like best.  We will take voting through September 22nd.

    Cost: Depending on the number of participants the price will run $320 - $280. 

    This includes: Membership fee, All 12 patterns, All fabrics for top. borders and binding, plus 108″ wide Thimbleberries backing fabric.  Pricing will be spread out over three installments.  You will be charged $25 up front to hold your place in the club.  This is non-refundable but will be credited towards the price of your first fabric kit.  Monthly project patterns and bonus instructions for the Throw Quilt and the Queen Quilt options. Actual shipping fees do apply. This program will start shipping Jan 15, 2010.

    Village Green: Dawn

    Village Green Dawn

     

     

     

     

     

     

     

     

    Village Green: Dusk

    Village Green Dusk

    Village Green: Midnight

    Willage Green Midnight
     
     
     
     
     
     

     

     

     

     

     

     

    Cast your vote now! Send me an email to: Wendy@hearttohandonline.com

    Title it: Thimbleberries 2010 Vote
    And vote for your favorite color way: Dawn, Dusk or Midnight.
    I look forward to hearing from you!
    Happy Day!
    Wendy

    Pumpkin Party Time

    September 7th, 2009

    Pumpkin Party

    Sure, it is still September, but now is the time to get your Fall and Halloween decorations sewn up for next month.  Here are a couple of options for you!

    A great show and tell from Drusilla Fox.  She is a member of our All Through the Year Small Quilts Club.  She sent me some wonderful pictures and I just had to share this one with you!  

    Drusilla writes: “Thank you- I added an extra pumpkin as I needed a bigger piece of fabric. I used a fusion from Robert Kaufman. My batting was a  cotton low loft from Mountain mist. I can’t wait for the October kit!!”  You sure did a wonderful job Drusilla.

    You too can join the Small Quilts Club or simply buy this fun pattern.  The choice is yours!
    SpideyHere is another wonderful pattern or kit.  Spidey, he’s a quilt as you go table topper or wall hanging designed by Silk Road Creations.  He is VERY easy and you can finish him in just a couple of hours!
    Send us your photos for more show and tell!
    Happy Day!
    Wendy

     

    Table Runner of the Month Club

    May 21st, 2009

    Table Runners

    The Jeri Kelly Table runner of the month club is now beginning. Every Month we will offer a fabric kit for the table runner collection based on Jeri’s Book: “Every Month”. You can pick and choose the table runners you want to make or you can sign up for the year long program and save. You MUST own the book to participate. The book costs a one time fee of $24.00 and includes 12 patterns plus a place mat pattern that coordinates with the sets. The fabric kit includes everything you need for backing, binding and quilt top. For each table runner, you will need to supply 1 yard of Steam A Seam II - LIGHT and 17″ x 44″ Low Loft Batting (available here on the web site).Year Long Program: Sign-up for a year, start anytime, you will receive 1 book (when you order it) and 12 fabric kits over the next 12 months. You will be charged $12.99 each month plus shipping. Your first kit for the current month will be sent right away and all subsequent kits will be sent by the second week of each month. Because these kits are seasonal,we will send you the June kit in May so you have time to sew and complete the kit for the next month.

     If you have any questions, do not hesitate to let me know!

    Happy Day!

    Wendy

    Saturday Breakfast Club

    May 7th, 2009

    Table TopperDo you need a reason to get up in the morning or add bounce to your day? We think the Heart to Hand Breakfast Club will provide a great start to your day. Breakfast Club offers a breakfast treat, and coffee or tea, along with a Quilter’s recipe (pattern). The Breakfast Club patterns are designed for your dining (quilting) pleasure. Just bring in your sewing machine and tools along with a “Fabric Cinnamon Roll”. The size of the Fabric Cinnamon Rolls will depend on whether you are making a table runner or a king size quilt.

    The staff at Heart to Hand is available during normal shop hours if you need assistance selecting fabrics for your Fabric Cinnamon Roll.

    Meets: May 9th
    Time: 11:00 to 4:30
    Cost: $35

    Buddy Special! Which is 20% off your class fee when you bring a buddy to take the class too. Register online or call the shop: 503-230-9075.  You MUST register by Friday at 2:00pm so we can have your treats waiting for you! 

     

     

    This picture is of the Eggs Benedict 30″ x 35″ table topper.  The great thing about this project is you use 2 1/2″ strips and can make 4 place mats, a table topper, A wall quilt, a lap quilt, a full/queen or a king all from the same pattern that we give you. So pick your project and come join us this Saturday.

    Sharyle has an out of town engagement, and so Beth and I will be team teaching this class.  Sharyle will return in June to teach Grannies Granola.  June 13th.

    Happy Day!

    Wendy

    Fabric Blowout Special

    May 4th, 2009

    Heart To Hand Needle Case

    May is our Anniversary month Beth, Dean and I have some special sales scheduled for you all month.  This week it is Buy two yards of fabric and get one free.  See the details below.

    We also have special projects scheduled for this month.  The first one is this adorable Heart To Hand Needle Case.  From White Sewing comes this cute project. Take a traditional log cabin square and transform it into this charming and handy needle case. It’s fun…and it’s easy to make! Our kit includes fabric to make the case, felt, and muslin. You supply the leftover batting or flannel, and buttons. We will include a free copy of the pattern and templates. We are offering a variety of color options. Inside Needle Case

    It’s Fabric Sale Time!!!

    We have a lot of fabrics that we need to clear out so we can purchase new ones. This week we are offering a buy two yards of fabric and get one free sale.  Limited to stock on hand. Put a total of three yards of fabric in your cart, and the server will charge you for the three but Susan will make the correction when she processes your order.  You will need to pay regular shipping on all fabric.

    You can find all our fabrics here.

    Happy Day!

    Wendy

    Quilting Book Sale!!

    April 28th, 2009

    More Fat Quarter Quilts

     We have a lot of books that we need to clear out, we know you can get books for less money at other book dealers so we are going to eliminate our book section. We are offering a buy two get one free sale on books. Buy any two books and get a third of equal or lesser value for FREE. Limited to stock on hand.

    Online: Put three books in your cart, and the server will charge you for the three but Susan will make the correction when she processes your order. You do need to pay shipping on all three books. Order online at www.hearttohandonline.com 

    At the Shop:  Visit us and mention this sale!

     Sale runs through May 5th. Hundreds of books to choose from, pictured is just an example of what we have to offer.

    Heart To Hand Quilt Shop
    412 Beavercreek Road
    Suite 607
    Oregon City, OR 97045
    503-230-9075
    Or visit us on the web: www.hearttohandonline.com

    Open: Tuesdays: 11:00am to 9:00pm Fridays 10:00am to 2:00pm Saturdays 10:00am to 5:00 pm.

    Happy Day!

    Wendy

    « Previous Entries