The domain has been 'comiceasel' since 2012 while the wordpress.org slug is
'comic-easel'. Language packs from translate.wordpress.org are keyed to the
slug, so they could never load; no working translation ever shipped against
the old domain. Renames the domain in every gettext call, in
load_plugin_textdomain(), in both Text Domain headers, and on the lang/
template files, which already carried comic-easel domain markers internally.
Option keys, admin page slugs, nonce actions and style handles that share the
comiceasel prefix are deliberately left alone; only the $domain argument moved.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
get_terms() has taken the taxonomy inside the argument array since 4.5; the
five remaining positional calls now use that form with the same arguments.
Escapes the last few public output sites (the edit link, the sidebar id, the
Buy! label) and adds translators comments to the placeholder strings.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Widget form() methods printed get_field_id()/get_field_name() straight into
id and name attributes, and the labels used _e(). Wrap the field helpers in
esc_attr(), switch the labels to esc_html_e(), and swap strip_tags() for
wp_strip_all_tags() on the stored titles. Adds the matching test stubs.
Assembled markup ($before_widget, filtered titles, $output) is left alone;
escaping it would change what existing sites render.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The cast hovercard widget built its CSS and JS URLs from a literal
comic-easel/ path, so the widget lost its assets whenever the plugin
was installed under any other directory name. Use the plugin URL the
rest of the plugin already resolves at runtime, and version the style
to match the script it pairs with.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
None of the plugin's PHP files checked that they were loaded through
WordPress, so requesting one directly executed it with none of core loaded.
The result is a fatal error on the first undefined function, which depending
on the server's display_errors setting discloses the filesystem path and
details of the PHP configuration.
Add the standard guard to every file. Files opening with PHP get it as their
first statement, after the plugin header comment in the main file, which
WordPress parses and which must stay put. The admin page templates that open
with markup get it as a leading one-line block, with no whitespace before it
that would break header output.
Also required by the WordPress.org plugin guidelines.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Output escaping already stops these values doing damage, but the storage side
was still wrong at the source:
- navigation's archive_path is a URL yet was stored with HTML-attribute
escaping, which passes a javascript: URI through unchanged; store it with
esc_url_raw()
- bf_adwidget's divID becomes an HTML id but was only strip_tags()'d, which
leaves quotes and spaces; use sanitize_html_class()
- both update() methods indexed the submitted array without checking the key
exists, so saving a widget emitted undefined-key warnings on PHP 8
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The widget's five URL settings were emitted with esc_attr(), which prevents an
attribute break but leaves a javascript: URI intact. Use esc_url().
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Widget update() methods apply strip_tags(), which leaves quotes intact, and
the stored values were echoed into hrefs, attributes and link text.
Escape each output site for its context. Storage is unchanged, so saved
widgets keep working and nothing is double-encoded.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Replace deprecated ${var} string interpolation with {$var} (deprecated
in PHP 8.2) in ceo-import.php and widgets/comic-calendar.php
- Remove default value from optional-before-required parameter $empty in
ceo_chapters_add_column_value() (deprecated in PHP 8.0)
- Pass explicit $flags to html_entity_decode() in displaycomic.php, since
the default changed in PHP 8.1
- Convert PHP4-style constructor in functions/casthover.php to
__construct() (PHP4-style constructors removed in PHP 8.0)
All files now pass php -l on PHP 8.5 and a PHPCompatibility scan with
testVersion 8.0- with zero errors and zero warnings.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1. (Front-end) Fixed Chapters drop-down list so it indents children showing hierarchy. Was showing as a flat list, making it impossible to see which chapters were children or parents. The "render_as_list" option was already doing this correctly.
2. (Back-end) Added radio button options to order list by:
* "menu_order" (current method, and default)
* "tax_name"
* "ID"
The "tax_name" sorts ASC and then alphabetically by chapter name (this was the only option that displayed chapters in my intended hierarchical order of Volume->Story->Chapter).
The "ID" option theoretically should sort oldest to newest, since earlier chapter IDs will be lower than ones created later, assuming you didn't create the older chapters after newer ones.
* archive dropdown now shows select <name> of the chosen name from the config
* do not display transcripts on the archive and search pages
* the column for the all comics now uses the name chosen for the taxonomy
* Fix for the mishit of thumbnail widget messing up the page if not to show on the same page checkmark is done
* Fix for the keyboard navigation if someone wants to type a comment and use arrows in there