124 Commits

Author SHA1 Message Date
coraislovely-code df7a6f78ba Align the text domain with the plugin slug
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>
2026-08-13 17:48:00 -04:00
coraislovely-code d2103ab5da Modernize get_terms calls and finish the escaping pass
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>
2026-08-13 17:38:18 -04:00
coraislovely-code 1d0cabb1b0 Escape widget output and field attributes
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>
2026-08-13 17:33:55 -04:00
coraislovely-code 95a4638d8f Load cast hover assets relative to the plugin folder
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>
2026-08-13 17:22:32 -04:00
coraislovely-code 8f52144eff Harden database queries and request input
Co-authored-by: gpt-5.6-sol <noreply@openai.com>
2026-08-03 10:57:47 -04:00
coraislovely-code 2647482d1d Escape remaining public output contexts
Co-authored-by: gpt-5.6-sol <noreply@openai.com>
2026-07-29 09:13:08 -04:00
coraislovely-code 3882fb1844 Replace lapsed Comic Easel links 2026-07-28 18:55:01 -04:00
coraislovely-code 9bfaf55628 Remove defunct Blind Ferret integration 2026-07-28 18:26:55 -04:00
coraislovely-code 74ee11a91d Refuse to run when loaded outside WordPress
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>
2026-07-26 14:31:00 -04:00
coraislovely-code 44b2dc1e34 Sanitize widget settings for their real types on save
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>
2026-07-26 14:31:00 -04:00
coraislovely-code b5602e6017 Escape calendar widget URLs as URLs
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>
2026-07-25 13:38:27 -04:00
coraislovely-code 8d1ecd8a5a Escape widget settings on output
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>
2026-07-25 13:38:27 -04:00
coraislovely-code a9baa5f8c8 Fix PHP 8.x deprecations and incompatibilities
- 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>
2026-07-24 12:22:48 -04:00
Frumph 61d498ad5c finished working adwidget 2018-11-19 10:50:02 -08:00
Frumph 2a84bd0f15 add monetize widget (base) and refix the comiceasel.php files editing 2018-11-19 10:39:29 -08:00
Frumph a6118f1d43 New Option to allow Comic Easel to automagically remove featured images on comic post pages on non-ComicPress themes (so you don't have to code anything) 2016-10-09 12:37:25 -07:00
Frumph 1e67f64d3d A huge plethora of language translation fixes courtesy of @JN_Squire for pushing me to fix them 2016-09-30 13:45:58 -07:00
kmhcreative d68a7f6652 Chapters drop-down hierarchy fix, orderby options
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.
2016-09-15 20:34:40 -05:00
Frumph cb3e64a692 fixed small error in archive-dropdown for render-as-list 2016-02-12 08:38:51 -08:00
Margaret Trauth e47e3ba0b3 added highlighting of current chapter to the list view of the chapter jump widget 2015-12-25 21:51:51 -08:00
Margaret Trauth a6e2571c49 Added an option to render the chapter archive dropdown as a list of links instead. 2015-12-25 19:58:48 -08:00
Frumph 0394c347a3 comiclist-dropdown widget needed to change class names to be different then the other chapter archive widget 2015-09-18 23:35:04 -07:00
Frumph 8a684c8440 revamped the query args for thumbnail widget to try to find issue with random for someone
fixed a couple translation strings which weren't being translated in thumbnail widget
2015-09-06 00:17:01 -07:00
Frumph 8fae15db3c Support for jetpack's mobile theme - notoggle always on 2015-09-03 11:41:58 -07:00
Frumph d6440a5833 Rewrote the comic chapter dropdown with a new walker, allow the comic list widget to appear on home page 2015-08-31 08:31:42 -07:00
Frumph 4572218723 Do not display the "Comic Chapters" title if there isn't one, user has to input one to have it show, default no-title 2015-08-28 03:05:56 -07:00
Frumph 1cafb36caa Allow the comic dropdown list to appear on home page 2015-08-22 23:06:33 -07:00
Frumph 0c32b04fbe Have the comic list dropdown show more then 5 entries 2015-08-22 22:58:54 -07:00
Frumph 40fe8439a7 Comic Easel 1.9.2 with widgets fix for older versions of PHP (talk to your hosting update to ver. 5.4 of PHP for WordPress) 2015-08-16 13:52:23 -07:00
Frumph 89d8c37288 use date_format instead of time_format 2015-08-16 13:24:47 -07:00
Frumph 8759f42d74 New widget & option for default navigation for "jump to" can now have a dropdown list of comcis in current chapter to jump to 2015-08-15 22:16:15 -07:00
Frumph 8f481a0b92 Widgets updated for WordPress 4.3 - includes new widget to display a dropdown archive list of *all* the comics in the current chapter 2015-08-09 02:24:43 -07:00
Frumph 330a5cde2a cleaner if statement assignment of thumbnail_size 2015-01-12 09:05:07 -08:00
Frumph 8c15525bcd thumbnail.php - allow change of thumbnail size to use within widget with dropdown, needs testing 2015-01-12 09:01:26 -08:00
Frumph add83abfd3 allow the keyboard navigation to work with prev/next (regular) buttons from the widget 2014-11-08 14:29:12 -08:00
Frumph be9b22b368 archive-dropdown now shows hidden but disabled in the default, also jumps to archive instead of first page
added commented-out webcomic to comic-easel code
2014-10-30 14:54:16 -07:00
Frumph d11bc22b91 Fix for the chapter count not showing on children items in the comic archive-dropdown.php 2014-10-28 08:43:28 -07:00
Frumph 9c15e373b0 Fix for the comic archive-dropdown widget to stop it from duplicating chapters 2014-10-28 08:10:35 -07:00
Frumph 7b256866a0 Better support for 3rd party commenting systems with the display of the comment text 2014-10-23 04:17:34 -07:00
Frumph 75b320d506 * resources tables coming from fetched file
* 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
2014-10-22 02:43:17 -07:00
Frumph 1db4fbeb76 Fixed checkbox option problem in the archive-dropdown widget - and attempted to fix the chapter exclusion box but waiting on wordpress bug to finish that 2014-09-29 08:42:22 -07:00
Frumph 32129c121f 1.7.3 Added shortcode for the comic archive dropdown and you can link comics to particular places if you want 2014-07-03 15:00:13 -07:00
Frumph 00067e7c66 Action locations for before and after navigation widget sections 2014-05-29 16:43:50 -07:00
Frumph d5c9c07c90 Bug fixes for archive-dropdown.php, fixing the display order for sub chapters (again)
added option for archive-dropdown widget to jump to archive page instead of first page
2014-05-29 16:43:13 -07:00
Frumph 4d05e99444 Chapters archive dropdown (fix/hopefully) for sorting by menu order 2014-05-05 09:25:29 -07:00
Frumph 13b8dd9d02 Added toggle for displaying the amount/count of comics available for the chapter. 2014-05-04 08:17:35 -07:00
Frumph 83fca93405 1.5.9 update 2013-12-30 12:25:25 -08:00
Frumph ba135563c3 = 1.5.7 =
* 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
2013-11-29 01:55:48 -08:00
Frumph 3375436aee Thumbnail loop for the thumbnails to display remove the individual widget wraps around them and have them inside a single one 2013-10-03 13:12:38 -07:00
Frumph cccbbcdf50 Ver. 1.5 Introducing Buy Comic, fixed plugin path/url code so if someone changes wp-content directory added new directions inside of the comic editor 2013-08-30 02:10:38 -07:00