diff --git a/issues/001-batch-processing.md b/issues/001-batch-processing.md deleted file mode 100644 index a623d47..0000000 --- a/issues/001-batch-processing.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "[FEATURE] Batch Processing — Generate OG Tags for All Existing Articles" -labels: "enhancement, priority: high" -milestone: "v01.01" ---- - -## Feature Description -Add batch processing capability to generate or regenerate Open Graph tags for all existing articles in bulk, rather than requiring manual editing of each article. - -## Problem or Use Case -When MokoOpenGraph is installed on an existing site with hundreds of articles, each article needs OG tags. Manually editing each one is impractical. Tagz Pro offers this as a premium feature — we should include it in the base package. - -## Proposed Solution -Add a "Batch Generate" toolbar button to the com_mokoog admin view that: -1. Scans all published articles in `#__content` -2. For each article without existing OG data in `#__mokoog_tags`, auto-generates: - - `og_title` from article title - - `og_description` from meta description or intro text (first 160 chars) - - `og_image` from full-text image or intro image -3. Shows a progress bar during processing -4. Reports how many records were created/skipped - -## Implementation Details -- New `Controller/BatchController.php` with `generate()` action -- New `Model/BatchModel.php` for bulk operations -- AJAX endpoint for progress reporting (avoid PHP timeout on large sites) -- Process in chunks of 50 articles per request -- Add batch button to `View/Tags/HtmlView.php` toolbar diff --git a/issues/002-image-auto-resize.md b/issues/002-image-auto-resize.md deleted file mode 100644 index b41eca4..0000000 --- a/issues/002-image-auto-resize.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "[FEATURE] Automatic OG Image Resizing and Optimization" -labels: "enhancement, priority: high" -milestone: "v01.01" ---- - -## Feature Description -Automatically resize and optimize images to meet Open Graph recommended dimensions (1200x630px) when an image is selected as the OG image. - -## Problem or Use Case -Social platforms have specific image size requirements for optimal sharing previews. Facebook recommends 1200x630px, Twitter recommends 1200x628px. Most article images are not this exact size, leading to cropped or poorly-displayed sharing previews. - -## Proposed Solution -When an OG image is saved (either manually or auto-generated): -1. Check if the image meets minimum dimensions (600x315px) -2. Generate an optimized copy at 1200x630px in `images/mokoog/generated/` -3. Use the resized copy for the OG meta tag, keep the original untouched -4. Support configurable target dimensions in plugin settings -5. Use GD or Imagick (whatever Joomla has available) - -## Implementation Details -- New `Helper/ImageHelper.php` in `plg_system_mokoog` for image processing -- Store generated image path in `#__mokoog_tags.og_image_generated` column -- Add plugin config options: target width, target height, quality (JPEG), fit mode (crop/contain) -- Clean up generated images when OG record is deleted diff --git a/issues/003-social-preview.md b/issues/003-social-preview.md deleted file mode 100644 index 02b8dc3..0000000 --- a/issues/003-social-preview.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "[FEATURE] Live Social Sharing Preview in Article Editor" -labels: "enhancement, priority: medium" -milestone: "v01.02" ---- - -## Feature Description -Show a real-time preview of how the article will appear when shared on Facebook, Twitter/X, and LinkedIn directly in the article editor, alongside the OG fields. - -## Problem or Use Case -Content editors need to see the visual result of their OG configuration before publishing. Currently they must save, share the URL to a social platform debugger, and iterate. A live preview eliminates this friction. - -## Proposed Solution -Add a JavaScript-powered preview panel in the "Open Graph / Social Sharing" fieldset that renders: -1. **Facebook preview** — Card with image, title, description, domain -2. **Twitter/X preview** — Summary with Large Image card layout -3. **LinkedIn preview** — Card with image, title, description, source - -The preview should update in real-time as the user types in the OG fields, with fallback to the article title/description/image when OG fields are empty. - -## Implementation Details -- New `media/plg_content_mokoog/js/preview.js` with Web Component or vanilla JS -- CSS mockups of each platform's card layout -- Listen to `input` events on the OG form fields -- Register via `joomla.asset.json` Web Asset Manager -- Integrate as a `
` below the OG fieldset in `forms/mokoog.xml` via a custom field type diff --git a/issues/004-category-og-tags.md b/issues/004-category-og-tags.md deleted file mode 100644 index b6dfdd7..0000000 --- a/issues/004-category-og-tags.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "[FEATURE] Category-Level OG Tag Support" -labels: "enhancement, priority: medium" -milestone: "v01.01" ---- - -## Feature Description -Support custom Open Graph tags for Joomla article categories, so category listing pages have proper social sharing metadata. - -## Problem or Use Case -When someone shares a category URL (e.g., `/news`), the OG tags fall back to site defaults because there's no per-category configuration. Category pages are high-traffic landing pages that deserve custom social sharing metadata. - -## Proposed Solution -1. Add OG fields to the category edit form (via `onContentPrepareForm` for `com_categories.categorycom_content`) -2. In the system plugin, detect when the current page is a category view and load category-specific OG data -3. Allow category images to be used as OG fallback for articles within that category - -## Implementation Details -- Extend `plg_content_mokoog` to hook `com_categories.categorycom_content` form -- Extend `plg_system_mokoog` to detect `option=com_content&view=category&id=X` -- `content_type` value: `com_content.category` -- Add category image fallback chain: Article image → Category OG image → Category image → Site default diff --git a/issues/005-third-party-extensions.md b/issues/005-third-party-extensions.md deleted file mode 100644 index 445146d..0000000 --- a/issues/005-third-party-extensions.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "[FEATURE] Third-Party Extension Support (VirtueMart, K2, EasyBlog, etc.)" -labels: "enhancement, priority: medium" -milestone: "v01.02" ---- - -## Feature Description -Support Open Graph tags for popular third-party Joomla extensions, comparable to Tagz which supports VirtueMart, K2, EasyBlog, RSBlog, HikaShop, JoomShopping, RSEvents Pro, JEvents, and more. - -## Problem or Use Case -Many Joomla sites use third-party content components. Without support, product pages, event pages, and custom content types won't have proper OG tags. - -## Proposed Solution -Create a plugin architecture that allows content type adapters. Each adapter knows how to: -1. Detect its component's URLs (via `option` and `view`) -2. Extract title, description, and image from its database tables -3. Register its form for OG field injection - -Priority adapters (Phase 1): -- **VirtueMart** — Product pages (`com_virtuemart`, view `productdetails`) -- **K2** — Items (`com_k2`, view `item`) -- **HikaShop** — Products (`com_hikashop`, view `product`) - -Phase 2: -- **EasyBlog** — Posts -- **RSEvents Pro** — Events -- **JEvents** — Events -- **Phoca Cart** — Products - -## Implementation Details -- New `ContentTypeInterface` in com_mokoog with methods: `canHandle()`, `getTitle()`, `getDescription()`, `getImage()` -- Each adapter is a separate class under `src/ContentType/` -- System plugin checks registered adapters in order until one matches -- Adapters auto-register via `services/provider.php` or a discovery mechanism diff --git a/issues/006-structured-data-jsonld.md b/issues/006-structured-data-jsonld.md deleted file mode 100644 index f3bdf18..0000000 --- a/issues/006-structured-data-jsonld.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "[FEATURE] Structured Data / JSON-LD Output" -labels: "enhancement, priority: medium" -milestone: "v01.02" ---- - -## Feature Description -In addition to Open Graph meta tags, generate JSON-LD structured data (`