Home

Awesome

Sitecore Smart Commands

Sitecore Smart Commands is a shared-source module that contains smart copy, duplicate and clone commands in Content Editor.

Download

You can find downloads in github releases tab.

Known issues

Most of the features (1, 2, 3) do not support Item Buckets out of the box and may break this functionality so please dot not install this module if you use Item Buckets or going to use them. However you can still use this module API and code to implement you own needs.

Why is this solution better?

Comparing to any other solutions, this one uses stock Sitecore link replacement functionality instead of custom logic. Have you ever seen the Breaking links dialog which offers:

So this module uses same API as the Breaking links dialog.

Features

1. Smart Duplicate

The Smart Duplicate button that does the same thing as normal Duplicate Item, but in addition to that it replaces links from source item (and its descendants) to newly created item (and its descendants). Note, it does not work with item buckets.

Having this item tree

  sourceItem: linkField -> sourceChild 
    sourceChild: linkField -> sourceItem

by default, when duplicating it the result becomes

  copyItem: linkField -> sourceChild
    copyChild: linkField -> sourceItem

But with Smart Duplicate it becomes

  copyItem: linkField -> copyChild
    copyChild: linkField -> copyItem

2. Smart Copy To

Same as Smart Duplicate, but new item appears in another folder.

3. Smart Clone

Same as Smart Copy To, but instead of plain copying the Item Clone is created.

4. Smart Create From Branch

Same idea as with feature number 2, but this time links are expanded for items created from branch templates.

Important: unlike items 1-3 you cannot use original link-agnostic Create From Branch command - create from branch operations will be smart.

Having this branch template

  my branch
    $name: linkField -> branchChild
      branchChild: linkField -> $name

by default, the item created from this branch template becomes

  createdItem: linkField -> branchChild
    createdChild: linkField -> $name

With smart link replacement it becomes expected:

  createdItem: linkField -> createdChild
    createdChild -> createdItem