Subscriber-Only Content; You must be a PW subscriber to access the Table-of-Contents Database.

Subscribers can click the "login" button below to access the Table-of-Contents Database. (If you have not done so already, you will need to set up your digital access by going here.)

Or for immediate access you can click the "subscribe" link below.

PW “All Access” site license members have access to PW’s subscriber-only website content. Simply close and relaunch your preferred browser to log-in. To find out more about PW’s site license subscription options please email: pw@pubservice.com.

If you have questions or need assistance setting up your account please email pw@pubservice.com or call 1-800-278-2991 (U.S.) or 1-818-487-2069 (all other countries) , Monday-Friday between 5am and 5pm Pacific time for assistance.

For any other questions about PublshersWeekly.com, email service@publishersweekly.com.

Login or

Forever Mine

Erin Nicholas. Forever, $7.99 mass market (352p) ISBN 978-1-4555-3967-3

Maya Goodwin lives life without restraint, passionately throwing herself into work, play, and love. Even when an arm injury halts her career as a police officer, she keeps pushing to get what she wants. Dr. Alex Nolan, a renowned expert in genetic disorders, is never reckless , but with Maya, he discovers his wilder side. At first he wants Maya to teach him about superheroes and martial arts so that he can bond with his newfound daughter, Charli, but as he gets to know Maya, Alex realizes life is messy and can’t be kept in compartments. With Maya’s help, Alex shows Charli that even with hemophilia she can have fun, as long as she is careful. Nicholas successfully weaves facts about hemophilia into conversations without being overly preachy. At its heart, this contemporary romance is about families—the family of friends that Maya has assembled and the family Alex is trying to put together with Charli and her mother—and how the two blend together. This fun and flirty contemporary romance is a fresh and engaging take at the opposites-attract trope, with a lovable cast. Agent: Elizabeth Winick Rubinstein, McIntosh & Otis. (Apr.)

Reviewed on 03/24/2017 | Details & Permalink

show more
Crazy for You

Rachel Lacey. Forever, $7.99 mass market (336p) ISBN 978-1-4555-3756-3

Long before landscaper Emma Rush’s brother died in the service of his country, she felt a strong attraction to his best friend, Ryan Blake. Now Ryan has returned to Haven, N.C., as a partner in Off-the-Grid Adventures, and he seems ready to settle down after a decade away. Emma can’t seem to get him out of her mind or her heart. Once she decides to liven up her dating life, Ryan has a hard time letting go of his promise to Emma’s brother to protect her, but not date her. However, his resistance begins to crumble as he realizes that Emma has grown into a confident and creative woman. Their love story isn’t particularly complicated or surprising, but readers will enjoy watching Lacey build compelling characters who speak like real people and interact with friends and family, rather than living in a “couple bubble.” Lacey’s small-town romance is a perfect weekend read. Agent: Sarah Younger, Nancy Yost Literary Agency. (Apr.)

Reviewed on 03/24/2017 | Details & Permalink

show more
Unbuttoned: A History of Mackenzie King’s Secret Life

Christopher Dummitt. McGill-Queen’s Univ. (CDC, U.S. dist.; GTW, Canadian dist.), $34.95 (320p) ISBN 978-0-7735-4876-3

More than a revealing portrait of Canada’s longest-serving prime minister, Dummitt’s (The Manly Modern) cultural critique insightfully examines the way changing perceptions of William Lyon Mackenzie King reflect broad changes in North American culture. When King died in 1950, few Canadians knew of his colorful private life. Modern Canadians are likely to be quite aware of the King’s interest in the occult and his other, more lurid, hobbies. The text reveals how King’s executors’ collective decision not to destroy King’s diaries as he had requested left a treasure trove of research material that would delight historians and titillate the general public. But the other half of the story is how Canada became a nation whose citizens lost their sense of deference for those in positions of power. Documents alone are not history, and narrative requires human input, Dummitt writes; the picture Canadians have of King today was shaped by those who were entrusted with King’s diaries and the gradually liberalizing environment in which they worked. Dummitt provides an interesting, if sometimes disapproving, glimpse of the human processes involved in creating history. (May)

This review has been corrected to fix a misspelling in the author's name.

Reviewed on 03/24/2017 | Details & Permalink

show more
Conflict Is Not Abuse: Overstating Harm, Community Responsibility, and the Duty of Repair

Sarah Schulman. Arsenal Pulp (Consortium, U.S. dist.; UTP, Canadian dist.), $19.95 trade paper (300p) ISBN 978-1-55152-643-0

In this incisive, refreshing work, Schulman (The Gentrification of the Mind), a novelist, documentarian, and social critic, documents how those with power and privilege increasingly tend to conflate any challenge to their authority or ways of thinking with being attacked. Exploring the overlap between the political and personal, Schulman poses thoughtful examples of how conflict and disagreement—especially when marginalized voices try to enter the commons—are met with false accusations of abuse and claims of victimization by those who may feel offended but are not harmed. Unafraid to tackle challenging subjects such as trigger warnings and safe spaces, Schulman also ruminates on what she sees as society’s collective failure to prioritize the teaching of basic problem-solving and relationship skills, resulting in a culture of knee-jerk escalation that, when expressed through physical or emotional force (as in interpersonal abuse and military conflicts) obscures the structural roots of interpersonal and societal breakdown. Like classic works of the early women’s and gay liberation movements, this thought-provoking title expertly analyzes power dynamics inherent to interactions as small-scale as spousal violence and as large-scale as the increasing criminalization of HIV-positive Canadians and the 2014 Israeli assault on Gaza. A concluding call to address personal and social conflicts without state intervention via police and courts caps off a work that’s likely to inspire much discussion. (Oct.)

Reviewed on 03/24/2017 | Details & Permalink

show more
The Fate of the West: The Battle to Save the World’s Most Successful Political Idea

Bill Emmott. Economist, $28 (256p) ISBN 978-1-61039-780-3

Former Economist magazine editor-in-chief Emmott surveys rising feelings of decline and resurgent nationalism in the West. This informed, eloquent, but superficial overview of recent global affairs maintains the West is being challenged from within for good reason, having failed to deliver fairness, prosperity, and security to all citizens. Emmott makes the future of equality a central subject, calling it the West’s most successful political idea, but his musings on the subject are windy and nebulous. Openness, including open borders, is a second theme. For Emmott, Brexit feels inconceivable, and Trump’s presidential victory reflects deep social pessimism and self-destructiveness. In Emmott’s view, migrants offer a welcome, necessary injection of youth and fresh ideas to closed, often fearful societies with an aging citizenry. With professed optimism, he offers antidotes for the West’s angst and self-interest. But from recognizing human capital’s importance in the digital age to using education as the best means of achieving equality, many of his conclusions seem like old hat. Emmott leaves out the West’s divisive “culture wars” altogether, flattening his inquiry. Adhering strictly to globalization shibboleths, Emmott reminds readers of the vast shared benefits in free-trade agreements and international collaboration that have assisted world order and wealth since WWII. (May)

Reviewed on 03/24/2017 | Details & Permalink

show more
Down and Out in the New Economy: How People Find (or Don’t Find) Work Today

Ilana Gershon. Univ. of Chicago, $25 (304p) ISBN 9780226452142

Gershon (The Breakup 2.0), an associate anthropology professor at Indiana University, wants to help readers “see more clearly the challenges of job searching and... make more thoughtful employment decisions,” but readers expecting useful advice on landing that next new job should look elsewhere. This is fundamentally a book that observes—at a distance—how “everything about job searching has changed.” That change is the book’s foundation, as it focuses on how people have shifted from offering skills to the job marketplace to offering themselves as a “business of one.” Gershon did plenty of homework (conducting 165 interviews and attending 54 related workshops), more than enough to explain the concept of personal branding, being “unique in the right way,” and successfully communicating those qualities via various online outlets. As the author discusses some concepts—informational interviewing, for example—her points become a little muddy. After a discussion of LinkedIn, for instance, it’s anyone’s guess whether Gershon thinks it’s a good resource or not. Still, she introduces concepts that, while perhaps not directly helpful, may still assist readers in thinking differently about jobs and what they mean for one’s future rather than just the present. (May)

Reviewed on 03/24/2017 | Details & Permalink

show more
The New Urban Crisis: How Our Cities Are Increasing Inequality, Deepening Segregation, and Failing the Middle Class—and What We Can Do About It

Richard Florida. Basic, $28 (336p) ISBN 978-0-465-07974-2

Urban studies expert Florida (The Great Reset), who first gained acclaim studying the ascendancy of the “creative class,” now explores the broader effects of its rise in this timely, data-rich, and accessible work. Florida notes that while people fare better economically in large, dense cities, those cities are also experiencing rising inequality, housing costs, and economic and racial segregation. Moreover, these problems are spreading to the suburbs, the onetime model for improved living standards. These divisions are particularly strong in “superstar cities” such as New York, San Francisco, and London, where concentrated wealth makes the urban core inaccessible to all but the most privileged people. A series of maps show how service workers’ neighborhoods have been steadily pushed to the periphery. This worrisome dynamic isn’t confined to North America and Western Europe, as Florida’s research shows. He recommends changing tax schemes to reflect the value of urban land, rather than the property developed on top of it; intensifying support for mass transit; increasing affordable rental housing in urban core areas; and focusing on schools and better wage conditions in the poorest neighborhoods. These prescriptions are all sound but—in the current political climate—particularly difficult to achieve. Agent: Jim Levine, Levine Greenberg Rostan Literary Agency. (Apr.)

Reviewed on 03/24/2017 | Details & Permalink

show more
Life with Forty Dogs: Misadventures with Runts, Rejects, Retirees, and Rescues

Joseph Robertia. Alaska Northwest, $16.99 trade paper (230p) ISBN 978-1-943328-91-8

When he’s not writing for the Alaska Dispatch News, Robertia can often be found with and his wife, Cole, and their mushing dogs, training for or participating in Alaska’s many competitions, which often cover hundreds of miles in temperatures below -40°F. Here, he shares his experience in integrating, training, and living with so many high-energy canines in this delightful ode to mushing and all it entails. Alongside profiles of his dogs (such as Tatika, a German shepherd who once ate an entire Thanksgiving turkey), Robertia recounts tales of rescuing horse carcasses for feed, getting lost in subzero temperatures in the Alaska wilderness, and encountering less-than-reputable breeders and mushers. Tales of nursing sick or injured rescues back to health, integrating them into the pack, and enduring the emotionally painful death of one of his dogs are sure to resonate with dog-lovers, as is Robertia’s wry, occasionally caustic wit. This is more than just another valentine to canines: it’s an insightful and occasionally heartrending account of life with a team of working dogs. It’s sure to resonate with Alaskans as well as those in the lower 48. B&w photos. (Apr.)

Reviewed on 03/24/2017 | Details & Permalink

show more
A Speck in the Sea: A Story of Survival and Rescue

John Aldridge and Anthony Sosinski. Weinstein, $27 (280p) ISBN 978-1-60286-328-6

A Long Island fisherman spends 12 hours bobbing like a buoy in the Atlantic Ocean in this hair-raising true story. Childhood friends Aldridge and Sosinski, who co-own the lobster boat Anna Mary, detail their incredible story, which took place 40 miles off the coast of Montauk in the summer of 2013. The trip began just like any other, with the authors, along with third crew member Mike Migliaccio, setting out their traps aboard the 44-foot commercial fishing boat Anna Mary the evening of July 22, 2013. In the early hours of July 23, as Sosinski and Migliaccio slept, Aldridge fell overboard while recalibrating the boat’s new refrigeration system. Told from multiple viewpoints, the book takes readers into the water with Aldridge as he shares first-person accounts of shark encounters and the mind games he played while clinging to his rubber boots to stay afloat. Sections written in the third person recount the immense battle the U.S. Coast Guard, search-and-rescue aircraft, and a slew of volunteers (including singer Jimmy Buffet) waged against time to find Aldridge before the ocean claimed him. A rich backstory—including complicated personal lives and deep family histories—adds depth to this page turner. (May)

Reviewed on 03/24/2017 | Details & Permalink

show more
Too Much and Not the Mood: Essays

Durga Chew-Bose. FSG Original, $15 trade paper (240p) ISBN 978-0-374-53595-7

Twists in language and heady cultural references elevate Chew-Bose’s debut above the recent crop of personal essay collections by young writers. Focusing on the complications of growing up and establishing oneself, the essays explore what it means to be a brown girl in a white world and “the beautiful dilemma of being first-generation” Canadian. The collection reads like a writer’s notebook, mixing the intimacy of a personal journal with formal experiments. Random memories—a dead squirrel in the yard of her childhood home, a past conversation with a friend—lead way to grander topics, such as marriage, death, or “the dicey irreparableness of being.” Chew-Bose maintains an ambitious and inventive style, employing long lists of sensations to describe feelings and using parentheticals to address the reader directly. She is also a veritable dictionary of contemporary culture. Short ruminations on a painting by Swedish painter Karin Mamma Andersson, singer Nina Simone’s “Ain’t Got No,” or journalist John Gregory Dunne’s memoir Monster pop up in the author’s streams of consciousness. Evocative phrases and bold metaphors such as “memory blistering,” “scrapped corner of our imaginations,” and “writing is a closed pistachio shell” color this take on the modern experience. (Apr.)

Reviewed on 03/24/2017 | Details & Permalink

show more
X
Stay ahead with
Tip Sheet!
Free newsletter: the hottest new books, features and more
X
X
X
Email Address

Password

Log In Lost Password

Parts of this site are only available to paying PW subscribers. Subscribers: to set up your digital access click here.

To subscribe, click here.

PW “All Access” site license members have access to PW’s subscriber-only website content. Simply close and relaunch your preferred browser to log-in. To find out more about PW’s site license subscription options please email: pw@pubservice.com.

If you have questions or need assistance setting up your account please email pw@pubservice.com or call 1-800-278-2991 (U.S.) or 1-818-487-2069 (all other countries), Monday-Friday between 5am and 5pm Pacific time for assistance.

Not Registered? Click here.
EVAL ERROR: syntax error at (eval 2831) line 207, near ""Read more about "$ENV"
Global symbol "$author" requires explicit package name at (eval 2831) line 207.
Global symbol "$html_title" requires explicit package name at (eval 2831) line 211.
Global symbol "$html_title" requires explicit package name at (eval 2831) line 211.
Global symbol "$default_title" requires explicit package name at (eval 2831) line 211.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 212.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 212.
Global symbol "$default_description" requires explicit package name at (eval 2831) line 212.
Global symbol "$meta_keywords" requires explicit package name at (eval 2831) line 213.
Global symbol "$meta_keywords" requires explicit package name at (eval 2831) line 213.
Global symbol "$default_keywords" requires explicit package name at (eval 2831) line 213.
Global symbol "$html_title" requires explicit package name at (eval 2831) line 215.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 216.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 217.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 218.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 219.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 220.
Global symbol "$twitter_description" requires explicit package name at (eval 2831) line 221.
Global symbol "$twitter_description" requires explicit package name at (eval 2831) line 222.
Global symbol "$twitter_description" requires explicit package name at (eval 2831) line 223.
Global symbol "$twitter_description" requires explicit package name at (eval 2831) line 224.
Global symbol "$meta_keywords" requires explicit package name at (eval 2831) line 225.
Global symbol "$html_title" requires explicit package name at (eval 2831) line 227.
Global symbol "$meta_keywords" requires explicit package name at (eval 2831) line 228.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 229.
Global symbol "$last_modified" requires explicit package name at (eval 2831) line 230.
Global symbol "$last_modified" requires explicit package name at (eval 2831) line 231.
Global symbol "$html_title" requires explicit package name at (eval 2831) line 234.
Global symbol "$default_image" requires explicit package name at (eval 2831) line 235.
Global symbol "$meta_description" requires explicit package name at (eval 2831) line 236.
Global symbol "$twitter_creator" requires explicit package name at (eval 2831) line 241.
Global symbol "$twitter_creator" requires explicit package name at (eval 2831) line 242.
Global symbol "$twitter_title" requires explicit package name at (eval 2831) line 244.
Global symbol "$twitter_description" requires explicit package name at (eval 2831) line 245.
Global symbol "$default_image" requires explicit package name at (eval 2831) line 246.
syntax error at (eval 2831) line 260, near "}
 }"
(eval 2831) has too many errors.

Code:
line 1: package tmpevalpackage;
line 2: sub doEval { 
line 3: 	my(@sel,%data,$html_title,$meta_description,$meta_keywords,$default_title,$default_description,$default_keywords,$last_modified);
line 4: 	my($twitter_creator,$twitter_title,$twitter_description);
line 5: 	
line 6: 	$default_title = 'Book Reviews, Bestselling Books & Publishing Business News | Publishers Weekly';
line 7: 	$default_keywords = 'book news, book reviews, bestselling books, book bestsellers, book publishing, best selling books, list of books, book business, publishing business';
line 8: 	$default_description = 'Publishers Weekly is the international news website of book publishing and bookselling including business news, reviews, bestseller lists, commentaries and more.';
line 9: 	
line 10: 	my $default_image = "http://www.publishersweekly.com/images/data/IMG/img/000/000/1-3.PNG";
line 11: 	
line 12: 	# try the topic (or subtopic)
line 13: 	if($LayoutManager::url_resolved_values{'TOPIC_TREE.nickname'}) {
line 14: 		&Database::GetParentRow($LayoutManager::url_resolved_values{'TOPIC_TREE.nickname'},\%data);
line 15: 		if($data{'html_title'}) { $html_title = $data{'html_title'}; };
line 16: 		if($data{'meta_description'}) { $meta_description = $data{'meta_description'}; };
line 17: 		if($data{'meta_keywords'}) { $meta_keywords = $data{'meta_keywords'}; };
line 18: 
line 19: 		# we are in a subtopic get the topic and fill in missing fields
line 20: 		if($LayoutManager::url_values{'TOPIC'}) { 
line 21: 			&Database::Select('TOPIC_TREE','nickname',$LayoutManager::url_values{'TOPIC'},\@sel);
line 22: 			if(@sel == 1) {
line 23: 				&Database::GetRow($sel[0],'TOPIC_TREE',\%data);
line 24: 				if($data{'html_title'} && !$html_title) { $html_title = $data{'html_title'}; }
line 25: 				if($data{'meta_description'} && !$meta_description) { $meta_description = $data{'meta_description'}; }
line 26: 				if($data{'meta_keywords'} && !$meta_keywords) { $meta_keywords = $data{'meta_keywords'}; }
line 27: 			}
line 28: 		}
line 29: 	}
line 30: 
line 31: 	# fill in missing info from page
line 32: 	if($LayoutManager::url_resolved_values{'PAGE.description'}) {
line 33: 		&Database::GetParentRow($LayoutManager::url_resolved_values{'PAGE.description'},\%data);
line 34: 		if(!$html_title) { $html_title = $data{'html_title'}; };
line 35: 		if(!$meta_description) { $meta_description = $data{'meta_description'}; };
line 36: 		if(!$meta_keywords) { $meta_keywords = $data{'meta_keywords'}; };
line 37: 	}
line 38: 	
line 39: 	# article takes precidence over topic and subtopic
line 40: 	if($LayoutManager::url_resolved_values{'ARTICLE.nickname'}) {
line 41: 		&Database::GetParentRow($LayoutManager::url_resolved_values{'ARTICLE.nickname'},\%data);
line 42: 		$html_title = $data{'headline'};
line 43: 		if($data{'title_web'}) { $html_title = $data{'title_web'}; $twitter_title = $data{'title_web'}; };
line 44: 		if($data{'html_title'}) { $html_title = $data{'html_title'}; };
line 45: 		if($data{'abstract_web'}) { $meta_description = $data{'abstract_web'}; $twitter_description = $data{'abstract_web'}; };
line 46: 		if($data{'meta_description'}) { $meta_description = $data{'meta_description'}; };
line 47: 		if($data{'meta_keywords'}) { $meta_keywords = $data{'meta_keywords'}; };
line 48: 		$last_modified = &GetLastModified($data{'pub_date'});
line 49: 		
line 50: 		my($canonical,%topic_data,%sub_topic_data,%issue_data);
line 51: 		if($data{'the_topic'}) {
line 52: 			&Database::GetRow($data{'the_topic'},'TOPIC_TREE',\%sub_topic_data);
line 53: 			&Database::GetParentRow($sub_topic_data{'parent'},\%topic_data);
line 54: 			$canonical = "http://www.publishersweekly.com/pw/by-topic/$topic_data{'nickname'}/$sub_topic_data{'nickname'}/article/$data{'nickname'}.html";
line 55: 		}
line 56: 		else {
line 57: 			if($data{'issue'}) {
line 58: 				&Database::GetRow($data{'issue'},'ISSUE',\%issue_data);
line 59: 				$canonical = "http://www.publishersweekly.com/pw/print/$issue_data{'date'}/$data{'nickname'}.html";
line 60: 			}
line 61: 		}
line 62: 		if($data{'the_photo'}) {
line 63: 			my(%image_data);
line 64: 			&Database::GetRow($data{'the_photo'},'ARTICLE_PHOTO',\%image_data);
line 65: 			if($image_data{'photo__file'}) {
line 66: 				$default_image = "http://www.publishersweekly.com/images/data/$image_data{'photo__file'}";
line 67: 			}
line 68: 		}
line 69: 		if($canonical) {
line 70: 			&Templates::SetMeta("<link rel=\"canonical\" href=\"$canonical\" />");
line 71: 		}
line 72: 	}
line 73: 
line 74: 	# reviews by ISBN
line 75: 	if($LayoutManager::url_values{'ISBN'}) {
line 76: 		my($isbn,@sel,$work,%issue_data);
line 77: 		$isbn = $LayoutManager::url_values{'ISBN'};
line 78: 		
line 79: 		$isbn =~ s/\-//g;
line 80: 		$default_image = "https://booklife.com/image-factory/http/localhost/amazongetcover/$isbn.jpg/w204.jpg";
line 81: 
line 82: 		&Database::Select('WORK_INSTANCE','isbn_std',$isbn,\@sel);
line 83: 
line 84: 		if(@sel) {
line 85: 			$work = $sel[0];
line 86: 			@sel = ();
line 87: 			&Database::Select('REVIEW','book',$work,\@sel);
line 88: 			
line 89: 			# my $root = "images/cached/INGRAM";
line 90: 			# my $row_path = $isbn;
line 91: 			# $row_path =~ s/^(...)(...)(...)(.*)/$1\/$2\/$3/;
line 92: 
line 93: 			# if(-e "/disk02/PW/htdocs/$root/$row_path/$isbn\.jpg"){
line 94: 			#	 $default_image = "http://www.publishersweekly.com/$root/$row_path/$isbn\.jpg";
line 95: 			# }
line 96: 			
line 97: 			if(@sel) {
line 98: 				&Database::FetchRow($sel[0],'REVIEW',\%data);
line 99: 				my($tmp) = $data{'info_line'};
line 100: 				$tmp =~ s/<[^>]+>//g;
line 101: 				$html_title = "$data{'category'} Book Review: $data{'title'} by $tmp";
line 102: 				$meta_description = substr($data{'body'},0,200);
line 103: 				if($data{'pub_date'}) {
line 104: 					$last_modified = &GetLastModified($data{'pub_date'});
line 105: 				}
line 106: 				else {
line 107: 					&Database::GetRow($data{'issue-UNRESOLVED'},'ISSUE',\%issue_data);
line 108: 					$last_modified = &GetLastModified($issue_data{'date'});
line 109: 				}
line 110: 
line 111: 				$twitter_creator = '@publisherswkly';
line 112: 				$twitter_title = $data{'title'};
line 113: 				$twitter_description = $meta_description;
line 114: 			}
line 115: 		}
line 116: 	}
line 117: 	
line 118: 	# reviews
line 119: 	if($LayoutManager::url_resolved_rows{'REVIEW.nickname'}) {
line 120: 		my(%issue_data);
line 121: 		&Database::FetchRow($LayoutManager::url_resolved_rows{'REVIEW.nickname'},'REVIEW',\%data);
line 122: 		my($tmp) = $data{'info_line'};
line 123: 		$tmp =~ s/<[^>]+>//g;
line 124: 		$html_title = "$data{'category'} Review: $data{'title'} by $tmp";
line 125: 		$meta_description = substr($data{'body'},0,200);
line 126: 		
line 127: 		$twitter_creator = '@publisherswkly';
line 128: 		$twitter_title = $data{'title'};
line 129: 		$twitter_description = $meta_description;
line 130: 		
line 131: 		if($data{'pub_date'}) {
line 132: 			$last_modified = &GetLastModified($data{'pub_date'});
line 133: 		}
line 134: 		else {
line 135: 			&Database::GetRow($data{'issue-UNRESOLVED'},'ISSUE',\%issue_data);
line 136: 			$last_modified = &GetLastModified($issue_data{'date'});
line 137: 		}
line 138: 
line 139: 		if($data{'book-UNRESOLVED'}){
line 140: 			my (%instance_data);
line 141: 			&Database::GetRow($data{'book-UNRESOLVED'},'WORK_INSTANCE',\%instance_data);
line 142: 			
line 143: 			my $tmpisbn = $instance_data{'isbn_std'};
line 144: 			$tmpisbn =~ s/\-//g;
line 145: 			$default_image = "https://booklife.com/image-factory/http/localhost/amazongetcover/$tmpisbn.jpg/w204.jpg";
line 146: 
line 147: 			# my $root = "images/cached/INGRAM";
line 148: 			# my $row_path = $instance_data{'isbn_std'};
line 149: 			# $row_path =~ s/^(...)(...)(...)(.*)/$1\/$2\/$3/;
line 150: 	
line 151: 			# if(-e "/disk02/PW/htdocs/$root/$row_path/$instance_data{'isbn_std'}\.jpg"){
line 152: 			# 	$default_image = "http://www.publishersweekly.com/$root/$row_path/$instance_data{'isbn_std'}\.jpg";
line 153: 			# }
line 154: 		}
line 155: 	}
line 156: 
line 157: 	if($Templates::in{'channel'} && $Templates::in{'podcast'}) {
line 158: 		my(%podcast_data);
line 159: 		&Database::GetRow($Templates::in{'podcast'},'PODCAST',\%podcast_data);
line 160: 		$html_title = $podcast_data{'title'};
line 161: 		if($podcast_data{'description'}) { $meta_description = $podcast_data{'description'}; }
line 162: 		if($podcast_data{'image__file'}) {
line 163: 			$default_image = "http://www.publishersweekly.com/images/data/$podcast_data{'image__file'}";
line 164: 		}
line 165: 		$last_modified = &GetLastModified($podcast_data{'date_posted'});
line 166: 	}
line 167: 	
line 168: 	if($Templates::path =~ /\/bookit\//) {
line 169: 		if($Templates::in{'record'}) {
line 170: 			my(%data);
line 171: 			&Database::GetRow($Templates::in{'record'},'MARKETING_CALL',\%data);
line 172: 			$html_title = "$data{'headline'} | Publishers Weekly";
line 173: 		}
line 174: 		else {
line 175: 			$html_title = "BookIt | Publishers Weekly";	
line 176: 		}
line 177: 	}
line 178: 	if($Templates::path =~ /\/newsbrief\//) {
line 179: 		if($Templates::in{'record'}) {
line 180: 			my(%data);
line 181: 			&Database::GetRow($Templates::in{'record'},'NEWS_BRIEFS',\%data);
line 182: 			$html_title = "$data{'headline'}";
line 183: 			$twitter_title = "$data{'headline'}";
line 184: 			$meta_description = "$data{'abstract'}";
line 185: 			$twitter_description = "$data{'abstract'}";
line 186: 			if($data{'image__file'}) {
line 187: 				$default_image = "http://www.publishersweekly.com/images/data/$data{'image__file'}";
line 188: 			}
line 189: 		}
line 190: 		else {
line 191: 			$html_title = "BookIt | Publishers Weekly";	
line 192: 		}
line 193: 	}
line 194: 
line 195: 	if($Templates::path =~ /\/charlie\//) {
line 196: 			$html_title = "Publishers Weekly's Tribute to Freedom of Expression";
line 197: 			$twitter_title = "Publishers Weekly's Tribute to Freedom of Expression";
line 198: 			$meta_description = "Find out how to participate in a special section of the January 19 issue of Publishers Weekly and raise money for international nonprofits dedicated to freedom of expression.";
line 199: 			$twitter_description = "Find out how to participate in a special section of the January 19 issue of Publishers Weekly and raise money for international nonprofits dedicated to freedom of expression.";
line 200: 	}
line 201: 	
line 202: 	if($Templates::path =~ /\/authorpage\//) {
line 203: 		my $author = $LayoutManager::url_values{'AUTHORNAME'};
line 204: 		$author =~ s/-/ /g;
line 205: 		$author =~ s/([\w']+)/\u\L$1/g;
line 206: 		$html_title = "Books by $author and Complete Book Reviews";
line 207: 		$meta_description = "Read more about "" and other books by $author";
line 208: 	}
line 209: 
line 210: 	# use defailts is nothing else found
line 211: 	if(!$html_title) { $html_title = $default_title; };
line 212: 	if(!$meta_description) { $meta_description = $default_description; };
line 213: 	if(!$meta_keywords) { $meta_keywords = $default_keywords; };
line 214: 	
line 215: 	$html_title =~ s/\"//g;
line 216: 	$meta_description =~ s/\"//g;
line 217: 	$meta_description =~ s/<\/[^>]*>//g;
line 218: 	$meta_description =~ s/<[^>]*>//g;
line 219: 	$meta_description =~ s/<\/[^>]*//g;
line 220: 	$meta_description =~ s/<[^>]*//g;
line 221: 	$twitter_description =~ s/<\/[^>]*>//g;		
line 222: 	$twitter_description =~ s/<[^>]*>//g;
line 223: 	$twitter_description =~ s/<\/[^>]*//g;		
line 224: 	$twitter_description =~ s/<[^>]*//g;		
line 225: 	$meta_keywords =~ s/\"//g;
line 226: 	
line 227: 	&Templates::SetTitle($html_title);
line 228: 	&Templates::SetMeta("<meta name=\"keywords\" content=\"$meta_keywords\">");
line 229: 	&Templates::SetMeta("<meta name=\"description\" content=\"$meta_description\">");
line 230: 	if($last_modified) {
line 231: 		&Templates::SetMeta("<meta http-equiv=\"last-modified\" content=\"$last_modified\">");	
line 232: 	}
line 233: 	&Templates::SetMeta("<meta property=\"og:type\" content=\"article\"/>"); 
line 234: 	&Templates::SetMeta("<meta property=\"og:title\" content=\"$html_title\"/>"); 
line 235: 	&Templates::SetMeta("<meta property=\"og:image\" content=\"$default_image\"/>"); 
line 236: 	&Templates::SetMeta("<meta property=\"og:description\" content=\"$meta_description\"/>");
line 237: 	&Templates::SetMeta("<meta property=\"og:site_name\" content=\"PublishersWeekly.com\"/>"); 
line 238: 
line 239: 	&Templates::SetMeta("<meta name=\"twitter:card\" content=\"summary\"/>");		
line 240: 	&Templates::SetMeta("<meta name=\"twitter:site\" content=\"\@publisherswkly\"/>");		
line 241: 	if($twitter_creator){
line 242: 		&Templates::SetMeta("<meta name=\"twitter:creator\" content=\"$twitter_creator\"/>");			
line 243: 	}
line 244: 	&Templates::SetMeta("<meta name=\"twitter:title\" content=\"$twitter_title\"/>");
line 245: 	&Templates::SetMeta("<meta name=\"twitter:description\" content=\"$twitter_description\"/>");			
line 246: 	&Templates::SetMeta("<meta name=\"twitter:image\" content=\"$default_image\"/>"); 
line 247: 
line 248: 	
line 249: 	sub GetLastModified {
line 250: 		my($timestamp) = @_;
line 251: 		
line 252: 		my($mod);
line 253: 		
line 254: 		if(length($timestamp > 8)) {
line 255: 			$mod = substr($timestamp,0,4) . '-' . substr($timestamp,4,2) . '-' . substr($timestamp,6,2);
line 256: 		}
line 257: 		
line 258: 		return $mod;
line 259: 	}
line 260:  };
line 261: &doEval();
line 262: 1;