Č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:
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.