Page tree
Skip to end of metadata
Go to start of metadata

Do Viva byla adaptována funkcionalita BranchCopy pod novým názvem HardCopy a příslušný CLI skriptlet.

Použití skriptletu

Cílem tohoto skriptletu je možnost vytvořit kopii libovolného podstromu ve struktuře webu. Navíc dojde k automatickému přegenerování všech UUID ("zunikátnění") a k adekvátnímu přenastavení referencí v nové kopii. Syntaxe skriptletu je následující:

Spouštění hardcopy v terminálu
php index.php cms/hard-copy /sourcePath /targetPath [language]

Příklad: Zkopírovat /sample-site/ROOT/rozcestnik do /sample-site/ROOT/rozcestnik2 a nastavit novému podstromu jazyk en:

Spouštění hardcopy v terminálu
# kopie cele site
php index.php cms/hard-copy /sample-site /sample-site en
# kopie casti site
php index.php cms/hard-copy /sample-site/ROOT/rozcestnik /sample-site/ROOT/rozcestnik2 en

Příklady spouštění skriptletu z administrace Vivo

  1. Přejděte do Skriptlet modulu http://YOUR_PROJECT_URL/system/manager/scriptlet/ 
  2. Vyberte skriptlet cms/hard-copy
  3. Spusťte skriptlet s parametry
Příklady parametrů pro hardcopy skriptlet
# kopie cele site
/sample-site /new-site
# kopie casti site
/sample-site/ROOT/rozcestnik /sample-site/ROOT/rozcestnik2 en

Jednotlivé kroky skriptletu:

  1. zkopíruje v rámci repository zdrojovou složku do cílové složky
  2. pro každou entitu vygeneruje nová, unikátní UUID
  3. pokud je nastaven jazyk
    1. nastavení nového jazyka
    2. commit do repository
  4. aktualizace referencí v rámci cílové složky
  5. reindexace 

API

Hlavní logika funkce HardCopy je nyní umístěna v Vivo\CMS\DocumentManager::hardCopy(), má parametry:

názevpopistyppovinnýpříklad
$sourcePathzdrojová složkastringano"/sample-site/ROOT/rozcestnik"
$targetPathcílová složkastringano"/sample-site/ROOT/rozcestnik2"
$languagejazykstringne"en"
$statusUpdateCallback

callback, který je volaný při každé změně stavu a je mu předána textová zpráva, volitelně pak úroveň zanoření dané zprávy

callablene
function($message, $messageLevel) {
	echo str_repeat("\t", $messageLevel);
	echo $message . "\n";
}
&$stats

reference na pole, do kterého se uloží statistiky výsledku kopírování

 

arrayne
array(
	"uuidsRegenerated" => 12,
	"entitiesUpdated" => 12,
	"referencesReplaced" => 12,
	"entitiesReindexed" => 12
);

Funkce vrací typ boolean, který indikuje, zda se kopírování zdařilo či nikoliv (v případě, že se kopírování nezdařilo, dojde k zavolání callbacku $statusUpdateCallback s příslušnou chybovou hláškou).

  • No labels