Duplikováním itemy přes příkaz „Duplicate“ vzniká nová itema obsahující shodný počet verzí a jazykových mutací jako obsahuje itema zdrojová. Z hlediska výkonu SC toto není optimální řešení neboť roste počet záznamů v Master databázi a tím se zpomalují dotazy, které načítají informace o itemě.

Další vedlejší efekt duplikování je, že se duplikuje i DisplayName a tudíž po provedení duplikace jsou ve stromečku dvě itemy se stejným názvem, i když itemName se liší. Redaktor pak může udělat snáze chybu a považovat původní itemu za duplikát.

Pokročilá duplikace item

Z tohoto důvodu jsme vytvořili vlastní duplikaci, která kopíruje požadovaný rozsah verzí a jazykových mutací. Jaký rozsah dat se bude kopírovat je pak na redaktorovi. Naše řešení nabízí tyto tři možnosti:

  • Duplikace pouze poslední verze v každé jazykové mutaci
  • Duplikace pouze poslední verze v dané jazykové mutaci
  • Duplikace pouze dané verze v dané jazykové mutaci
Context menu

Context menu

Všechny tři příkazy volají stejný procesor, který dle předaných argumentů provede jednu ze tří operací.

CustomItemDuplicate class

CustomItemDuplicate class

Metoda „Execute“ načítá z argumentů informace o duplikované itemě a typ duplikace viz. proměnná třídy „LatestVersionType“.

advanced_duplicate_Code_snipet_CustomItemDuplicate_Execute

Metoda „Duplicate Item“ provádí pročištění duplikovaných verzí dle proměnné třídy „LatestVersionType“.

advanced_duplicate_Code snipet_CustomItemDuplicate_DuplicateItem

Metody „RemoveDisplayNameInAllLangs“ a „ClearDisplayNameField“ pak promažou duplikovaný DisplayName.

advanced_duplicate_Code snipet_CustomItemDuplicate_RemoveDisplayNameInAllLangs

advanced_duplicate_Code snipet_CustomItemDuplicate_ClearDisplayNameField

Nyní je třeba zaregistrovat v SC příkazy pro jednotlivé typy duplikace a procesor, který provede vlastní duplikaci itemy.

advanced_duplicate_commands_in_config

advanced_duplicate_IU_duplicate_in_config

Posledním krokem je vytvoření položek kontextového menu. Vytvoříme 3 itemy pod parentem /sitecore/content/Applications/Content Editor/Context Menues/Default a definujeme příkaz, který se bude položkou volat.

advanced_duplicate_context_menu_in_SC advanced_duplicate_context_menu_in_SC_2 advanced_duplicate_context_menu_in_SC_3