1. Případová studie: Verzovaná dokumentace - Podpora správy obsahu

    Článek: AN0002366Aktualizováno:: 04.11.2018

    Editor používá stránku pro efektivní správu. Podívejme se, jak jsme stránku vytvořili.

    Tato stránka vypadá následovně.

    Rozložení stránky je jednoduché. V definici stránky jsme vybrali Volbu Dva sloupce: Levý široký, pravý úzký. Stránka má být dostupná pouze uživatelům s rolí Editor. Tuto roli tedy nastavíme pro Čtení stránky.

    Na stránce vidíme tři webparty. Dva (webpart Menu a webpart Grid) jsou vloženy do levé, široké zóny. Třetí (webpart Zobrazení procentní hodnoty) je vložen do pravého, úzkého sloupce.

    Ve webpartu Menu definujeme odkazy pro rychlé přístupy do různých tříd. V našem případě definice vypadá následovně:

    cat= |text=
    page=vcd.article|typeUrl=l|text=en-US::Version Controlled Documentation~cs-CZ::Verzovaná dokumentace|img=ImagesData/Images_32_32/Type_1/Blue/addressbook.png
    classdef=vcd.topic|typeUrl=l|text=en-US::Topic~de-DE::Thema~cs-CZ::Téma|img=ImagesData/Images_32_32/Type_1/Blue/bookmark.png

    cat= |text=
    classdef=vcd.article|typeUrl=l|text=en-US::Article~de-DE::Artikel~cs-CZ::Článek|img=ImagesData/Images_32_32/Type_1/Blue/edit.png
    classdef=vcd.article_text|typeUrl=l|text=en-US::Article text~de-DE::Artikeltext~cs-CZ::Text článku|img=ImagesData/Images_32_32/Type_1/Blue/copy-item.png

    cat= |text=
    classdef=vcd.article|typeUrl=l|text=en-US::Tag~de-DE::Tag~cs-CZ::Tag|img=ImagesData/Images_32_32/Type_1/Blue/tag.png
    classdef=vcd.article|typeUrl=l|text=en-US::Article display count~cs-CZ::Počet zobrazení článků|img=ImagesData/Images_32_32/Type_1/Blue/bar-chart.png

    cat= |text=
    classdef=vcd.article|typeUrl=l|text=en-US::Article evaluation~de-DE::Artikelbewertung~cs-CZ::Hodnocení článku|img=ImagesData/Images_32_32/Type_1/Blue/star.png
    classdef=vcd.wrong_search|typeUrl=l|text=en-US::Erroneous searches~de-DE::Falsche Suchen~cs-CZ::Chybná hledání|img=ImagesData/Images_32_32/Type_1/Blue/lookup.png

    cat= |text=
    classdef=vcd.language|typeUrl=l|en-US::Language~de-DE::Sprache~cs-CZ::Jazyk|img=ImagesData/Images_32_32/Type_1/Blue/chat-.png
    classdef=vcd.version|typeUrl=l|text=en-US::Version~de-DE::Version~cs-CZ::Verze|img=ImagesData/Images_32_32/Type_1/Blue/push-pin.png

    Ve webpartu Grid chceme zobrazit všechny články, které vyžadují pozornost editora. Důvodů pro označení článku je několik. Použijeme dotaz, který vybere záznamy článků a u každého z nich uvede důvod. Dotaz bude tedy sestaven z několika příkazů SELECT spojených klauzulí UNION. Každý blok v níže uvedeném příkladu představuje jeden důvod. Každý blok vybírá určité záznamy a všechny jsou spojeny klauzulí UNION do jedné sady dat. U každého bloku níže je uveden komentář vysvětlující, co dané záznamy představují. U daných záznamů zjišťujeme nejen informace, které chceme zobrazit ve webpartu Grid, ale i další data. Daný dotaz totiž využijeme i pro třetí webpart, který bude zobrazovat souhrnná data - počty všech typů záznamů, které vyžadují naši pozornost. Dotaz tedy pro každý článek obsahuje odkaz na článek, lokalizovaný popis důvodu označení, odkaz na ikonu vyjadřující daný důvod označení a barvu pro daný důvod.

    //Záznamy označené u článku v checkboxu Zkontrolovat obsah
    SELECT ar.id AS article___article, 'en-US::Check content~de-DE::Inhalt prüfen~cs-CZ::Zkontrolovat obsah' AS Action,
    'ImagesData/Icons/Common/package.png' AS Icon, '#FF0000' AS Colour,CAST(10 AS Integer) AS [Order], CONVERT(INT, 0xFF0000) colour2
    FROM {{:class.article:}} ar
    WHERE ar.content_check = 1 AND ar.deleted IS NULL

    UNION

    //Záznamy označené v textu článku v checkboxu Zkontrolovat gramatiku
    SELECT ar.id AS article___article, 'en-US::Grammar check~de-DE::Grammatik prüfen ~cs-CZ::Zkontrolovat gramatiku' AS Action,
    'ImagesData/Icons/Common/text_dropcaps.png' AS Icon, '#FF6600' AS Colour,CAST(20 AS Integer) AS [Order], CONVERT(INT, 0xFF6600) colour2
    FROM {{:class.article:}} ar
    LEFT JOIN {{:class.article_text:}} art ON ar.id = art.article
    WHERE art.grammar_check = 1 AND ar.deleted IS NULL

    UNION

    //Záznamy označené v textu článku v checkboxu Přeložit
    SELECT ar.id AS article___article, 'en-US::Translate~de-DE::Übersetzten~cs-CZ::Přeložit' AS Action,
    'ImagesData/Icons/Common/table_relationship.png' AS Icon, '#FFCC00' AS Colour, CAST(30 AS Integer) AS [Order],CONVERT(INT, 0xFFCC00) colour2
    FROM {{:class.article:}} ar
    LEFT JOIN {{:class.article_text:}} art ON ar.id = art.article
    WHERE art.translate = 1 AND ar.deleted IS NULL

    UNION

    //Články bez jakýchkoli textů
    SELECT ar.id AS article___article, 'en-US::Missing texts~de-DE::Fehlende Texte~cs-CZ::Chybějící texty' AS Action,
    'ImagesData/Icons/Common/table_row_delete.png' AS Icon, '#3333FF' AS Colour,CAST(40 AS Integer) AS [Order],CONVERT(INT, 0x3333FF) colour2
    FROM {{:class.article:}} ar
    LEFT JOIN {{:class.article_text:}} art ON ar.id = art.article
    WHERE art.id IS NULL AND ar.deleted IS NULL

    UNION

    //Články bez textů v povinných jazycích pro poslední verzi - povinné jazyky jsou definovány přímo zde v SQL
    SELECT qsub2.article___article,
    'en-US::Texts missing in some mandatory languages~de-DE::Fehlende Texte in verpflichtenden Sprachen~cs-CZ::Chybějící texty v povinných jazycích' AS Action,
    'ImagesData/Icons/Common/table_key.png' AS Icon, '#339900' AS Colour, CAST(50 AS Integer) AS [Order],CONVERT(INT, 0x339900) colour2
    FROM (
    SELECT qsub.article___article, CASE WHEN lan.code = 'en-US' OR lan.code = 'cs-CZ' THEN 1 END AS def_lan
    FROM (
    SELECT ar.id AS article___article, MAX (ver.[order]) AS Last_version_order
    FROM {{:class.article:}} ar
    LEFT JOIN {{:class.article_text:}} art ON ar.id = art.article
    LEFT JOIN {{:class.version:}} ver ON ver.id = art.from_version
    WHERE ar.deleted IS NULL
    GROUP BY ar.id) qsub
    LEFT JOIN {{:class.article_text:}} art2 ON qsub.article___article = art2.article
    LEFT JOIN {{:class.version:}} ver2 ON ver2.[order] = qsub.Last_version_order
    LEFT JOIN {{:class.language:}} lan ON lan.id = art2.language
    WHERE art2.deleted IS NULL AND art2.from_version = ver2.id) qsub2
    GROUP BY qsub2.article___article
    HAVING Sum (qsub2.def_lan) < 2

    UNION

    //Články, které nemají nastaven parent article nebo topic
    SELECT ar.id AS article___article, 'en-US::Missing parent~de-DE::Fehlender Elternartikel~cs-CZ::Chybějící nadřizený článek' AS Action,
    'ImagesData/Icons/Common/arrow_up.png' AS Icon, '#FF33CC' AS Colour, CAST(60 AS Integer) AS [Order],CONVERT(INT, 0xFF33CC) colour2
    FROM {{:class.article:}} ar
    WHERE ar.parent_article IS NULL AND ar.topic IS NULL AND ar.deleted IS NULL

    UNION

    //Články, které nejsou označeny jako aktivní
    SELECT ar.id AS article___article, 'en-US::Inactive article~de-DE::Inaktiver Artikel~cs-CZ::Neaktivní článek' AS Action,
    'ImagesData/Icons/Common/disconnect.png' AS Icon,'#66CCFF' AS Colour, CAST(70 AS Integer) AS [Order],CONVERT(INT, 0x66CCFF) colour2
    FROM {{:class.article:}} ar
    WHERE ar.active = 0 AND ar.deleted IS NULL

    UNION

    SELECT ar.id AS article___article, 'en-US::New unpublished new text~de-DE::Neuer unveröffentlichter Text~cs-CZ::Nový nepublikovaný text' AS Action,
    'ImagesData/Icons/Common/font.png' AS Icon, '#66CCFF' AS Colour, CAST(*0 AS Integer) AS [Order],CONVERT(INT, 0xCC9933) colour2
    FROM {{:class.article:}} ar
    INNER JOIN {{:class.article_text:}} art ON art.article = ar.id
    WHERE art.deleted IS NULL AND ar.deleted IS NULL AND art.new_text <> art.text

    Získaná data pak vypadají takto:

    1

    Výše uvedený dotaz využijeme i pro poslední webpart. Nejprve z něj vytvoříme souhrn.

    SELECT action, colour2, [order], COUNT (action) AS article_count
    FROM {{:query.articles_to_follow_up:}} atfu
    GROUP BY action, colour2, [order]

    Výsledná data vypadají takto:

    Webpart Zobrazení procentní hodnoty pak nakonfigurujeme následujícím způsobem:

    Webpart Zobrazení procentní hodnoty pak zobrazuje stejné počty záznamů jako jsou  detailním přehledu webpartu Grid.

×