text:
Q: Validate textbox if corresponding checkbox is checked I found the following post (textbox must not be empty if checkbox is ticked) and it relates to what I want to do with my page. But how do you make this work if the checkboxes and texboxes are generated dynamically so you don't know the final number that will be present? Sometimes I have 3 checkbox and textbox pairs and other times I have 25 or more. How is this done with jquery?
I created this fiddle at https://jsfiddle.net/v2vzs3ew/ with code for html and jquery. After reading quite a bit about jquery and looking at many different examples I came up with this but am not sure why it does not work, at least partially.
$(document).ready(function() {
  $("#button").click(function() {
   if ($(".chk").each(":checked") && $(".parcel").val().length <= 0)
    alert("You must input acres for all parcels checked.")
  });
});

A: There are multiple ways to grab all checkboxes and textboxes using JQuery.
A simple solution for checkboxes, off the top of my head, would be to use the :checkbox selector with an .each() loop. This will let you do whatever you want with every checkbox on the page.
$(':checkbox').each(function() {
    //$(this) is your checkbox object
});

For a full list of jQuery selectors, you can find them at http://api.jquery.com/category/selectors/
There are a ton of different ways jQuery can handle your situation, so do some research or post some code examples if you have a more specific scenario.

redpajama_set_name: RedPajamaStackExchange


text:
Cawl Cennin é a sopa de alho-porro tradicionalmente preparada no País de Gales no dia 1 de Março, dia de São David, padroeiro. Esta data também assinala a vitória do rei Cadwallader sobre os saxões, no século V. Apesar de ser uma sopa muito simples, é interessante notar que o alho-porro é o ingrediente principal de sopas típicas também na Escócia e Irlanda.

Para preparar Cawl Cennin começa por se fritar bacon até largar a sua gordura; tira-se o bacon frito da panela e põe-se a escorrer. Na gordura do bacon salteiam-se rodelas de alho-porro (apenas a parte branca) e depois junta-se caldo de galinha e deixa-se cozer; depois de cozido, transforma-se num puré, acerta-se o tempero com sal e pimenta e deixa-se apurar. Serve-se com pedaços do bacon frito e de rodelas de alho-porro.

Culinária do País de Gales
Sopas

redpajama_set_name: RedPajamaWikipedia


text:
Home / Books / The Encyclopedia of American Animated Television Shows by David Perlmutter
The Encyclopedia of American Animated Television Shows by David Perlmutter
Hardcover:?802 pages
Publisher:?Rowman & Littlefield Publishers (May 4 2018)
Category Books Tag Television Encyclopedias
ABANDONED IN BERLIN by John R. Cammidge
Once consigned almost exclusively to Saturday morning fare for young viewers, television animation has evolved over the last several decades as a programming form to be reckoned with. While many animated shows continue to entertain tots, the form also reaches a much wider audience, engaging viewers of all ages. Whether aimed at toddlers, teens, or adults, animated shows reflect an evolving expression of sophisticated wit, adult humor, and a variety of artistic techniques and styles.
The Encyclopedia of American Animated Television Series encompasses animated programs broadcast in the United States and Canada since 1948. From early cartoon series like Crusader Rabbit, Rocky and His Friends, and The Flintstones to 21st-century stalwarts like The Simpsons, South Park, and Spongebob Squarepants, the wide range of shows can be found in this volume. Series from many networks?such as Comedy Central, the Disney Channel, Nickelodeon, and Cartoon Network? are included, representing both the diversity of programming and the broad spectrum of viewership. Each entry includes a list of cast and characters, credit information, a brief synopsis of the series, and critical analysis. Additional details include network information and broadcast history.
The volume also features one hundred images and an introduction containing a historical overview of animated programming since the inception of television. Highlighting an extensive array of shows from Animaniacs and Archer to The X-Men and Yogi Bear, The Encyclopedia of American Animated Television Series is an essential resource for anyone interested in the history and evolution of this constantly expanding art form.
Man Mission by Eytan Uliel

redpajama_set_name: RedPajamaCommonCrawl


text:
Jacob Korn
You & Me by Jacob Korn
It might not be overstated to call "You & Me", the debut album by Jacob Korn, long overdue. Ever since the Dresden resident decided to focus more on the House side of electronic music in 2007 he released music that is equally good as it is promising. With records out on labels like Running Back, Dolly and of course his home base Uncanny Valley he's been fueling expectations for a long play record.
Since he has been playing around with electronic music for the first time in the mid-
nineties, Jacob has always been very much into producing together with his pals. So it was only natural that "You & Me" turned out to be an album that summarizes a lot of the collaborations that happened over all the years. Whether it was with an artist who played in his hometown Dresden or with someone who showed him around the town he was performing his live set at, Jacob never missed the opportunity to get together inside a studio and just jam along. Those sessions not only resulted in a lot of friendships but also in a string of music that take House music to all its edges. A track like the dark and dirty "Heteronomous" with Uncanny Valley fellow Sneaker lines up alongside the bright and sunny anthem "Punta Del Este" together with Belgium's San Soda. Artists like Christopher Rau or Mr Raoul K add their trademark sounds but there is always that specific approach of Jacob Korn that connects the tracks. But besides that conceptual background: "You & Me" is an album, which is here to extend the listener's summer.
The concept of collaboration is even expanded on the cover artwork. A team of seven graphic artists led by Johannes Timbernagel interpreted the same template of Jacob's face in their specific style. To bring them all together Johannes texturized a 3D-Model of Jacob's head with a collage of all the drawings.
Jacob Korn feat. Johannes Held - Mit der naechsten Welle from Uncanny Valley Records on Vimeo.
UVLP01
Stefan Betke
Idea & Illustrations: Johannes Timpernagel
Modelling: Ronny Schmidt
Illustration: Valérie-Françoise Vogt, Robert Pohle, Sebastian Huber, Uli Henrik Streckenbach, Anna Jaszpataki
worldwide by Clone Distribution:
Buy Vinyl
Chez Emile Records Lyon
Clone D/G/T/L
Juno Download
Whatpeopleplay


"Portugal's Guerrilla Wars in Africa: Lisbon's Three Wars in Angola, Mozambique and Portuguese Guinea 1961-74"
Though hardly on the scale of hostilities being fought in South East Asia, the casualty count by the time a military coup d'état took place in Lisbon in April 1974 was significant. It was certainly enough to cause Portugal to call a halt to violence and pull all its troops back to the Metropolis. Ultimately, Lisbon was to move out of Africa altogether, when hundreds of thousands of Portuguese nationals returned to Europe, the majority having left everything they owned behind.
Independence for all the former colonies, including the Atlantic islands, followed soon afterwards.
Lisbon ruled its African territories for more than five centuries, not always undisputed by its black and mestizo subjects, but effectively enough to create a lasting Lusitanian tradition. That imprint is indelible and remains engraved in language, social mores and cultural traditions that sometimes have more in common with Europe than with Africa.
Today, most of the newspapers in Luanda, Maputo - formerly Lourenco Marques - and Bissau are in Portuguese, as is the language taught in their schools and used by their respective representatives in international bodies to which they all subscribe. Indeed, on a recent visit to Central Mozambique in 2013, a youthful member of the American Peace Corps told this author that despite having been embroiled in conflict with the Portuguese for many years in the 1960s and 1970s, he found the local people with whom he came into contact inordinately fond of their erstwhile 'colonial overlords'.
As a foreign correspondent, Al Venter covered all three wars over more than a decade, spending lengthy periods in the territories while going on operations with the Portuguese army, marines and air force.
In the process he wrote several books on these conflicts, including a report on the conflict in Portuguese Guinea for the Munger Africana Library of the California Institute of Technology.
Portugal's Guerrilla Wars in Africa represents an amalgam of these efforts. At the same time, this book is not an official history, but rather a journalist's perspective of military events as viewed by somebody who has made a career of reporting on overseas wars, Africa's especially.
Venter's camera was always at hand; most of the images used between these covers are his.
In 1961, Portugal found itself fighting a war to retain its colonial possessions and preserve the remnants of its empire. The country was totally unprepared, as its leaders never believed that what had happened in other parts of Africa could happen to them.
Portugal had been in Africa for almost five centuries, longer by far than any other colonial power, and its notion of the permanence of its empire drove it to defend its colonies or ultramar at all costs. For this small European nation, the importance of the colonies was captured in an editorial by Marcello Caetano in O Mundo Português (Portuguese World) that appeared in 1935: "Africa is for us a moral justification and a raison d'être as a power. Without it we would be a small nation; with it, we are a great country."
While other European states were granting independence to their African possessions, Portugal chose to stay and fight despite the small odds for success.
When war was thrust upon it by the March 1961 uprisings in the north of Angola, it opened a new chapter in the lives of its citizens and the many others who would become involved in the 13-year conflict – one that would extend to three theaters, Angola, Guinea, and Mozambique, and exhaust the treasure and manpower of the country.
The Portuguese army had virtually no experience or training for this sort of war and little or no experience of any sort in serious fighting. Few had seen a shot fired in anger. On the other hand, they were very brave and had the ability to live and fight under conditions that would have been intolerable to other European troops. They could go for days on a bag of dried beans, some chickpeas and possibly a piece of dried codfish, all to be soaked in any water that could be found – probably infected with bilharzia – then cooked and eaten in the evening. At night they would tie themselves up in trees to sleep. They were capable of covering on foot and through elephant grass and thick bush distances of over a hundred miles over a three-day patrol. They endured heat and humidity that took your breath away. The insects attacked them in "airborne waves" and poisonous snakes were constantly slithering underfoot. They learned how to fight and did so successfully for thirteen years across their three fronts. It was a remarkable achievement for a nation of such modest resources.
Al Venter was attracted to this war during the late 1960s and recorded his first experiences and observations on Angola in his "The Terror Fighters" (1969). Subsequent reporting on the other two theaters produced "Portugal's War in Guinea-Bissau" (1973) and "The Zambezi Salient" (1975).
He immersed himself in these wars, writing from personal observation at the center of the action. His combat descriptions are riveting and remind the reader of General George Patton's famous observation, "Compared to war all other forms of human endeavor shrink to insignificance."
This book brings together his earlier experiences and heretofore unrevealed ones in a broad perspective of a war that was overshadowed by the United States involvement in Vietnam and is now largely forgotten by non-Portuguese audiences.
He combines vivid descriptions of the fighting, the daily lives of the soldiers in combat, and the larger campaign perspective through a broad range of interviews and observations as a seasoned war reporter.
He further draws on personal papers and published sources to produce an informative, valuable and readable account of the agonies and successes in the progress of Portugal's guerrilla wars in Africa.
While not defeated on the field of battle, Portugal ultimately had to recognize the futility of the struggle in 1974.
Its decolonization proceeded at a rapid and ill-considered pace and brought peace to none of its former colonies. No one was happy with the outcome, and Lusophone Africa became a continuing battleground for local and international interests for decades afterward.
Al Venter offers a thoughtful conclusion in this work on a nationally cathartic war that ended in tears both for a nation and its European and African citizens.


text:
A kálium-permanganát (KMnO4) lila színű, kristályos, ionrácsos vegyület. Igen erős oxidálószer. Vizes oldata intenzív lila (nagy hígításban rózsa)színű, melyet bepárolva prizmás lilás-feketés fénylő kristályokat kapunk. 2000-ben a világ össztermelése mintegy  volt. A kálium-permanganátban a mangán oxidációs száma +7. Hazánkban a 195/2005 (VIII.16) Korm. számú kormányrendelet II. kategóriájú kábítószer prekurzornak minősíti, forgalma korlátozott.

Biztonsági előírások
Xn (Gyengén mérgező, ártalmas)
O (Égést tápláló)
N (Környezetre veszélyes)

R-mondatok
R8 (Éghető anyagokkal érintkezve tűzveszélyes)
R22 (Az anyag lenyelése egészségkárosodáshoz vezethet)
50/53 (Nagyon mérgező a vízi szervezetekre, hosszan tartó károsodást okozhat az élővizekben)

S-mondatok
S2 (Gyermek kezébe nem kerülhet)
S60 (Az anyagot és/vagy edényzetét veszélyes hulladékként kell ártalmatlanítani)
S61 (Meg kell akadályozni a környezetbe kerülést. Speciális előírások/biztonságtechnikai adatlap előírásai érvényesek)

Segélynyújtás
Belélegzéskor szükséges a friss levegő biztosítása, panaszok esetén orvos hívása.
Bőrre jutáskor azonnal le kell törölni, majd vízzel és szappannal lemosni.
Szembe kerülés esetén a nyílt szemet percekig folyó víz alatt kell öblíteni, valamint orvost hívni.
Lenyelése esetén a száj kiöblítése, sok víz fogyasztása, valamint azonnali orvosi segítség szükséges.

Személyi óvintézkedés: védőkesztyű, védőruha és védőszemüveg viselése

Veszélyes reakciók mehetnek végbe erős savval, por állapotú fémekkel, peroxiddal, alkoholokkal, kénnel, foszforral, ammóniumvegyületekkel, elemi szénnel, szerves anyagokkal való érintkezéskor.

Előállítása
A kálium-permanganát gyártása mangán-dioxidból indul ki. A mangán-dioxidot kálium-hidroxiddal összeolvasztják. Ekkor a levegő oxigénjének hatására kálium-manganát keletkezik.

A kálium-manganátból elektrolízissel, anódos oxidációval nyerik a kálium-permanganátot.

Kémiai tulajdonságai, felhasználása

Hevítésre oxigénre, kálium-manganátra és mangán-dioxidra bomlik, így laboratóriumban oxigén előállítására használják:

Ha sósavval reagáltatjuk, klór állítható elő:

Vizes oldata fertőtlenítőszerként használatos. Gyógyszertárban már csak orvosi vényre kapható.  ATC-kódjai:  és .

Jegyzetek

Szervetlen káliumvegyületek
Permanganátok
ATC D08
ATC V03
Fotográfiai vegyszerek


Welcome to Nirvana Beach Hotel!
irvana Beach hotel is situated on the north-western coast of Rhodes near the traditional, picturesque village of Tholos. It is located close to the beach where it offers a unique view of the sunset over the southern Aegean islands and of the mountains of the Turkish coastline.
It is in the vicinity of the renown valley of Petaloudes (Butterflies) and it provides the starting point for the Western part of the island exploration, which hides reach secrets of extraordinary physical beauty and historical importance, such as the ancient city of Kameiros and the castles of Monolithos or Kritinia. The hotel is 7km away from Rhodes airport and 18kms from Medieval Rhodes town, the modern city and its port. It is an ideal destination for those who seek for a friendly and relaxed atmosphere in a family environment or for those who dream of surfing over the waves of the windy northern rhodian coastline.
Blown by the winds, typical for that part of the island, and not so overcrowded by sunbathers, Nirvana Beach provides a site which is ideal for those who wish to enrich their holidays in Rhodes with riding on the waves with a view to the oneiric Aegean Sea!
The beach is quiet and not crowded, offering an ideal place for relaxing without being disturbed by the crowds usually found on most beaches of the island.


This tour is designed for those on a tighter budget who would like a simple short break in Bordeaux. However, in common with all Grape Escapes tours, we don't skimp on quality just because it is inexpensive. Upon your arrival on day one, you will enjoy a tutored tasting session of five French red wines (including three Bordeaux wines), in a quaint wine bar, located within walking distance of your hotel. The tasting will be accompanied by a platter or cheeses and meats.
On day two, you will meet your English-speaking guide at a central departure point for a half day transported and guided tour of either the internationally famed left-bank Médoc or the UNESCO Classified appellation of Saint-Emilion. If you choose to visit the Médoc, you will visit two Châteaux, learning particularly about the Cabernet Sauvignon grape and gaining an insight into what makes those big, bold reds so renowned. If you choose to visit Saint-Emilion, you will discover the singularities of the softer wines, predominantly made from the Merlot grape. On this tour you will also visit two Châteaux. During the half day, you will learn all about the fascinating wine-making process from press to bottle, and each tour will conclude with a tasting of one of two of the Château's wines. This is a small group tour and each Château that you visit will be a Cru Classified estate. At the end of the tour, you will be escorted back to the centre of Bordeaux, where the evening will be free for you to do as you please.
Before leaving the region, enjoy a half day guided and transported tour of your choice of the Médoc or Saint-Emilion, including tours and tastings at two Châteaux.
If you are spending three days in Bordeaux, you will have an extra evening and free afternoon, to explore the delights of Bordeaux on day two.
Hotel de Sèze: A discount of £15 per person on the two day break or £30 per person on the three day break applies for travel between November and April.
Grand Hotel Français: A discount of £15 per person on the two day break or £35 per person on the three day break applies for travel between November and March.
Bayonne Etche Ona: A discount of £13 per person on the two day break or £25 per person on the three day break applies for travel in January, February, between the 22nd of July and the 02nd of September as well as between the 19th of October and the 04th of November.
Given the wide range of travel options, the package price does not include travel. Please see our Bordeaux travel page for detailed information.
"Aided by the weather, which was beautiful throughout, and the pleasant nature of the other participants, this proved to be an outstandingly enjoyable experience."
We offer a flexible range of Bordeaux breaks. Let us help you find your perfect tour!


text:
Live, laugh, love like a '70s supermodel
Cheryl Tiegs's 1980 lifestyle book isn't all that different from Instagram influencers.
Abbey Bender Mar—15—2019 09:27AM EST
There's a very high chance one or more of your parents has had soft-focus sexual thoughts about Cheryl Tiegs. The model, who in the 1970s defined the fantasy of the blonde, blue-eyed, fresh-faced, white girl-next-door, appeared on high-fashion covers and Sports Illustrated swimsuit issues alike, yielding those coyly revealing pinups lazy set designers use — along with Farrah Fawcett's iconic poster — to tell you a show or movie takes place in the 1970s. She was an early exemplar of a model meriting the "super" prefix, and her popularity was such that in 1980 she wrote (or "wrote," as a fine-print co-author credit for Vicki Lindner suggests) a book, The Way to Natural Beauty, published by Simon & Schuster and found on women's bookshelves throughout the decade.
Sometime in the 2010s, I was perusing one of the $2.00 book racks outside of New York's Strand Book Store, when tucked between outdated design guides and airport novels, I saw Tiegs' wholesome, freshly scrubbed face beckoning to me. My '70s fashion-obsessed self simply couldn't resist. The moment I became aware of the book's existence, I simply had to know what the cover girl could teach me, and so my slow, uneven path to natural beauty began.
The Way to Natural Beauty may seem like a long-forgotten artifact, as relevant today as a Chia pet or a hair crimper. After all, Tiegs was hardly unique in the endeavor: In the '80s, as aerobics and the concept of the career woman were taking a hold on the culture, celebrities ranging from iconic Italian actress Sophia Loren to Dallas star Victoria Principal to Tiegs's swimsuit model contemporary Christie Brinkley all published lifestyle tomes featuring likely interchangeable advice. Today, a quick scroll through Instagram reveals lithe bodies and faux-effortless beach snapshots. Influencer culture, with its embrace of so-called "wellness" is just another page in the literary canon Tiegs represents. So perhaps a book like Tiegs's, so seemingly of its time, could offer something to me, a millennial woman.
The first thing that stands out about Tiegs's book is its impeccable branding. The endpapers are plastered with her many covers. There are pictures of her — Cheryl at the beach! Cheryl exercising! Cheryl with an elephant! — scattered throughout with casual yet calculated poise. The section headings work hard to give her a nickname and establish the "C.T." trademark: "C.T.'s Minute-to-Minute Guide to a Slim Figure," "C.T.'s No-Mayo Fish Salad" (yes, of course there's a section of tragically bland sounding out-of-date recipes with low calorie counts), and my personal favorite, "C.T.'s Recipe for a Sensuous Bath." Tiegs prescribes low lights, a favorite record, and some "topsy-turvy champagne" sipped while bathing in a mix of herbs and bath oil. Tiegs's advice to "Take the extra time to make your bath a real luxury, the snug and watery cradle wherein you gather your thoughts, read a book, write a poem, or hum a favorite tune" is classic #SelfCare.
The "C.T." seal of approval is all-important, giving a sense of authority as she doles out morsels of advice that seem just doable enough to suggest: Swimsuit Models! They're Just Like Us. Over the course of 284 pages Tiegs offers (ostensibly) tried and true tips of varying usefulness, with chapters covering diet, exercise, hair, makeup, and fashion. Tiegs isn't a nutritionist or a doctor. Her credentials are directly tied to her cover girl status: Cheryl Tiegs knows how to be beautiful because she is. C.T.'s constant tautology.
The fashion chapter, "Life Is a Dressy Occasion: How to Get It Right" is the best one, and features this unforgettable description: "One of my favorite outfits for a champagne evening (which you can have either with or without the champagne) is a pair of tight turquoise velvet jeans that I wear with my shameless purple fox fur." This is poetry to me. I want a champagne evening, and I want to believe that I could wear an outfit that fabulous and pull it off. I feel validated when Tiegs admits dry-cleaning is a scam, and called out when I answer yes to the majority of her questions trying to figure out if I have poor posture ("Are your shoulders sometimes tense and all hunched forward?" "Do you always have a pot belly, no matter how thin you are?").
There's common sense to be found throughout The Way to Natural Beauty, just as you can find some reasonable tips in most lifestyle publications today. Eating mindfully, exercising, and having fun with makeup and fashion are all solid ideas that mostly seem within reach. Things get dicey when Tiegs's cover girl credentials are confused for medical knowledge. She recommends calorie counting and a 24-hour fast (or, in today's parlance, a "cleanse") as needed. Tiegs personalizes her advice by discussing her past struggles with binge eating in lurid detail, implying that if she could overcome that and become a supermodel, we should at the very least be able to believe all her tips really work.
If beauty is natural, it might just be good for you.
One of the hallmarks of 21st century fame is an overreliance on celebrities to tell us how to live our lives. The public expects famous women to create an illusion of intimacy through social media and PR-friendly statements on feminism. Celebrities are always telling us what to do, even as they're mocked for being out of touch, in a cycle that's intermittently amusing but never really goes anywhere. The most obvious example is Gwyneth Paltrow's lifestyle behemoth Goop, which frequently elicits eye rolls by recommending women steam their vaginas or buy $900 yoga pants or don't vaccinate their children. With its holistic approach and freshly scrubbed blonde avatar whose celebrity bestows an illusion of authority, Goop directly follows The Way to Natural Beauty.
In the world of Goop, to admit too readily that you want to look beautiful is considered unbecoming. The ideal consumer of Paltrow's brand is already conventionally attractive, and products recommended for building up natural beauty are meant to be part of some holistic wellness journey, rather than in the service of pure aesthetic. In Tiegs's world, even if she says otherwise, beauty always comes first. There are more pictures of her than there are actual usable lifestyle tips, which considering her supermodel status might make the whole thing more honest. After all, the world still wants me to be beautiful, no matter how strongly anyone insists it simply wants me to be empowered, and there is a relief in admitting that sometimes I want that too.
It must be acknowledged that "Natural Beauty" is a loaded term. It has a slight feminist sheen — admitting to wanting "artificial beauty" is considered gauche — but is vague enough to feel non-threatening, almost comforting. If beauty is natural, it might just be good for you. It's beauty that, once achieved by following The Way, you don't have to work for. The opening line of Tiegs's book is a humble brag for the ages: "I can't count the number of times I've heard or seen myself described in print as a 'Natural Beauty.'" She goes on, over the course of nine chapters, to describe all the different work a woman can do to achieve some semblance of natural beauty. The premise is perversely appealing: Will reading this book about natural beauty written by a model make me into a model? The answer, of course, is no. But it's a nice possibility to consider, and the underlinings in my used copy are curiously poignant. Women before me have tried to live the C.T. lifestyle and and in 2019, when everything else has failed, it honestly seems pretty appealing.
Nearly 40 years later, women are still constantly being fed platitudes meant to make us feel both better and worse about ourselves. The focus has supposedly shifted from how you look to how you feel, and "diet" has become a dirty word. But Tiegs writes that "just about anyone can be attractive" and praises women who, thanks to their self-confidence (and likely not feeling the need to read her book) have "the glamour of their own identity." Whether it's C.T. or Goop or some juice-swilling Instagram influencer with washboard abs selling us this philosophy, the question remains: What the hell is the glamour of our own identity anyway, and what does it say about me if I fail to even find that? Time is a flat stomach, and the way to natural beauty continues to circle back on itself. I'm still trying to track down some turquoise velvet jeans for a champagne evening, though.
Get The Outline in your inbox
Abbey Bender is a New-York based writer with bylines in The Village Voice, The Washington Post, Nylon, and other publications. She has a MS in Library Science, with an Advanced Certificate in Archives.


Healthcare professionals have begun integrating nutrition into conventional methods of care to help restore function and manage core clinical imbalances and symptoms in their patients. By evaluating and designing nutrition care plans, they can help patients maintain a careful balance between the traditional, integrative, and functional medical models, as they relate to food and nutrition therapies as well as to health and disease.
Health care professionals have begun integrating nutrition into conventional methods of care to help restore function and manage core clinical imbalances and symptoms.
Graduates will be able to apply a critical inquiry framework to evaluate the medical models for best practices, scope of practice, legal and regulatory perspectives, and the bioethics of applying integrative and functional nutrition in practice. Expanding on their existing practice or branching out into new fields, those who complete this certificate program will be able to integrate nutrition into health care, coaching, consultation, and therapy as well as many other areas.
More program information can be found in our academic catalog.


text:
As the coronavirus has spread throughout America so has the outcry from frontline workers anxious about their livelihoods—and their lives.
Since the onset of the pandemic, walkouts and protests have been staged by, among others, packers and shippers in Amazon warehouses, those on the line at a Smithfield pork processing plant, Instacart supermarket shoppers, cooks and cashiers at McDonald's and other fast-food chains, trash collectors in Pittsburgh, and nurses around the country.
Today, scholars from the Clean Slate for Worker Power project at Harvard Law School and the Roosevelt Institute will unveil a proposal that seeks to channel not only employees' indignation, but also their insight, into a mechanism that can help steer the nation through the crisis.
Longer term, the plan has the potential to give workers more input on wages and benefits, which—as COVID-19 has laid bare—have become precariously thin for millions of people over the past three or four decades.
And it presents a way to do so outside the traditional realm of collective bargaining. That's crucial. With a mere 6% of private-sector U.S. employees currently in a union—down from more than 20% in 1980—organized labor no longer has a megaphone through which masses of workers are able to speak.
"The medical folks need to take care of stopping the virus, but policymakers need to get the structural problems with the economy under control," says Sharon Block, the executive director of Harvard's Labor and Worklife Program, which runs the Clean Slate project. "Maybe what we're going through now will open up some imaginations."
The proposal, which is intended to serve as the basis for the drafting of federal legislation, has three parts.
First, Congress would form management-labor commissions in key sectors—healthcare, transportation, logistics, grocery, and so on—to discuss how "to prevent virus transmission in the workplace and related training needs, virus testing protocols, paid sick leave and family leave, hazard pay, and scheduling issues that impact health and safety."
Businesses would be represented on the commission in proportion to their market share in a particular industry. Employees at those companies would be represented by their union, if they have one, or by some other labor advocacy group (such as United for Respect or the Warehouse Worker Resource Center) if it has an active on-the-ground presence. Otherwise, the Labor Department would select rank-and-file workers to serve, with suggestions coming from lawmakers.
As envisioned, Congress might grant the commissions either of two roles. One would be to simply make recommendations for keeping employees and the general public safe. In this case, executives would be obligated to share with their worker counterparts any information relevant to the subjects that the commission is charged with addressing.
The alternative has more teeth. It would give commission members the authority to bargain agreements on matters under their purview, which would then be made binding on all companies in the sector. Still, this approach would likewise hinge on management and labor coming together to find solutions palatable to both.
Cooperation instead of conflict
Getting labor and management around the same table "often involves a lot of conflict, but sometimes it involves cooperation—and cooperation is what we need right now," says Brishen Rogers, a Temple University law professor, former organizer for the Service Employees International Union, and a fellow at the Roosevelt Institute, who coauthored the proposal.
There is precedent. In Europe, worker representatives, employer representatives, and government agencies have teamed up to deal with the fallout from COVID-19.
Even America has turned to labor-management coalitions in the past. Ten days after Pearl Harbor, President Roosevelt convened 26 union, corporate, and government officials to make sure that military production could be ramped up sufficiently. As one account of the effort describes it: "Labor leaders were included on equal terms with businessmen" in pursuit "of a supreme national purpose."
The second part of the Clean Slate-Roosevelt Institute plan would unfold in individual stores, factories, distribution centers, and hospitals. It would require companies to set up committees of workers, who've been chosen independently by their peers, "to meet and confer with management" on health and safety, testing, scheduling, and other topics brought to the fore by the crisis.
These worker committees would also be responsible for helping to carry out the recommendations—or binding agreements, if those had been reached—laid out by the sectoral commissions. Companies applying for federal financial assistance would have to certify that they had institutionalized these worker panels before receiving government funds.
"It's really hard to enforce sectoral standards without following through at the workplace level," says Benjamin Sachs, a Harvard law professor and another coauthor of the proposal. "It's important to think about these as parts of a system—as two pieces of a whole."
The final plank in the proposal would guarantee "strong anti-retaliation protections" for workers who participate on a commission or committee, including safeguards against being fired.
"This can't be effective if people are too cowed to speak up," says Block, who during the Obama administration served in a senior position in the Labor Department and as a member of the National Labor Relations Board.
Advantages for employers
For employers—even those who claim to already have an open door for their workers to bring both grievances and good ideas—there could be advantages to having a more formal arrangement, given the magnitude of the challenge at hand.
While many large corporations have put all sorts of safety measures in place—spacing people six feet apart, taking workers' temperatures, providing masks—it can be difficult for those at headquarters to detect among hundreds or thousands of field locations where those rules are being followed with fidelity and where they're not.
"That often has to do with the fact that there is very little upward communication from people at the store level to corporate," Michelle Miller, co-director of Coworker.org, explained this week during an online session put on by the Aspen Institute. "Because of the lack of organized power inside of these companies, it's difficult for workers to make these conditions known."
Those workers appointed to commissions and committees could well act as a warning system, flagging for management in real time where there are dangers across their operations.
Without these structures, however, it may not be realistic to expect workers to do more than stay at home or come in but keep their mouths shut.
"People want to speak up, but they feel like if they do, they're going to lose their job," says Jordan Flowers, a robotics technician at an Amazon warehouse in New York, who vows not go back to work until the company does more to ensure that he and others are safe.
Amazon says that it has daily conversations with employees as part of a direct dialogue, and many workers have offered up advice to help keep the workplace clean. "Nothing is more important than the safety of our teams," says Rachael Lighty, a company spokeswoman, who cites more than "150 significant process changes" that Amazon has made in response to COVID-19.
Over time, according to the Clean Slate-Roosevelt Institute proposal, the sectoral commissions and worker committees would expand their mandate to help tackle "the economic recession that will almost certainly outlast" the health crisis.
In some respects, this blueprint is an adaptation of an earlier initiative of the Clean Slate project. In late January, it put out a report urging the "fundamental redesign" of U.S. labor law, with the goal of enabling "working people to create the collective economic and political power necessary to build an equitable economy and politics." Among its key provisions was a call for sectoral bargaining.
Beating back organized labor
It won't be easy, of course, for any of this to be implemented—coronavirus or not. Even though what's being proposed has nothing to do with encouraging unionization per se, it is likely to be tarred by opponents of labor as a backdoor attempt to organize workers under the guise of public health and safety. And studies have shown that businesses are willing to do whatever is necessary—legal or not—to beat back anything that even hints of a union drive. Meanwhile, their political allies in Washington have made it harder and harder for workers to organize.
At the same time, if there were ever a moment to break through all of that, now might be it.
Even before the pandemic, frustration among workers was clearly growing. More than half of those who took part in a 2017 survey from MIT reported that they have less say than they feel that they ought to have when it comes to compensation, promotions, job security, and more. Those behind the study labeled this "the voice gap." Last year, strike activity surged in the United States, punctuated by stoppages among public school teachers, General Motors and AT&T employees, and many more.
"There's real pent-up demand among workers to be recognized," says Jake Rosenfeld, a Washington University sociologist and close observer of labor trends.
It is not yet known who, if anyone, on Capitol Hill might try to translate the Clean Slate-Roosevelt Institute proposal into an actual piece of legislation. But it's notable that Sen. Elizabeth Warren and Rep. Ro Khanna, in the Essential Workers Bill of Rights that they have introduced, assert that frontline employees should be treated "as experts," and the government should draw on their knowledge and experience "in developing responses to coronavirus."
Rosenfeld points out that academics still debate why labor was able to enhance its voice and power so much after the Great Depression—whether the biggest factor was government policy (especially the Wagner Act of 1935, which established the right to unionize) or employee activism (such as big strikes undertaken by the United Auto Workers).
But what's undeniable, he says, is that the combination of "bottom-up action from workers and top-down action from the government" changed everything.
The last six weeks have, once again, seen a flurry of the former. And now, with the emergence of the proposal from Clean Slate and the Roosevelt Institute, the latter could be within reach.


Is this your first time hearing or learning about a bone grafting procedure? You don't need to be scared of the procedure because it is usually managed by dental implant professionals.
Bone grafting is a dental procedure that involves extracting bone from somewhere in the body, usually the hip or chin, and inserting it in the jawbone. It is normally done before the dental implant procedure to reinforce insufficient bone in the jaw by fusing and supporting the dental implant.
Although bone grafting often takes place before the dental implant procedure, it is not always necessary for the procedure. Before carrying out the dental implant procedure, your dental implant dentist or oral surgeon first examines your jawbone structure to see whether your jawbone is too soft, too thin, or insufficient to support the dental implant. If there is no sufficient jawbone, you undergo a dental implant with bone grafting procedure to prevent dental implant failure over time.
If you eventually undergo a dental implant with bone grafting procedure, the bone grafting procedure will definitely affect the length of the overall dental implant treatment. Dental implant surgery, typically, requires multiple stages and procedures. Bone grafting is also another procedure on its own. Adding an additional dental procedure to the dental implant surgery makesthe whole treatment process take longer time.
The dental implant dentist determines the best source for bone grafting material. This depends on which source the dentist feels will work best for the patient as well as the size of the bone grafts.
In the case where the dentist has to remove any damaged or broken teeth, there may still be some bone in the jaw where a little bone grafting may be required. Little bone grafting involves placing extracted bone in the form of granules into the empty socket. The socket is then covered with a protective collagen membrane using stitches. This type of grafting does not usually add to treatment recovery time. The granulated bone becomes part of the natural bone in the socket within a few weeks, keeping the original jawbone height.
This type of grafting is required when more significant jawbone has been lost and both the height and width of the jawbone need restoration. During this procedure, the dental implant dentist makes a small incision in the affected jawbone area and then inserts the bone granules. This helps to build up the affected jawbone area and also restores its height and width as it heals.
When a patient has lost multiple teeth over a long period of time, they experience a severe loss of jawbone. In such a case, the dental implant dentist suggests a big bone grafting.
In this procedure, instead of bone granules, the dentist uses a block of bone extracted from any of the 5 sources listed above. The dentist attaches the bone block to the jaw using screws and plates. This provides a foundation and support for the dental implant. Bone granule is used to fill in the available small spots anda membrane is placed over the whole affected area using stitches. It usually takes several months for osseointegration to take place before the dental implant can be inserted.
This is another type of bone grafting normally done for the upper jaw. A patient with severe bone loss on his or her upper jaw usually requires a dental implant with bone grafting. Because the sinuses are right above the upper jaw, extra care must be taken with drilling near the area.
As a hollow cavity, the sinus cannot support the dental implant. Before the dental implant can be done, the dental implant dentist needs to lift the floor of the sinus to allow space to insert more bone. The dentist makes an incision in the gingival tissue to create a little opening into the sinus cavity. From this opening, the sinus membrane is detached and lifted from the sinus walls.
The bone grafting material is then placed in-between the sinus membrane and the sinus floor. After inserting enough bone grafting material, the dentist places a collagen membrane to secure the inserted bone grafting material. After then, the dentist closes the little opening with stitches. A sinus lift procedure typically requires about 4 months for complete healing before the dental implant can be inserted.
Remember, there are four major types of bone grafting, which are little bone grafting, medium bone grafting, big bone grafting, and sinus lifting. The type of bone grafting you receive depends on the amount of jawbone needed for the dental implant procedure.
Considering the various types of bone grafting, you may wonder if a dental implant with bone grafting is really safe.
A dental implant with bone grafting is safe only when performed by a licensed and professional dental implant dentist. Nevertheless, just like every other surgery, bone grafting has its own complications and risks. Even though these complications are rare, they sometimes still occur.
Damages to the natural teeth, nerves, or blood vessels.
Tingling and numbness in the gingivae, cheeks, and lips.
After a bone grafting procedure, you will possibly experience pain, swelling, discomfort, slightbleeding, and bruising in your gingivae and possibly face. These healing signs subside in time.. However, if any of these signs worsen or give you cause for concern, quickly consult your dentist for pain relieving medications or coping tips.
To have a durable and long lasting dental implant with bone grafting, choose a reputable dental implant dentist or oral surgeon. This greatly reduces your risk of complications. For more information or answers to your inquiry, contact VIP Dental Implants today.


text:
revisioncount=`git log --oneline | wc -l`
projectversion=`git describe --tags --long`
cleanversion=${projectversion%%-*}

echo "$projectversion-$revisioncount"
#echo "$cleanversion.$revisioncount"

redpajama_set_name: RedPajamaGithub


Clenbuterol Steroids now ships worldwide including to Belarus. They are excited to offer free shipping to some countries.
Clenbuterol, likewise referred to as Clen, is typically used for burning fat by those who have experience with competitive bodybuilding. These users have a fundamental grasp on the side effects of this drug and its uses. Regardless of this, there has recently been an uptick in the quantity of questions concerning Clen for bodybuilders that are showing up from those who have no idea much about how it can be utilized when dieting to lose fat." More frequently, females are coming into drug stores seeking Anavar and Clen to help with losing fat.
Clenbutrol from CrazyBulk is like a carbon copy of the efficiency enhancing, potent thermogenic weight reduction item celeb Clenbuterol. The now banned steroid was understood for burning fat and substantially improving cardiovascular performance thanks to an enhanced oxygen transportation in the body. Clenbutrol is likewise incredibly powerful. However the only area where it differs is that it is a prescription-free alternative of Clenbuterol.
Clenbutrol is thought about to be one amongst the most popular Clenbuterol Ambroxol Pills available in the marketplace today. Anyway, Where can I buy Clenbutrol in Belarus? You can purchase Clenbutrol Clenbuterol Ambroxol Pills online from the main site. You can place an order from many parts of the world consisting of Belarus. When you can take pleasure in a number of advantages why should you wait? This Clenbuterol Ambroxol Pills review need to have tempted you to position an order now.
Why You Should Purchase Clenbuterol Online from Belarus?
Purchasing Clen Steroids online is the most advantageous thing to do, and not just for choice, or even to obtain a much better rate. You can always make more cash, it is not finite. What is limited is just how much time you have. You cannot make more time. By buying your Clen Steroids online, you will save time, cash, and get higher quality Clenbuterol to you than you could ever find anywhere else. Why purchase an inferior product due to the fact that some store down the road sells it? It simply does not make good sense any longer, when so many options are readily available, just a few clicks away.
This is an almost essential option as customers have actually come to expect it from every online store. We can save approximately 30% more if a they provides complimentary shipping. If there are no complimentary shipping then a minimum of try to get shipping on specific advertising items. A substantial variety of individuals prefer buying online to conserve time and money invested in going to a store, if they have to spend on shipping then they may simply prefer a journey to the shop. However, with totally free shipping we need to wait a couple of extra days if they get our product provided.
Can You Tell Me Where to Find Clen Steroids for Sale in Belarus?
If you have a prescription, you can purchase Clenbuterol for sale at almost any drug store in Belarus. In some countries where it is not controlled, you can buy it legally over-the-counter without a prescription. Many people prefer to buy Clen Steroids online rather than from street vendors. Before doing so, make certain that you take the time to read some evaluations. In this manner, you can make certain that you get a quality item at a fair rate.


I have the exact same problem. I've tried reïnstalling Windows10, reseating everything I can reseat, replacing GPU, replacing RAM, replacing storage device (HDD to SSD). I've also tried fiddling with oh so many configs in bios and nvidia. Nothing seems to work. Next up is changing motherboard/processor. Could this be related to the PSU? Anyone have any new insights on this problem?


text:
Sandra A. Putman
Sandra A. Putman, 68, of Cedar Rapids, Iowa, passed away Saturday, Dec. 21, 2019, at her home after a long, courageous battle with cancer. Funeral Mass: 10 a.m. Friday, Dec. 27, at All Saints Catholic Church. The Rev. John R. Flaherty will officiate. There will be a visitation from 4 to 7 p.m. Thursday at Cedar Memorial Park Funeral Home.
Survivors include her husband, Steve; two sons, Matthew (Mary) of Cedar Rapids and Nicholas (Trisha) of Robins; three daughters, Emily (Parker) Jones of Tiburon, Calif., Elizabeth (Tom) Appel of Marion and Maggie Putman of San Francisco; three brothers, Greg Plotz of Boscobel, Wis., Steve (Amy) Plotz of Anoka, Minn., and David (Stacey) Plotz of Shueyville; and sister, Nancy Williamson of Des Moines. She also is survived by her eight grandchildren, Christopher, Jack, Catie, Maxwell, Lilian, Eleanor, Liam and Gabriel.
She was preceded in death by her parents.
Sandy was born Dec. 25, 1950, in Cedar Rapids, the daughter of John and Elizabeth Plotz. She graduated from Regis High School and later the University of Iowa where she met Steve. They married April 27, 1974, at All Saints Catholic Church, where she continued to be an active member the rest of her life. Sandy and Steve took immense joy in raising their five children and later in spending time with their grandchildren. She forever will be remembered for her selflessness, devotion to her family and faith, an incredible wit and her prolific baking. She leaves behind a family forever indebted to her leadership, grace, and unconditional love.
Sandy's family would like to express their sincere thanks to Dr. Mohammed Furqan, Dr. Mark Smith, and their respective teams at the University of Iowa Hospitals and Clinics for their tireless devotion; and to Mercy Hospice for their compassionate care and comfort.
Memorial donations may be given to the Stead Family Children's Hospital in Iowa City or St. Jude's Children's Hospital. Please leave a message or tribute to Sandy's family on Cedar Memorial's webpage, www.cedarmemorial.com, under obituaries.
Sale! Ties to Our Past Hardcover - $15
A memorable gift for any Cedar Rapids history buff. Get this hardcover edition, on sale now!


Famous Hookups is a cute little gossip site that you will like if you want to find out celebrity dating gossip. Most of the articles focus on who is dating who, who is breaking up with who, and who is having a baby with who. If you like to hear the gossip on celebrity couples you will like this website.
The site features gossip from the latest Hollywood personalities, and a section on today's hottest celebrities. You can also check out the dating history for your latest celebrity. Also features dating news for couples that become famous for various reasons from crime to reality television to royalty.
Famous hookups will tell you celebrity news, gossip and rumors, celebrity divorces, separated celebrities, married celebrities, when celebrities file for divorce, get engaged, start dating, break up, have affair and of court broken engagements. Stars features might be anyone from Kanye West, Kim Kardashian, Kloe Kardashian-Odom, Lamar Odom, Kris Jenner, Jay-Z, Kris Humphries, Amber Rose, Miley Cyrus, Liam Hemsworth.
The juiciest the celebrity couple story, the more likely you will find it on Famous Hookups. Click on the Famous Hookups logo to bring up the Famous Hookups web site and check it out.


text:
using testing::_;
using testing::Invoke;

namespace Envoy {
namespace Http {

MockStream::MockStream() {
  ON_CALL(*this, addCallbacks(_)).WillByDefault(Invoke([this](StreamCallbacks& callbacks) -> void {
    callbacks_.push_back(&callbacks);
  }));

  ON_CALL(*this, removeCallbacks(_))
      .WillByDefault(
          Invoke([this](StreamCallbacks& callbacks) -> void { callbacks_.remove(&callbacks); }));

  ON_CALL(*this, resetStream(_)).WillByDefault(Invoke([this](StreamResetReason reason) -> void {
    for (StreamCallbacks* callbacks : callbacks_) {
      callbacks->onResetStream(reason, absl::string_view());
    }
  }));
}

MockStream::~MockStream() {}

} // namespace Http
} // namespace Envoy


text:
News: Gypsy tart originated from the Isle of Sheppey
History in Kent
Topic: The changing of the numbering of properties in Rochester High Street
Author Topic: The changing of the numbering of properties in Rochester High Street (Read 683 times)
Appreciation 11
Re: The changing of the numbering of properties in Rochester High Street
« Reply #2 on: August 29, 2018, 13:58:54 »
I can remember a large number of the shops in this part of Rochester High Street, no 68 was Theobalds newsagent and tobacconist in the late 1950's to early 1960's. I would think that Ashe's was about no 82. I lived at no 106a. Working towards no68 I Can remember Leonards Shoe shop, W H Smith, Mence Smith, Greengrocer, City jewellers,Bakers shop, Hawksfields Coal Office, Tiber's ? Insurance, Kemsleys the butcher, a Bank, Casa Ventana Coffee Bar, Ashe's and a few more that I can't recall. Need someone with a late 1950's Kellys directory.
Maid of Kent
The changing of the numbering of properties in Rochester High Street
Apologies if this is in the wrong section.
According to 'Rochester in Old Photographs' by Brenda Purle, the numbering of High Street Rochester changed at some point. Can anyone give me a date when this happened, please.
The present No 68, backing onto the Cathedral doesn't resemble the shop that my mother once showed me as being the Tobacconist shop No 68, that she had lived over as a child. In 1919 Kelley's Directory W[inifred] Burney was there and somewhere between 1913-1918 it would have been either E or W Coxe. A lot seems to have changed even since I was last there with my mother in the early 1980s, and typically of the younger generation, not taking too much notice what was said and then suddenly it is too late!
Can someone also identify, with it's present number, the site where Ash's bookshop shop (also backing on to the Cathedral) was during and after the WW2. It had closed many years ago and a different trade was the occupant, although a member of the family was still living on the premises at the rear. I loved my visits there and seeing my distant Aunties!
Help would be much appreciated.
BloQcs design by Bloc


Just ideal for getting around on winter evening--if path is slippery you have light right on the subject.
The lighted beanie is a wonderful item. The light shines very bright. I bought this as a gift for 2 different people and they loved it.


The following table provides all the Consumer Price Index data CPI-U from 1913 to the Present. For a smaller table of just current CPI data (2000-Present), see CPI page.
A Consumer Price Index of 158 indicates 58% inflation since 1982, while a CPI index of 239 would indicate 139% inflation since 1982. The commonly quoted inflation rate of say 3% is actually the change in the Consumer Price Index from a year earlier. By looking at the change in the Consumer Price Index we can see that an item that cost an average of 9.9 cents in 1913 would cost us about $1.82 in 2003, $2.02 in 2007, $2.33 in 2013 and $2.39 in 2016.
May 2016: 240.236, June 2016: 241.038, July 2016: 240.647, August 2016: 240.854.
May 2016: 240.229, June 2016: 241.018, July 2016: 240.628, August 2016: 240.849.
This change made a very minimal difference in the annual inflation rate.
Jump to Bottom of Table Blank Cells indicate that the data is not available because it has not been released by the Bureau of Labor Statistics yet.
For Inflation data rather than Consumer Price Index data go to the Historical Inflation page. If you would like to calculate the inflation rate between two dates using the Consumer Price Index data from this chart, use our handy easy to use Inflation calculator or you might prefer to use our Cost of Living Calculator to compare the costs in two cities. You can find links to Inflation and Consumer Price Index data for other countries HERE. A chart of Inflation by decade, Annual Inflation and Confederate Inflation is also available. Menu navigation is available on the menu bar on the left of every page. We have a complete listing of all of our Articles on inflation, including Inflation Definitions, Which is better High or Low Inflation, and How to Calculate Inflation.
Note Effective January 2007 the BLS began publishing the CPI index to three decimal places (prior to that it was only one decimal place). But InflationData.com is still the only place to get the Inflation Rate calculated to two decimal places.


text:
Priya Mohan wears a pair of AS 98 booties from Miller Shoes.
Hamilton Region
Sheryl Nadler: sariKNOTsari is devoted to slow, sustainable fashions
Priya Mohan's latest venture features a line of upcycled vintage saris
By Sheryl NadlerContributing Columnist
updateArticle was updated Mar. 03, 2020
When Priya Mohan visited India with her kids, a few years back, she was faced with a daunting dilemma: she wanted to buy every sari she could see. The swirl of colours and textures in the myriads of fabrics she found there mesmerized this part-time teacher at M.M. Robinson High School in Burlington, and ignited her creative side - the creative side that has driven her to open three retail ventures that range from upcycled and sustainable clothing to repurposed furniture and home decor.
Mohan's kids brought her back down to Earth. "'You're gonna wear that to Fortinos?'" she recalls them asking. "'That's your plan?' And it's not that culturally I couldn't because it wouldn't be appropriation - I'm Indian origin. But I'm in and out of my car and I'm walking the dog and I'm doing all of these things. But I really wanted those fabrics in my life."
So she found a way. SariKNOTsari is Mohan's latest retail venture (she previously co-owned The Pale Blue Dot and Greystone Fine Furniture), a line of upcycled vintage saris she sells in her James Street North store by the same name. Mohan buys the vintage silks from sellers in India and works with Delhi-based designer, Anchal Saini, to create Western-style dresses, tops, kimonos, accessories from the sari material.
The creations mingle on racks in her shop, that is entirely devoted to slow, sustainable fashions, next to designs by other local companies like Casa Relief and A Million Elephants.
"I like putting the shapes together and I like when you're looking at a pattern and you don't know how to make it match with another pattern, you squint and you're like, whatever colour you see is the dominant colour," says Mohan, a passionate proponent of "slow fashion" which focuses on recycling, small batches and sustainability in fashion.
"I want to feel classy and I want to feel elegant and flowy and that people are looking at me and that my clothes aren't wearing me," says Mohan, who wears a sariKNOTsari silk Kimono-Sleeved Top with olive Tashi Versatile Pants (that convert into a skirt) from Casa Relief, AS 98 olive booties from Miller Shoes, a bead necklace by Mira Mohan (her daughter), military-grade aluminum earrings made from unexploded landmines from A Million Elephants based in Guelph, and a ring by Love & Light Jewels.
Most eye catching piece:
These John Fluevogs . they're shoeties. They have a platform in the front and then they have a sculptural looking heel in back so even though they look quite high, they're not. And the colour of them and the texture is pretty much my skin colour and texture . and then they have a floral print on them that almost looks like a tattoo.
Quirkiest wardrobe item:
I was at the One of a Kind Show and I saw this fox fur hat and it was blue, 1960s - it was like a bouffant hairdo made of blue fur and I was like, I need to have that because life is short. And I just had these visions of myself being some sort of a Jackie Kennedy with this showstopper hat and I've never worn it because it is so out there ... it looks like Marge Simpson.
Wardrobe must have:
Neutral basics. Just the under stuff that you then do up. Because I find I wear a lot of layers and it's just what makes my clothing go from season to season.
Best purchase:
Black leggings. We carry a brand here, Diane Kennedy, and those are my current favourites.
Regrets buying:
Anything that's fast fashion . I remember being in New York and going to Forever 21 and being like, oh my god, I can get leggings for, like, $2. And now I know what that actually means. And I'm appalled that I was so unaware ...
Loves to shop at:
Boutiques that sell one-of-a-kind type pieces ... I tend to wear my brand now. Not because I'm trying to advertise it or anything - because it meets all my fashion values and sensibilities . Miller Shoes, definitely . Mettamade, I love their clothing . and the Pale Blue Dot.
Ridding her closet of:
High heel shoes. They're not practical . that's not happening again.
Splurges on:
Shoes and bags. You can't outgrow a bag. And it's useful - it's a practical part of your everyday life.
Beauty product she can't live without:
A Hamilton brand - EKS - they only have two creams. One is called SKIN and the other one's called PAIN. And their website is called justaddoil.ca. So, you add CBD oil to it ... I use this as my face cream and I love it . our shea butter, which is also excellent. It's by Mamaa Trade.


text:
Showbizplus
Daylight TV
Jamboree! Kogi govt wasted N12m to react to my comment, says Ekweremadu
By editor	 On Jul 11, 2017
Ike Ekweremandu
President of the Senate, Bukola Saraki; and Deputy Senate President, Ike Ekweremadu, on Tuesday condemned the Kogi State Government for its alleged roles in the ongoing process to recall the lawmaker representing Kogi West Senatorial District, Senator Dino Melaye, from
the National Assembly.
Both of them specifically criticised the Commissioner for Justice and Attorney General of Kogi State, Mr. Ibrahim Sani Muhammed, for
criticising the Senate as lacking constitutional backing to stop Melaye's recall.
Ekweremadu, while raising a point of order at the plenary on Tuesday, referred the lawmakers to a three-page advertorial by Muhammed, in
which the commissioner criticised his last week submissions at the Senate on Melaye's recall.
The senator noted the every page of the advertorial cost about N700,000, adding "for this alone, they spent about Nm and I understand that it is in about five other papers so we are looking at about N12m spent to responding to my comment.
"I expect the Attorney-General, instead of displaying his ignorance, to simply call me and I will educate him on the position of the law,"
The Deputy Senate President condemned the Kogi State Government for using a three-page advertorial in newspapers to reply him. He said the money could have been used to pay part of the salaries owed workers in the state.
"Meanwhile, want I said was supposed to be privileged; that is what the law says. I would have ordinarily ignored him but I will like to
point out his final paragraph so that I will put everything in the right perspective," he said.
In the paragraph, Muhammed had stated that "the Senate has no role whatsoever in the recall exercise than to receive the certificate of
under the hand of the Chairman of INEC, stating that the provisions of Section 69 of the Constitution have been complied with." He also cited Section 68.
Ekweremadu further said in part, "I stand by what I said the other day and I still like to take him to Section 68(2) of the Constitution to
show the role of the Senate, if he is saying we don't have any role. He surreptitiously refused to cite sub-section 2 or, probably out of
ignorance, he did not put Section 68(2).
"I don't know how he came to the conclusion that we do not have any role to play. I stand by my position that when INEC is through with
any recall process, they must write the Senate President who will read it to us and we must be satisfied that the provisions of Section 69 in
reference to recall have been fully complied with.
"I pity the people of Kogi State who hired his kind of attorney-general. It is unfortunate that they are paying a public servant and he is unable to do a simple work of looking at the Constitution.
"Let me also emphasise that this Section 68(2) is not part of the amendments we have made since 1999; this has been the original provision of the Constitution; we did not invent it and it has nothing to do with Dino. We inherited it since 1999.
"So, for him not to know about it; I don't know where he went to law school, anyway. If he had been properly educated, he should have been
conversant with the basic provisions of the Constitution. I also don't know his age at the bar but, apparently, I know that I am his senior at the bar and I expect him to show some respect to his senior. That is what we were taught at the law school."
Saraki, in his remarks, expressed concern over "the calibre of people put in very serious positions in government." He stated that the Constitution was clear on the recall process.
"What is even more disturbing and irresponsible is how they have spent over N10m on adverts," he added.
The Senate President accused the state government of culpability in the move to recall Melaye due to the interest it had showed in the
He said, "It is an issue that I don't see the involvement of government in it. This even shows that it is the government that truly behind this entire process; when a government can take an advert on an issue like this.
"I think, sincerely, there is a necessary need for some of the people who are appointed or elected into positions to show some level of responsibility. This is a simple matter that is stated in the Constitution. It is very unfortunate for the people of Kogi State."Punch
Kogi wasted money on Ekweremandunigerian newsPolitical news
Cruel! Boko Haram executes eight for defying Sharia police
Shocker! Builders of Calabar's first flyover yet to be paid … Seek recovery of N2.5bn debt
SOKAPU to FG: Those who threatened Kukah must be arrested
We are fully committed to promoting good governance practice in Africa – Buhari
Anambra needs another governor like Obi – Ozigbo
Click to see
© 2021 - Daylight. All Rights Reserved.
Website Design: Inventrium


text:
Watch Award This! The show that celebrates the best in independent film!
Your Independent Movie Guide
Film for Review
Festival Promotion
FT Shop New!
Search Film Threat
BLOOD AND COMMERCE: THE 2004 DAYS OF DARKNESS CONVENTION IN BURBANK
By admin	| June 2, 2004
The leagues of horror fans, most dressed in black (some driving renovated hearses sporting their favorite websites), smoking and carrying on deep and meaningful conversations about "the true meaning of horror", look slightly incongruous in the bright California sunlight; I see a great deal of sunglasses and wincing, hands held up to protect from the vicious glare.
I'm feeling a bit conspicuous in my blue jeans and casual button-down shirt, but no one spares me a second glance. All eyes are on the huge black and red banner that adorns the front of the Burbank Hilton Convention Center: CREATION ENTERTAINMENT PROUDLY PRESENTS THE DAYS OF DARKNESS CELEBRATION OF HORROR. Two days of mingling and meeting the creators of such industry classics as "Night of the Living Dead", "Nightmare on Elm Street", and "The Stand".
Admission is twenty bucks, but thanks to the power of the press, I'm allowed in for free. I cackle and rub my hands together with glee, drunk on the ego boost anyone gets when manipulating the system. Tables are lined around the lobby, and the first thing you see is Tom Savini, makeup artist extraordinaire come actor (see the brilliant "From Dusk Till Dawn" for his deeply moving performance as 'Sex Machine'; really, it chokes me up each time I see it). His space is covered with 8 x 10 glossies of some of his best work, including his recent guest spot on "The Simpsons". He'll be happy to sign his autograph for you…for a price.
I didn't really want to pony up the cash for a signature, but I had a question for him. This was a bad idea. I made the mistake of enquiring about a film he made back in the 80s, a really horrible but fun slasher flick named "The Ripper", and the reaction was amazing. You'd have thought I kicked him in the balls, or called his mother a bad name. To put it politely, he went off, frightening small children and inspiring me to duck my head and slowly back away. Must have been a bad experience. I move on, past vendors hawking rare movie posters (some in French, some for movies even I hadn't heard of), rare soundtracks, and t-shirts sporting the moniker "My Child Raped Your Honor Student". Something for Grandma!
The convention center is 50,000 square feet, and the organizers are utilizing it well. There are two enormous halls, the first filled with more tables and vendors, the other an auditorium for the guests of honor, with an ingenious crypt set made of foam rubber on the main stage, as well as a giant screen that turns writer/director Mick ("The Shining") Garris into a fifty foot tall behemoth. A charming man, Garris has brought clips of his latest Stephen King adaptation, a chiller called "Riding the Bullet". He apologizes for the quality of the trailer, but shows it anyway. The crowd is indifferent, but polite. He gets a much bigger reaction by announcing that King's book Desperation will finally be made into a MOW for ABC.
In the other hall, a tall, strikingly bald man with a goatee and wild eyes is greeting people with glee and shaking hands with everyone; this is the uber-talented Sid Haig, late of House of a 1000 Corpses and Kill Bill, Vol 2. The actor is personable, outgoing, and a total delight to listen to; despite the loud din that surrounds us, his booming bass is easy to distinguish. He's surrounded by posters from 'Corpses', and the obligatory glossies, but he seems happier posing for pictures with his adoring fan base. Children in particular seem fascinated with him, and it's no wonder; Haig looks almost like a cartoon character come to life.
The crowd of fans grows as the hour gets later. What was a fairly populated thoroughfare at noon has, by three o'clock, become a traffic jam of human cholesterol to rival the nearby 5 Freeway. Pushing, jabbing masses lunge forward in their eagerness to catch a glimpse of "Candyman" star Tony Todd, who is sitting next to a heavy metal/horror/gore band that shows the same video (perhaps their only video) over and over. He looks faintly bemused as he watches a bleeding priest assaulting a pretty young thing on the television next door.
A young lady with pierced lids and a look of utter contempt is hawking DVD's, including "Shogun Assassin" and, wonder of wonders, "Eraserhead". I look at the box, but there is no mention of the company that distributes it. I ask the young lady, who is watching me carefully, if this is the official DVD release. She smiles, a very cold smile. "It's the version that I'm selling," she says. 'Nuff said.
Submit Your Film to Film Threat
In-depth movie review, featured posts, and advertisements.
Explore Packages
CONSUMING KIDS: THE COMMERCIALIZATION OF CHILDHOOD
Adriana Barbaro and Jeremy Earp's documentary attempts to get a handle on the depth and scope of marketing aimed at children in the U.S. The amount of...
JOHN MILIUS ON "ATTACK OF THE SHOW"
Yes, the man who shares the responsibility with Arnold Schwarzenegger for recording the best DVD commentary ever (if you don't know what we're talking...
RICE GIRL
"FOR SCREENING ONLY". I have a feeling these words are going to be in my dreams for the next several nights. Apparently, this is how far things have sunken...
Join our Film Threat Newsletter
Copyright ©1985-2021 Film Threat
Film Threat cares about your privacy and the security of your information. Visit our full length Privacy Policy to get informed on our policies regarding the collection, use and disclosure of information we receive from users.


text:
<?php

require_once('roster_audittrail.php');

global $week_mapping;
$week_mapping = array(
    'MONDAY' => 0,
    'TUESDAY' => 1,
    'WEDNESDAY' => 2,
    'THURSDAY' => 3,
    'FRIDAY' => 4,
    'SATURDAY' => 5,
    'SUNDAY' => 6
);

function __LOG ($message, $cease=false, $dump=false) {
    if (!WP_DEBUG) {
        return;
    }
    echo "
";
    if ($dump) {
        var_dump($message);
    } else {
        print_r($message);
    }
    echo "
";
    if ($cease) {
        wp_die();
    }
}

class Person {

    /**
     * @var WP_Post
     */
    protected $reference;

    /**
     * @var array
     */
    protected $categories;

    public function __construct($ref) {
        $this->reference = $ref;
        $this->categories = wp_get_post_categories($this->reference->ID);
    }

    public function html ($weekdays, $index=0) {
    ?>

            <?php $this->entity_cell_html(); ?>
            <?php $this->roster_html($weekdays); ?>

    <?php
    }

    private function roster_html ($weekdays) {
        foreach ($weekdays as $weekday) {
            $checked = '';
            if (in_array($weekday->term_id, $this->categories)) {
                $checked = 'checked="checked"';
            }
    ?>

                <input type="checkbox"
                       name="weekday_<?= $weekday->term_id ?>"
                       value="<?= $weekday->term_id ?>"
                       <?= $checked ?> />

    <?php
        }
    }

    private function entity_cell_html () {
    ?>

            <?= $this->reference->post_title; ?>
            <input type="hidden" name="pid" value="<?= $this->reference->ID ?>" />

    <?php
    }

    public function get_id () {
        return $this->reference->ID;
    }

    public function save_roster ($weekdays) {
        $categories = array_keys(array_filter($weekdays, function ($w) {
            return $w;
        }));
        foreach ($this->categories as $cat) {
            if (!array_key_exists($cat, $weekdays)) {
                array_push($categories, $cat);
            }
        }
        wp_set_post_categories($this->reference->ID, $categories, false);
    }
}

class Roster {

    /**
     * @var Person[]
     */
    protected $people;   // all the people posts

    /**
     * @var array
     */
    protected $weekdays; // weekday categories

    public function __construct ($weekdays, $people) {
        $this->weekdays = $weekdays;
        $this->people = $people;
    }

    public function html () {
    ?>

            <?php $this->table_header(); ?>
            <?php $this->table_body(); ?>

    <?php
    }

    private function table_header () {
    ?>

                <?php foreach ($this->weekdays as $w) { ?>

                <?= $w->name ?>

                <?php } ?>

    <?php
    }

    private function table_body () {
    ?>

    <?php foreach ($this->people as $p) {
        $p->html($this->weekdays);
    } ?>

    <?php
    }

    /**
     * @return array(int => Person)
     */
    private function get_people_in_assoc_array () {
        $result = array();
        foreach ($this->people as $person) {
            $result[$person->get_id()] = $person;
        }
        return $result;
    }

    public function save ($roster) {
        $people_dict = $this->get_people_in_assoc_array();
        foreach ($roster as $pid => $weekdays) {
            /**
             * @var $person Person
             */
            $person = $people_dict[$pid];
            $person->save_roster($weekdays);
        }
    }
}

class RosterAdminController {

    /**
     * @var Roster
     */
    protected $roster;

    /**
     * @var array
     */
    protected $weekdays;

    /**
     * @var Person[]
     */
    protected $people;

    /**
     * @var array( string => string )
     */
    protected $options;

    /**
     * @var RosterAuditTrail
     */
    protected $audit;

    public function __construct () {
        add_action('admin_menu', array($this, 'add_page'));
        add_action('admin_init', array($this, 'page_init'));
        add_action('admin_enqueue_scripts', array($this, 'enqueue_scripts'));
        $this->add_ajax_action();
    }

    protected function add_ajax_action () {
        add_action('wp_ajax_save_roster', array($this, 'save_roster'));
    }

    public function init () {
        $this->options = get_option('roster_options');
        if (!$this->options['weekday_category']) {
            $this->options['weekday_category'] = 'timetable';
        }
        $this->weekdays = $this->get_weekdays();
        $this->people_init();
        $this->roster_init();
        $this->audit = new RosterAuditTrail();
    }

    protected function roster_init () {
        $this->roster = new Roster($this->weekdays, $this->people);
    }

    public function page_init () {
        wp_register_script('floatthead_script', plugins_url('assets/js/jquery.floatThead.min.js', __FILE__), array('jquery'));
        wp_register_script('roster_script', plugins_url('assets/js/roster.js', __FILE__), array('jquery', 'floatthead_script'));
        $this->init();
    }

    public function enqueue_scripts () {
        wp_enqueue_script('floatthead_script');
        wp_enqueue_script('roster_script');
        wp_localize_script('roster_script', 'RosterAdmin', array(
            'ajax_url' => admin_url('admin-ajax.php')
        ));
    }

    public function add_page () {
        add_menu_page(
            'Timetable', 'Timetable', 'manage_options', 'timetable');
        add_submenu_page('timetable', 'By People', 'By People', 'manage_options', 'timetable', array($this, 'execute'));
    }

    public function execute () {
        if (!$this->options['weekday_category']) {
    ?>

Please set weekday category

    <?php
            return;
        }
        $this->output();
    }

    protected function header () {
    ?>

Timetable Edit

    <?php
    }

    protected function notification () {
    ?>

Roster updated.

    <?php
    }

    protected function output () {
    ?>

            <?php $this->header(); ?>
            <?php $this->notification(); ?>
            <?php $this->roster->html(); ?>
            <?php $this->submit_html(); ?>

    <?php
    }

    protected function submit_html () {
        $audit = $this->audit->get_latest_audit();
    ?>

            <input type="button" id="roster_save" class="button button-primary action" value="Save timetable">

                Last modified: <?= date_i18n('Y/m/d g:i:s', strtotime($audit->modified_at), 0) ?>

            <?= count($this->people) ?> roster(s)

    <?php
    }

    protected function people_init () {
        $args = [
            'numberposts' => -1,
            'orderby' => 'title',
            'order' => 'ASC'
        ];
        if ($this->options['people_category']) {
            $people_cat = get_category_by_path($this->options['people_category']);
            $args['category'] = $people_cat->cat_ID;
        }
        $people = get_posts($args);
        $this->people = $this->get_people($people);
    }

    /**
     * @param WP_Post[] $people
     * @return Person[]
     */
    protected function get_people ($people) {
        return array_map(function ($p) {
            return new Person($p);
        }, $people);
    }

    protected function get_weekdays () {
        global $week_mapping;
        $weekdays_cat = get_category_by_path($this->options['weekday_category']);
        $weekdays = array_map(
            function ($t) {
                return get_category($t);
            },
            get_term_children($weekdays_cat->term_id, $weekdays_cat->taxonomy));
        $result = [];
        foreach ($weekdays as $weekday) {
            $index = $week_mapping[strtoupper($weekday->cat_name)];
            $result[$index] = $weekday;
        }
        ksort($result);
        return $result;
    }

    public function save_roster () {
        $roster = str_replace('\"', '"', $_POST['roster']);
        $roster = json_decode($roster, true);
        $this->roster->save($roster);
        var_dump($this->roster);
        $this->audit->audit();
        echo "success";
        ob_flush();
        wp_die();
    }
}

class NGWeekday { // NGWeekday

    /**
     * @var NGPerson[]
     */
    protected $people;

    public function __construct ($people) {
        $this->people = $people;
    }

    public function html () {
    }
}

class NGPerson extends Person {

    public function is_checked($cat) {
        global $week_mapping;
        $today = new DateTime();
        $date_str = $today->format('Y-m-d');
        global $wpdb;
        $table = $wpdb->prefix . 'ngroster';
        $pid = $this->reference->ID;
        $results = $wpdb->get_results(
            "
            SELECT roster_date, working
            FROM $table
            WHERE pid=$pid
            AND roster_date >= '$date_str'
            "
        );

        foreach ($results as $r) {
            $w = DateTime::createFromFormat('Y-m-d', $r->roster_date)->format('N') - 1;
            if ($w == $week_mapping[strtoupper($cat->cat_name)]) {
                return boolval($r->working);
            }
        }
        return in_array($cat->term_id, $this->categories);
    }

    public function html($cat, $index=0) {
        $is_checked = $this->is_checked($cat);
        $thumbnail_id = get_post_thumbnail_id($this->reference->ID);
        $thumbnail_url = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');
        $id = $this->reference->ID;
        $title = strtoupper($this->reference->post_title);
        if (!$thumbnail_url) {
            $thumbnail_url = plugins_url('assets/images/no_photo.jpg', __FILE__);
        } else {
            $thumbnail_url = $thumbnail_url[0];
        }
    ?>
        <div class="person-grid" data-edik-elem="<?= $id . ':' . esc_attr($title) ?>" data-edik-elem-type="people">
          <input type="checkbox" data-edik-elem="<?= $title ?>"
                 data-edik-elem-title="<?= $id ?>"
                 data-edik-elem-type="person" class="on"
                 <?= $is_checked ? 'checked="checked"' : '' ?>/>
          <img data-edik-elem="overlay" class="overlay"
               src="<?= plugins_url('assets/images/on.png', __FILE__) ?>" />
          <img data-edik-elem="gthumb" class="gthumb"
               src="<?= $thumbnail_url ?>">

<?= $this->reference->post_title ?>

    <?php
    }
}

class NGRoster extends Roster { // NGRoster

    const NUMBER_OF_DAYS = 7;

    public function html() {
    ?>

                <?php
                    $today = new DateTime();
                    for ($i = 0; $i < self::NUMBER_OF_DAYS; $i += 1) {
                        if ($i != 0) {
                            $today->add(new DateInterval('P1D'));
                        }
                        $this->weekday_html($today, $i==0);
                    }
                ?>

    <?php
    }

    /**
     * @param DateTime $today
     * @param Boolean $open
     * @return string
     */
    protected function weekday_html ($today, $open) {
        $title = $today->format("l (j/M/Y)");
        $day_of_week = $today->format("N");
        $cat = $this->weekdays[$day_of_week - 1];
    ?>
        <li class="control-section accordion-section <?= $open ? 'open' : '' ?>"
            id="<?= $today->getTimestamp() ?>">
            <h3 class="accordion-section-title hndle" tabindex="0" title="<?= $title ?>">
                <?= $title ?>

                            <input type="text" data-edik-elem="search" class="search" />

                            <?php $this->people_html($cat); ?>

    <?php
    }

    protected function people_html($cat) {
        foreach ($this->people as $p) {
            /**
             * @var NGPerson $p
             */
            $p->html($cat);
        }
    }

    public function save($roster) {
        global $wpdb;
        $prefix = $wpdb->prefix;
        $table = $prefix . 'ngroster';

        $wpdb->query('START TRANSACTION');
        foreach ($roster as $p => $weekdays) {
            foreach ($weekdays as $w => $working) {
                $pid = intval($p);
                $date = new DateTime();
                $date->setTimestamp($w);
                $date_str = $date->format('Y-m-d');
                if (!$wpdb->get_row("SELECT 1 FROM $table WHERE pid=$pid AND roster_date='$date_str'")) {
                    $wpdb->insert(
                        $table,
                        array(
                            'pid' => intval($p),
                            'roster_date' => $date->format('Y-m-d'),
                            'working' => $working
                        ));
                } else {
                    $wpdb->update(
                        $table,
                        array('working' => $working),
                        array('pid' => $pid, 'roster_date' => $date_str));
                }
            }
        }
        $wpdb->query('COMMIT');
    }

}

class WidgetPerson extends NGPerson {

    public function html($cat, $index=0) {
        $is_checked = $this->is_checked($cat);
        if (!$is_checked) {
            return;
        }
        $thumbnail_id = get_post_thumbnail_id($this->reference->ID);
        $thumbnail_url = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');
        $id = $this->reference->ID;
        $title = strtoupper($this->reference->post_title);
        if (!$thumbnail_url) {
            $thumbnail_url = plugins_url('assets/images/no_photo.jpg', __FILE__);
        } else {
            $thumbnail_url = $thumbnail_url[0];
        }
        $post_url = get_permalink($id);
        ?>
        <article class="slide-entry flex_column post-entry post-entry-<?= $id ?> slide-entry-overview
                        slide-loop-<?= $index ?>
                        slide-parity-<?= ($index + 1) % 2 == 0 ? 'even' : 'odd' ?>
                        av_one_fifth <?= $index % 5 == 0 ? 'first' : '' ?> fake-thumbnail"
                 itemscope="itemscope" itemtype="https://schema.org/BlogPosting" itemprop="blogPost">
            <a href="<?= $post_url ?>" data-rel="slide-1" class="slide-image" title="">
                <img width="300" height="420" src="<?= $thumbnail_url ?>"
                     class="attachment-portfolio wp-post-image" alt="image">

                        <a href="<?= $post_url ?>" title="<?= $title ?>"><?= $title?>

        <?php
    }
}

class WidgetRoster extends NGRoster {
    public function html() {
        ?>

                <?php
                $today = new DateTime();
                for ($i = 0; $i < self::NUMBER_OF_DAYS; $i += 1) {
                    if ($i != 0) {
                        $today->add(new DateInterval('P1D'));
                    }
                    $this->weekday_html($today, $i==0);
                }
                ?>

        <?php
    }

    protected function people_html($cat) {
        $index = 0;
        $need_to_close = false;
        foreach ($this->people as $p) {
            /**
             * @var WidgetPerson $p
             */
            if (!$p->is_checked($cat)) {
                continue;
            }
            if ($index % 5 == 0) {
            ?>

            <?php
                $need_to_close = true;
            }
            $p->html($cat, $index++);
            if ($index % 5 == 0 && $index != 0) {
            ?>

            <?php
                $need_to_close = false;
            }
        }
        if ($need_to_close) {
        ?>

        <?php
        }
    }

    /**
     * @param DateTime $today
     * @param Boolean $open
     * @return string
     */
    protected function weekday_html ($today, $open) {
        $title = $today->format("l (j/M/Y)");
        $day_of_week = $today->format("N");
        $cat = $this->weekdays[$day_of_week - 1];
    ?>

                        <?= $title ?>

                    <?php $this->people_html($cat); ?>

    <?php
    }
}

class NGRosterAdminController extends RosterAdminController {

    protected function roster_init () {
        $this->roster = new NGRoster($this->weekdays, $this->people);
    }

    public function page_init()
    {
        wp_register_script('ngroster_script', plugins_url('assets/js/ngroster.js', __FILE__), array('jquery'));
        wp_register_style('ngroster_style', plugins_url('assets/css/ngroster.css', __FILE__));
        $this->init();
    }

    public function enqueue_scripts () {
        wp_enqueue_style('ngroster_style');
        wp_enqueue_script('ngroster_script');
        wp_enqueue_script( 'accordion' );
        wp_localize_script('ngroster_script', 'NGRosterAdmin', array(
            'ajax_url' => admin_url('admin-ajax.php')
        ));
    }

    /**
     * @param WP_Post[] $people
     * @return NGPerson[]
     */
    protected function get_people($people) {
        return array_map(function ($p) {
            return new NGPerson($p);
        }, $people);
    }

    public function add_page()
    {
        add_submenu_page('timetable', 'By Date', 'By Date', 'read', 'by-date', array($this, 'execute'));
    }

    public function save_ngroster () {
        $roster = str_replace('\"', '"', $_POST['roster']);
        $roster = json_decode($roster, true);
        $this->roster->save($roster);
        var_dump($this->roster);
        $this->audit->audit();
        echo "success";
        ob_flush();
        wp_die();
    }

    protected function add_ajax_action()
    {
        add_action('wp_ajax_save_ngroster', array($this, 'save_ngroster'));
    }

}

?>