qualityfolio/test_cycle_detail.sql

              SELECT 'dynamic' AS component, sqlpage.run_sql('shell/shell.sql') AS properties;
              SELECT 'breadcrumb' as component;
WITH RECURSIVE breadcrumbs AS (
    SELECT
        COALESCE(abbreviated_caption, caption) AS title,
        COALESCE(url, path) AS link,
        parent_path, 0 AS level,
        namespace
    FROM sqlpage_aide_navigation
    WHERE namespace = 'prime' AND path='qualityfolio/test_cycle_detail.sql'
    UNION ALL
    SELECT
        COALESCE(nav.abbreviated_caption, nav.caption) AS title,
        COALESCE(nav.url, nav.path) AS link,
        nav.parent_path, b.level + 1, nav.namespace
    FROM sqlpage_aide_navigation nav
    INNER JOIN breadcrumbs b ON nav.namespace = b.namespace AND nav.path = b.parent_path
)
SELECT title ,      
sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/'||link as link        
FROM breadcrumbs ORDER BY level DESC;
              -- not including page title from sqlpage_aide_navigation
              

                SELECT 'title' AS component, (SELECT COALESCE(title, caption)
    FROM sqlpage_aide_navigation
   WHERE namespace = 'prime' AND path = 'qualityfolio/test_cycle_detail.sql/index.sql') as contents;
    ;

  --- Breadcrumbs
  SELECT 'breadcrumb' AS component;
  SELECT 'Home' AS title, sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/' AS link;
  SELECT 'QualityFolio' AS title, sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/qualityfolio/index.sql' AS link;
SELECT (SELECT COALESCE(title, test_cycle_id) FROM test_cycle_inner WHERE title = $test_cycle) AS title, '#' AS link;

  SELECT 'title'AS component,
   (SELECT page_title FROM page_guide WHERE page_identifier = 'qualityfolio/test_cycle_detail.sql' AND page_order = 1) as contents;

  SELECT 'text' as component,
    (SELECT page_content FROM page_guide WHERE page_identifier = 'qualityfolio/test_cycle_detail.sql' AND page_order = 1) as contents;
  -- Hero header from test_cycle_inner view
  SELECT 'html' AS component,
    COALESCE(
      '<section class="requirement-hero" style="background:linear-gradient(90deg,#ffffff,#f7f9fc);padding:22px;border-radius:10px;margin-bottom:18px;border:1px solid #eceff3;">' ||
      '<div style="display:flex;gap:20px;align-items:flex-start">' ||
      '<div style="flex:1">' ||
      '<h1 style="margin:0 0 8px 0;font-size:24px;font-weight:700;color:#1f2937">' || COALESCE(title, title) || '</h1>' ||
      '<div style="color:#6b7280;font-size:13px">' ||
      COALESCE(created_by, '') ||
      CASE WHEN created_by IS NOT NULL AND created_at IS NOT NULL THEN ' • ' ELSE '' END ||
      CASE WHEN created_at IS NOT NULL THEN strftime('%d-%m-%Y', created_at) ELSE '' END ||
      CASE WHEN version IS NOT NULL THEN ' • v' || version ELSE '' END ||
      CASE WHEN tags IS NOT NULL THEN ' • ' || tags ELSE '' END ||
      '</div></br>' ||
      '<p style="margin:0 0 12px 0;color:#374151;line-height:1.5">' || COALESCE(description, 'No description') || '</p>' ||
      '</div>' ||
      '<div style="min-width:160px;text-align:right">' ||
      '<a href="' || sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/qualityfolio/test_cycle_case.sql?test_cycle=' || REPLACE(REPLACE(title, ' ', '%20'), '&', '%26') || '" style="display:inline-block;background:#eef2ff;color:#3730a3;padding:8px 12px;border-radius:6px;text-decoration:none;font-weight:600">View related test cases</a>' ||
      '</div>' ||
      '</div>' ||
      '</section>',
      '<div class="test-cycle-detail"><p>No test cycle found</p></div>'
    ) AS html
FROM test_cycle_inner WHERE title = $test_cycle;

  -- Return content with YAML frontmatter removed (strip leading '--- ... ---' block)
  SELECT 'text' AS component,
    TRIM(
      CASE
        WHEN instr(content, '---') = 0 THEN content
        ELSE
          CASE
            WHEN instr(substr(content, instr(content, '---') + 3), '---') = 0 THEN
              ltrim(substr(content, instr(content, '---') + 3))
            ELSE
              ltrim(
                substr(
                  content,
                  instr(substr(content, instr(content, '---') + 3), '---') + instr(content, '---') + 5
                )
              )
          END
      END
    ) AS contents_md
FROM test_cycle_inner
WHERE title = $test_cycle;
            

;