Posted on Leave a comment

News “from Nonno’s garden to Nonna’s kitchen”

Original cover of "from Nonno's garden to Nonna's kitchen"

Every journey starts with a single step

Above is the cover of the original Snapfish book which Vincenzina (Wynne) made with loving care for her family to answer their questions “Nonna how do we make that?”.

authors-books is also on an exciting journey with a new recipe for book distribution direct from the author to the reader. And we’re so happy that Vincenzina and Tony have allowed us to host their book for sale internationally.



Nonna Wynne’s book is so good that one day you may be able to buy it anywhere. But not today. Today, unless you know Wynne personally or stumble across it in a Dee Why village shop, you’re out of luck except HERE at authors-books.

US$ 25.07Add to cart

Do a Price Comparison? – Na Na Na Na Na Na Na

Please don’t waste your time on trying to do a price comparison – you’re not going to find “from Nonno’s garden to Nonna’s kitchen” anywhere else online. This is it. At least, for the moment. For this edition. But – Breaking News – “from Nonno’s garden to Nonna’s kitchen” is already into the second printing, less than a month after it’s first release.

Go down a Blind Alley? – Na Na Na Na Na Na Na

Have you read about the Google Books Blind Alley? Look, we’ve offered to help. Had we managed to be heard, then we would have notified Google Books via our suggested Advise Google form. So simple, but, ah well? Meanwhile for simple but delicious recipes, go into the kitchen with Nonna Wynne.

So the last word goes to Wynne and Tony

These simple yet stunning culinary delights of southern Italy, in the region of Reggio Calabria, are passed down through countless generations. They come together and will offer comfort and inspiration for many generations to come.

The back cover of "from Nonno's garden to Nonna's kitchen" with Tony and Wynne
The back cover of “from Nonno’s garden to Nonna’s kitchen” with Tony and Wynne




I hope you enjoy eating this food as much as I have enjoyed bringing these traditional recipes from Nonno’s garden to Nonna’s kitchen.

US$ 25.07Add to cart



Buon appetito… love Nonna Wynne and Nonno Tony


Posted on Leave a comment

Google Books Blind Alley

Google Books Blind Alley. You won't find where to buy Molly Moo from Mollymook by Sue Hays here

Photo by Diego Romeo on Unsplash

Help Google Books

This is episode 3 of our Google education effort. Have you read episode 1,  Global Ghosts Afterlife? Therein we explore some difficulties you may encounter if you change your domain name. In episode 2 Google Ghosts Trap we look at another manifestation of ectoplasm in which authors-book has become enmeshed.

Now authors-books would like to help Google Books find more books and not lead to a Google Books Blind Alley. We have tried to communicate, but an elephant can be haughty and not hear the ant.

The Elephant who doesn't hear the Ant
The Elephant who doesn’t hear the Ant

Google Books Blind Alley One

Moo ….. Molly Moo ….. Molly Moo from Mollymook!

Molly Moo from Mollymook front cover
The cover of Molly Moo from Mollymook


Here’s the irony.

Just do any internet search for Molly Moo from Mollymook and the page 1, probably number 1, result will be authors-books.

But, search for Molly Moo from Mollymook with either classic Google Books, or the new Google Books and the results will be of no help at all for you to purchase the book.

The problem is clear to see. Google Books is looking in the wrong place for many books. So classic Google Books is implying that Amazon, Booktopia, Dymocks and Fishpond might be good places to look and the new Google Books is offering Barnes & Noble, Books-A-Million and Amazon. But authors-books can tell you, you’re wasting your time, because at authors-books we personally know the author and know that we are now the sole stockist.

We’d be happy to so inform Google Books if only there was a way to do so. A way for the Ant to talk to the Elephant. Surely, it wouldn’t be difficult if the Elephant, with his big beautiful ears and sensitive trunk, just decided to reach out and listen?

Google Books Blind Alley Two

The book cover of 'This is Michael' is plain green, with clear black text showing the title and the author name, with no illustration. DJ Hammond
This is Michael- front cover

While Google Books was no help to someone wanting to purchase Molly Moo from Mollymook, or indeed any of the other titles by Sue Hays, at least it mentioned Monty the Mutt from Milton and Peppy the Paint from Pigeon House as other titles by the author.

However, This is Michael by Dian Hammond is unknown to Google Books. Although, it is listed in The National Library of Australia catalogue.

Now in the case of This is Michael, as well as purchasing it from authors-books, you can also buy it in Ballarat, Victoria, Australia at Collins Booksellers. Once again unknown to Google Books. If only Google Books could easily be told.

Able Golden Book Awards 2025 Nominated This is Michael by D J Hammond
Able Golden Book Awards 2025 Nominated This is Michael by D J Hammond

This is Michael is an entrant in the Able Golden Book Awards 2025. The author, Dian Hammond has been notified that This is Michael is a Finalist in the Awards.

Google Books Blind Alley Three

The cover of The Cheeky Possum
The cover of The Cheeky Possum

The concept for authors-books came about on discovering the difficulty of distributing a book other than through well established publisher to distributor to wholesaler to bookshop relationships. Also, on hearing some of the difficulties of self-publishing and worse, vanity publishing.

This reality was kindly explained to us by John at The Book Room Collective in Byron Bay. On vacation enjoying the Queensland sunshine, it was time to dream. What crystallised you can read here about us authors-books.

Not easily deterred and on a mission our publishing imprint Data Stream Pty Limited has now published two more children’s books by Alexandra Tesoriero: The Wise Little Owl and Magic sounds.

Yet, while all three books can be found through Google Books, yet again it is a Google Books Blind Alley. There is NO useful suggestion on where these books can be purchased. We did try to give feedback to Google Books, pointing out that Google’s own search engine has no difficulty finding these titles, usually number 1 on page 1, for purchase at authors-books. But sadly, at Google the left hand does not know what the right hand is doing. While this is laudable for carrying out works of charity (Matthew 6:3), surely it is tiresome when the Google Books claim is to be able to “Search the world’s most comprehensive index of full-text books.”

Please Let Us Educate the Elephant

A form to advise Google Books about a title
A form to advise Google Books about a title

The elephant, with a long memory, so beautiful, wise and knowledgeable, please let us educate you. Please don’t be a Google Books Blind Alley, we’d like to help. It wouldn’t be difficult would it? Just a simple form.

❤️😘😍 🙏🙏🙏 🐘🐘🐘 🎆🎆🎆

Google Books Blind Alley No More

Google Books, you can be in the vanguard! Do not be the Google Books Blind Alley. Be the Elephant that lets the Ants help you. Be all hearing, all seeing of:

  • New models of book distribution
  • Country based and regional booksellers
  • Community publishing groups and enterprises

authors-books is a new paradigm online book seller

A new model of book distribution where you will find many authors and titles not available elsewhere.

Although not always consciously recognized, book publishing and distribution is a lottery for new authors. Works of great distinction can be unrecognized for years, decades or lifetimes.

Dip into Authors’ Books and who knows what treasure you will find from an author determined to speak?

When you buy a book here many of our authors will send you a signed copy with the personal inscription you ask for!

Are you an author who would like to have your book(s) for sale here? Please read about The Authors’ Community which tells you how you can apply.

Country based and regional booksellers

As noted above in Google Books Blind Alley Two, people can buy This Is Michael in Ballarat, Victoria, Australia at Collins Booksellers. Wouldn’t it be helpful if that possibility was presented by Google Books? Why not? Why not indeed. We have here suggested the solution for greatly enriching Google Books with missing information encompassing country based and regional booksellers to make Google Books so much better.

Community publishing groups and enterprises

We were recently inspired by another example of Changing Australia on hearing about Kids’ Own Publishing. How wonderful if all the books at this and other community endeavours were findable through Google Books. And once more the left hand hasn’t let the right hand know what it’s doing.

So we just picked the first book, A Quack in Time, in the Kids’ Own Publishing Book Shop. You can do the Google search for the title. Yes there it is at search result number 1, the book launch. And at number 3 on Instagram. Kids’ Own Publishing is professional, they’ve done the hard yards and certainly would have told Google Books had they had access to the Google Books Index Advice. Simple as ABC Alphabet. Go get’m Google.

authors-books Google Education Series

Past episodes

Have you read episode 1,  Global Ghosts Afterlife? Therein we explore some difficulties you may encounter if you change your domain name. In episode 2 Google Ghosts Trap we look at another manifestation of ectoplasm in which authors-book has become enmeshed.

Future episodes?

Maybe. Currently considering our struggles with the Google Merchant Center.

Posted on Leave a comment

Google Ghosts Trap

A fan model of a Ghost Trap as featured in the 1984 Ghostbusters film

The image kindly made available at GB fans forum

The Story continues …

This is episode 2 of our Google education effort. Have you read episode 1,  Global Ghosts Afterlife? Therein we claimed and explained that our site essentially didn’t have 404 not found errors. To get the SEO right we are using Rank Math SEO, and with the advent of the Global Ghosts, it was time to turn on a module for which we thought we had no use, the 404 monitor.

Parapsychology and the Image Proxy

How do ghosts multiply? Surely we had laid the global ghosts and the google ghosts revealed in the Google Search Console by redirection to the afterlife? So our 404 monitor should be clean apart from the haphazard? But, Oh dear, no! So many entries and with common characteristics. So let’s look at this one ,,,

URIwp-content/imagescaler/ad3e154bee03f2b5acf54109eafa19cb.jpg
User-AgentFirefox 11.0 | Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)

Parapsychology as a science

Things we noticed and investigated:

  • many of the references are to folder wp-content and the file extension is jpg, so these are images.
  • the user agent refers to (via ggpht.com GoogleImageProxy). What’s that?
  • can we actually return the image from the Internet Archive? (see episode 1).

Extraterrestrial: Google Phone Home

So the User Agent says: (via ggpht.com GoogleImageProxy) and if you Google search “ggpht.com GoogleImageProxy” one of the results at the time of writing is Dealing with false opens in Gmail  It seems you would have to be an email marketing expert to make much sense of the findings in that article.  But one thing is clear, this is the published Google Image Proxy. BUT, sometimes, the image proxy is looking in the wrong place for the image and receiving a 404 not found response.

Looking in the right place, here is the image you would see based on the URI and using a little bit of work with the WaybackMachine.

Cover of The Girl with the Dragon Tattoo by Stieg Larsson
Cover of The Girl with the Dragon Tattoo by Stieg Larsson

What we intend people to see for the time being, is this:-

A fan model of a Ghost Trap as featured in the 1984 Ghostbusters film
A fan model of a Ghost Trap as featured in the 1984 Ghostbusters film

In other words, a direction to this post which gives guidance as to where you might find the original image of the cover of The Girl with the Dragon Tattoo by Stieg Larsson.

Past Lives and the Paranormal

So we know that authors-books had a past life and the image of the cover of The Girl with the Dragon Tattoo by Stieg Larsson is an artifact of that past life. These observations emerge in the context of our difficulties with Google search, where we’ve gone from hero to zero, we believe and intend to prove, through no fault of ours (we’re still on page 1 in Bing search and DuckDuckGo, etc) And while Google features large in our observations because of the image proxy and wide adoption of Gmail, this is in fact another global problem. So authors-books would like to suggest a global solution.

The Global Ghost Code

Wikipedia has a list of HTTP status codes. The 4xx rage are client errors. Some people have suggested in cases like that above, the site should return 410, sometimes described as content deleted. But that’s not true. On the current incarnation of the website it never existed.

Would love to have come up with a clever suggestion for the code, as in 451 Unavailable for Legal Reasons, a reference to the novel Fahrenheit 451. Ideas please. But in the meantime, what about:

452 Property of a Previous Owner of the Domain Name

This request probably relates to a page or image from a website established by a previous owner of the domain name. It has never been available on the website of the present owner of the domain name. The page or image may be available at the Internet Archive on the WaybackMachine.

452 – a solution for generations to come

Alphabet, please get behind this idea. When Google Image Proxy or any other system receives a 452 response there’s constructive action to be taken. Perhaps automatically trying the Internet Archive? Whatever, the world has been given a more meaningful response.

Much more to come …

This is the end of episode 2 of our Google Education series.  So much more to say, so episodes 3, 4, … coming. And we know we’re doing our SEO well because we’re on top of page 1 in Bing, DuckDuckGo, etc. with searches where we’re nowhere in the Google results!

The Previous and Next Episode

Update 2nd October 2025.
Hurray, we’re now found in Google searches. We changed nothing, but Google Search has caught up.
The previous episode Global Ghosts Afterlife published 16th October 2024.
The next episode Google Books Blind Alley published 18th October 2025.

Posted on Leave a comment

Clunes Booktown Festival 2025

Happy helpers at Clunes Booktown

The Clunes Booktown Festival 2025 is on Saturday/Sunday 22 & 23 March.

We’ll be there! Find us at stall P

[pdf-embedder url=”https://authors-books.com/wp-content/uploads/2025/02/ClunesBooktown2025.pdf”]

 

Support Creative Clunes

Please consider supporting Creative Clunes.

authors-books is a Small Business Friend of Booktown.

Join Other Book Authors at authors-books

Are you an author wanting to sell more and earn more?  Why not join The Authors’ Community?

Liberating Books
Liberating Books (photo by Eugenio Mazzone)

Posted on Leave a comment

The World is Your Pearl on goodreads

Cover of The World Is Your Pearl: My adventures from Bougainville to Ladakh and Everywhere in between.

An inspiration. Glenda perceives the light and hope in every situation however dark the surface appearance.

I’m full of admiration for Glenda’s tenacity. How in so many spartan situations, whatever the challenges, did Glenda keep her diary in order to recount these glorious adventures? So impressed.

One of the few books I intend to read again. The World is your Pearl.

Posted on Leave a comment

Global Ghosts Afterlife

ECTO 1 in full flight in pursuit of Google Ghosts afterlife

Credit: Photo by Winston Chen on Unsplash

The Story so far

The advice for some time had been, that to achieve our goal, we needed the right brand. As a micro startup, to set things in motion, we’d gone with our business name Data Stream World and we took the domain name datastream.world. Yes that’s a new top-level domain (TLD .world). And we said the brand was Author Direct Bookshop, but, it never did seem right.

Then when Facebook become Meta, Google become Alphabet and Twitter become X, we wondered why can’t Data Stream World become Author’s Books? We were delighted to find that the domain name authors-books.com was available. Wow! An actual .com that’s completely the brand. New logo, move the site to the new domain name and we’re away. Or so we thought.

With our old domain name, if you searched in Google for a book title on our site we were always number 1 or 2 in the search results. Yes, we’d got the SEO right using Rank Math. Then why with the new domain name and an otherwise identical site are we nowhere? Literally nowhere! This post is just one part of the story of our effort to find the answer.

Google Ghosts

Our site doesn’t have 404s. Yes, well if you key the URL ‘authors-books.com/nonsense’ you will get a 404 response. That’s a real 404. But Google Search Console should not be getting 404 responses. It never did with the original domain name of datastream.world. And we regularly run a link checker. So, what’s going on?

Why are we receiving emails from Google Search Console telling us there are reasons pages are not being indexed? Really didn’t happen before. Better take a look. Horror!

There’s this bunch of URLs (see image below captioned ‘Google Ghosts Cellar URLs labelled vintage authors-books.com’) that have never been on our site. We’ve never heard of them!

And into the bargain the URLs are HTTP. Our sites, datastream.world and authors-books.com have always been HTTPS. We’re talking about current professional websites after all.

Google Ghosts Cellar URLs labelled vintage authors-books.com
Google Ghosts Cellar URLs labelled vintage authors-books.com

Internet Archive

Ah! So perhaps this domain name belonged to someone else before? But, why on earth has Google Search Console associated that data with our Google account? After all, we’ve had to jump through hoops proving we own the domain.

Now experience tells us, we’re seldom alone with a problem. So, we go ahead with a (yes) Google search “404 previous owner URL”. And there they all are, people experiencing the same issue. At least one of the entries refers to the Wayback Machine.

So, we pop one of the URL’s into the Internet Archive and there it is.

AUTHORS-BOOKS.COM from the Wayback Machine
AUTHORS-BOOKS.COM from the Wayback Machine

Now some of the “experts” advising worried site owners give advice that Google Search Console has a very busy bot and it may not be that speedy in forgetting old memories and getting up to date. Heavens above! This capture was made only once in 2010CE. Apparently, the site became unreachable not long after.

Current XML Sitemap

Our site has an excellent XML site map generated by Rank Math. We don’t think we ever explicitly submitted to Google Search Console a site map with our original domain name datastream.world. Perhaps, Google Search Console found it, or Rank Math submitted it, we’re not sure, but the end result was top rankings for the titles on our site.

However, some of the “expert” advice talked about submitting a sitemap to Google Search Console, so we looked to do that. Unbelievable, there was a site map that never was on our site, submitted over ten years ago with all these non-existent HTTP URLs! By what misguided mechanism did it become associated with our site?

We instructed Google Search Console to drop this ghost, hoping things would improve. But no. It seems these ghost URLs are very difficult to lay. How ironic that one of the titles was “Dark Life by Kat Falls”. Time for ghost busting! So here we are, we now have redirections from those URLs to this page.

Global Ghosts and Google Ghosts

Global Ghosts are references to no longer existing pages. The page might not exist for a variety of reasons. One of these reasons is that the domain name ownership is not renewed and has reverted to an available name with the domain registrar. That’s an artefact of the domain name system.

Google Ghosts as found in the Google Search Console look like cobwebs that need to be swept away. Is there not an opportunity when the proof of ownership of the domain name takes place to ask whether any data held by Google Search Console is still relevant to the website of the new domain owner? Then, at that time, Google Search Console has a chance to sweep the cellar clean if that’s what’s desirable.

Backlinks

In the hope of mutual benefit and the possible continuing power of backlinks we’ll happily list your site here if you too have suffered from the afterlife of Google Ghosts. Please send an email subject “Google Ghosts Afterlife backlink” to webmaster@authors-books.com. Please include the URL where we can view your link to this post. Also a few words you’d like to go with our link to you and the URL you’d like us to reference.

The Next Episode

This is the end of episode 1 of our Google Education series.  Episode 2 ‘Google Ghosts Trap‘ published March 2025.

Posted on Leave a comment

Toggle WordPress Background Image for Readability


Why and How We Toggle the Background

For reasons related to the origin of our site we want to keep our background image although for readability it is less than ideal. So the question was, how do we enable the user to effortlessly hide the background image if they wish to improve the contrast of the page?

As our site uses WooCommerce, for small mobile screens we wanted to have our ‘Contrast’ button in the handheld footer menu.

While the button would say ‘Contrast’, we thought a, not to be missed, tooltip was necessary. Also a tooltip that would, in some way, cope with the absence of hover on touch screens was desirable.

Then it seemed that once the background image was hidden, the new state should apply to all newly opened tabs. This was achieved through the use of a cookie. Indeed, the background image state would apply consistently in the browser until the cookie expired after a day.

How we implemented each of the above goals is described in the following sections.

There’s quite a lot of JavaScript code to follow in this. If you’d like to see the completed code this can be done using the Chrome Developer Tools. Look at the ‘Sources’ tab and find the file ‘https://authors-books.com/wp-content/uploads/siteground-optimizer-assets/custom-js.min.js’. This is a minified file, however, there is a pretty-print icon ‘{ }’ in the footer of the code window that allows you to see the formatted code. Update 4 May 2021. To look at the particular file you need to be logged in, but no problem, just register and when you’ve finished, there’s a ‘Delete My Account’ option in the Dashboard. We’ll forget all about you!

Steps for a Floating ‘Contrast’ Button

  1. Guided by one of many posts on the topic of a floating button, we added the following to the style.css file in our child theme.
    #contrast_button {
          position: fixed;
          z-index: 99999;
          right: 20px;
          top: 100px;
    }
    For the button to be mouse sensitive we found we needed a large z-index. The value of 99999 is arbitrary and effective. (Our effort to find the highest z-index in use in the stacking context was disapointingly fruitless.)

    We also copied header.php to our child theme and included, as a new <div> after #content, the following:
    <div id="contrast_button" class="a_contrast">
          <a id="a_contrast" href="javascript:void(0);"
               title="Toggle background image.">Contrast</a>
    </div>

    We don’t want the anchor click to take us anywhere, so the href we’ve used is explained in “Is an empty href valid?“.

  2. However, so far the anchor does not look like a button. So we added this style.css in our child theme:

    /* make the link look like a button */
    #contrast_button{
          border: 1px solid black;
          border-radius: 5px;
          padding: 0px 3px;
          background-color: #E3E3E3;
    }

    #contrast_button:hover{
          background-color: #E0FFFF;
    }

  3. When we click the button we want to hide the background image. An inspection of page source or the article How To Properly Add Background Images To Your WordPress Site tells us that we need to remove the css for the class custom-background and replace it with other css that we’ve called custom-contrast. So we added this css to our child theme style.css:
    /* Toggled values to replace custom-background */
    .custom-contrast{
          background-image:none;
          background-color: #E3E3E3;
    }
    Then, following the up-voted code in Changing background color in wordpress with a button so that these values toggle when we click the button, we added the following to our custom.js file (we’re using the theme-customisations plugin):
    jQuery(function($){
          $("#contrast_button").on("click", function(e){
               e.preventDefault();
               $('body').toggleClass(
                    'custom-background custom-contrast');
          });
    });

    To allow us to use the $ shortcut we have followed Using ‘$’ instead of ‘jQuery’ in WordPress and also the recommended jQuery syntax.

And that’s all that’s necessary for the floating button.

Handheld Footer Bar ‘Contrast’ Button

  1. Guided by Customize links in the handheld footer bar we added the following to our functions.php:
    /*
    * Add a link in the handheld footer bar
    */
    add_filter( 'storefront_handheld_footer_bar_links',
         'add_contrast_link' );
    function add_contrast_link( $links ) {
         $new_links = array(
               'contrast' => array(
                    'priority' => 10,
                    'callback' => 'contrast_link',
               ),
         );
         $links = array_merge( $links, $new_links );
         return $links;
    }
    function contrast_link() {
         echo '<a id="contrast_bar_button"
              href="javascript:void(0);"
              title="Tap to toggle background image.">'
                   . __( 'Contrast' ) . '</a>';
    }
    This is enough to add the link in the footer bar, but we do not yet have an icon.  So, additionally we need to add to style.css:
    .storefront-handheld-footer-bar ul li.contrast > a:before {
          content: "f042";
    }

  2. For the footer bar button to do the same action as the contrast button, we just need to add its selector to the line:
    $("#contrast_button").on("click",function(e){
    to become:
    $("#contrast_button, #contrast_bar_button").on("click", function(e){

  3. And lastly, we needed to turn off the ‘Contrast’ button in the page body, so we added this to style.css:
    /* don't display the contrust button on handheld */
    @media only screen and (max-width:768px){
          #a_contrast, .a_contrast {
               display: none !important;
          }
    }

And that’s all that’s necessary for the footer bar button.

Adding a Big Tooltip to the ‘Contrast’ Button

  1. For the tooltip we followed the post Responsive and Mobile-Friendly Tooltip.  So firstly we added the attribute rel="tooltip" to our anchor elements (id’s a_contrast and contrast_bar_button) above.

    Then, we wanted the tooltip:

    1. to automatically disappear after 3 seconds.
    2. to show itself on page load, so attention is drawn to the button.
  2. So we included the CSS as shown in the post in style.css, except for small variations as shown here:
    #tooltip
    {
          text-align: center;
          color: #fff;
          background: #0000FF;
          position: absolute;
          z-index: 99999;
          padding: 15px;
          border-radius: 5px;
    }
    Here we’ve chosen a different background colour, we needed to increase the z-index and we choose rounded corners.
  3. We included the JavaScript largely as shown, but with the following changes for 1a and 1b above and since we already have document ready handling, then c below:
    1.  We added, at the end of the init_tooltip function, a timeout, thus:
      window.setTimeout(remove_tooltip, 3000);
        
    2. The changes for the on page load tooltip display are fivefold:
      1. we named the function bound to the variable targets using a function expression, thus:
        var show_tip = function()
          
      2. So now we have (noting that .bind is, sort of, deprecated), to keep the original functionality:
        targets.on( 'mouseenter', show_tip);
          
      3. Then we added after the above line of code:
        show_tip();
        in order to show the tooltip on page load, however, there is a problem, because the object this is the window object and not the button clicked.
      4. So how to select the button?  Well the buttons are held in the variable targets and in our case only one is visible, either the floating button or the footer bar button.  So which is visible?  Guided by How to check an element is visible or not using jQuery this is how we found out:
        var vis;
        $(targets).each(function (index, element){
              if ($(element).is(":visible")){
                   vis = element;
                   return false;
              };
        });
        So now we know which button element is visible and thus the button we should tooltip when this is the window object.  
      5. This is how we test if this is the window object, so accordingly we evaluate:
        this != null && this === this.window
        Hence we replaced:
        target  = $(this);
        with:
        target = $(
             (this != null && this === this.window)? vis : this
        );
         
    3. We removed the construct:
      $( function() { < // code we keep >  });
      since we already have a document ready construct:
      jQuery( function($) {  // Our toggleClass code  });
      so we included all our code within this later construct.

And that’s all that’s needed for the footer bar ‘contrast’ button.

Using a Cookie to Know the ‘Contrast’ State

  1. Knowing nothing of the subject, we first read How to Set, Get, and Delete WordPress Cookies (like a Pro).  We also read the PHP documentation on setcookie, noting the protocol restrictions regarding HTTP headers.
  2. Our cookie was generally to have a value of ‘low’ or ‘high’ corresponding to the contrast states of, background image showing, and no background image, respectively.  However, we introduced an initial state of ‘init’ which allowed us to show our tooltip for longer when the cookie was created.
  3. Update 22 May 2020.  With the buzz around Chrome’s cookie SameSite policy rollback in the COVID-19 pandemic, we decided now was the time to get SameSite as right as possible.   Our current PHP version is 7.3 and is relevant to our solution as discussed.  Getting it right was not easy as there are suggestions which did not work for us.  On reading Secure better your website with SameSite cookies we used the header function to set the cookie where formerly we had used the setcookie function.  So to create our cookie we added the following to theme functions.php:
    /*
    * Contrast cookie
    */

    function set_contrast_cookie() {
          // Check if cookie is already set
          if(!isset($_COOKIE['contrast_state'])) {
               // Set the cookie, expires in 1 day
               $expire = date('D, d M Y H:i:s', time() + 60*60*24); // one day from now
               header("Set-cookie: contrast_state=init; expires=$expire; path=/; SameSite=Lax");
          }
    }
    add_action('init', 'set_contrast_cookie');

  4. Once the cookie has been created, all our other cookie handling can be done by the browser with JavaScript.

    How should cookies be handled JavaScript?  We found How do i set/unset a cookie with jQuery which pointed us to js-cookie.

  5. Update 4 May 2021.  Previously, we did not need to load js-cookie as that was being loaded by WooCommerce.   but then we hit a snag when we implemented Perfmatters for performance reasons.  With version 1.6.9 of Perfmatters there were ‘Multiple improvements to WooCommerce disable scripts …’, so js-cookie was no longer being loaded on most of our pages. Thus we needed to load it when necessary.

    The fact that js-cookie wasn’t being loaded showed up on the console as ‘Cookie’ being undefined.  So our approach was to trap this condition with try and catch statements.  But now, how does one dynamically load the required script? We came to Dynamically load JS inside JS [duplicate] and way down with only 8 up votes read about  extending jquery.getScript to have the loaded script cached.  What a nice idea, so we went for that.

  6. To remove the background image if the cookie value is ‘high’, we need to act as if the ‘contrast’ button had been clicked.  So we added the following to custom.js:
    var contrast;
    // Page load set contrast high if necessary
    contrast = Cookies.get("contrast_state");
    if (contrast == 'high') {
         $('body').toggleClass('custom-background custom-contrast');
    }
  7. Now we needed to set the cookie when the ‘contrast’ button is clicked, so we added to custom.js in the function for the contrast button .on(‘click’:
    contrast = Cookies.get("contrast_state");
    Cookies.set('contrast_state',
         (contrast == 'low') ? 'high' : 'low',
         {expires: 1, path: '/', sameSite: 'lax'});

  8. We decided that we only wanted the tooltip to show without focus being on the ‘contrast’ button on the occasion when the cookie was created.  We thought that for it to appear on every page load might be irritating.  So we modified the show_tip(); statement to be:
    contrast = Cookies.get("contrast_state");
    if (contrast == 'init') {
         show_tip();
         Cookies.set('contrast_state', 'low',
              {expires: 1, path: '/', sameSite: 'lax'});
    }
  9. As mentioned above, we wanted the tooltip to show for longer on the initial page load when the cookie is created.  It’s now the case that the page load show_tip() is only done when the cookie value is ‘init’, that is only once before the cookie expires.  So we made some changes to the custom.js code.  In place of :
    var show_tip = function()
    {
         target = $((this != null && this === this.window)? vis : this);
    we now have:
    var show_for;
    var is_window;
    var show_tip = function()
    {
          is_window = (this != null && this === this.window);
          show_for = is_window ? 6000 : 3000;
          target = $(is_window ? vis : this);

And that’s all that’s needed for the cookie to know the contrast state.

Just a reminder, if you want to see all the JavaScript code, we explain how in the last paragraph of the first section ‘Why and How …’.

Posted on Leave a comment

The Cheeky Possum Grammar Notes


This Publisher’s Grammar Notes and References for Punctuation and Capitalization

Grammar: Punctuation and Capitalization
Grammar: Punctuation and Capitalization

In text editing for grammar we aim to be both consistent and only to change the author’s text where it seems necessary to avoid a glaring error.  In consequence, we keep as close as possible to the author’s work.  The Cheeky Possum text rhymes, so we have looked for grammar practices acceptable in poetry, which offer greater latitude than prose.

We hope these notes are useful to encourage the exploration of writing style and rules. Text editing … ugh!

Run-on Sentences, Comma Faults, …

Arguments can be mounted that the opening sentence of The Cheeky Possum should be multiple sentences, but we find it a great introduction to Peter and only when he’s given us his substance, do we stop and digest it.  Before coming to this conclusion, a number of articles published on the web were considered:

Capitalization in Poetry and ‘ise’ or ‘ize’

On capitalization of the first word of a line in poetry, as exhibited in The Cheeky Possum, we cite Alberto Rios writing on the subject.  Further, on our spelling of the word ‘capitalization’ in British and Australian English, we cite The Conversation article on the use of ‘ise’ and ‘ize’.

Should there be a Comma before a Quote?

Should there always be a comma before quotes? Not necessarily according to the Sesquiotica blog.  Apart from stand-alone, speech quoted sentences in The Cheeky Possum, all other speech can be viewed as anecdotal, broad-view description.

Capital Letter for a Quote in a Sentence?

The Grammar Monster says, “There is a lot of leniency on the use of capital letters for quotations embedded in sentences.  So we’ve allowed: He said ”hey now, this is proof, there’s hippos landing on my head!”.  The rendering on the page gives the utterance a dreamy quality as of someone suddenly awoken.

Said but not Spoken, No Quotation Marks?

There is an example of something described as, said, that is without quotation marks, that we have allowed.  Its usage is immediate and climatic, and is the thought that Bridgette has, namely: look up there; it’s a possum on a wire. This we take not to be an utterance, but her reaction to the situation.  To support this contention, we note that quoted dialogue follows this reaction.

Posted on Leave a comment

She’s a very tidy teenager

We’re nearing the end of The Cheeky Possum and it’s time to reflect on what we’ve seen and heard. Of course, within the story, the characters too are reflecting and drawing their own conclusions. Here we’re touching on an aspect of the magic of reading to your children. We are nurturing their intellectual development in many ways.

So we have the story, the reader and the listeners. With a picture book the listeners may also be looking and thinking about the illustrations. One looker and thinker, Aria says, of the illustration of Bridgette tucked up inside her bed, “She’s a very tidy teenager!”.