ããã¯ã¬ãã¹ã³ã®3éšç®ã®ç¿»èš³ã§ãã åã®èšäºã§æžããããã«ã2çªç®ã®éšåã®ç¿»èš³ã¯ããŸãæå³ããããŸããã ã³ã³ããŒãã³ãããŒãžã®äœæã«é¢ãããã·ã¢èªã®æ å ±ã¯æ¢ã«ååã§ãã ã ããç§ã¯3çªç®ã«é£ã³ãŸããã
ãã®ã¬ãã¹ã³ã§ã¯ãã¢ããªã³ããã©ã³ã¹ããŒãããã±ãŒãžã«ããã¯ããæ¹æ³ã瀺ããŸããããã¯ãããã±ãŒãžç®¡çã䜿çšããŠç°¡åã«ã€ã³ã¹ããŒã«ã§ããŸãã ç§ãã¡ãéçºãããµããªã¡ã³ãã«é¢é£ãããã¹ãŠã®ãã®ãããã¯ããŸããã¹ããããã ã³ã¢/ã³ã³ããŒãã³ã/ããã³ã¢ã»ãã/ã³ã³ããŒãã³ã/ã®ãã¡ã€ã« ã¢ã¯ã·ã§ã³ CMPïŒã³ã³ããŒãã³ãããŒãžïŒã®ã¡ãã¥ãŒé ç®ãšããŒã ã¹ããŒã¹ã åœéåããµããŒãããã¹ããããã®ããã©ã«ãå€ïŒi18nïŒã ãŸããããŒã¿ããŒã¹ã«ãŠãŒã¶ãŒããŒãã«ãäœæãããªãŸã«ããŒãè¿œå ããŸãã
ãã«ãïŒ
PackManã䜿çšããŠãç°¡åãªã¢ããªã³ãããã¯ã§ããŸã ã ãã ãããã®å Žåããããèªåã§è¡ãããã©ã³ã¹ããŒãããã±ãŒãžãšã¯äœããå®å šã«ç解ããããšæããŸãã
ã¢ã»ã³ããªã®ãã£ã¬ã¯ããªãèšå®ãã
ã¬ãã¹ã³ã®æåŸã§ã_buildãã£ã¬ã¯ããªã¯æ¬¡ã®ããã«ãªããŸãã
ã¬ãã¹ã³ã®æåã®éšåã®build.config.phpãã¡ã€ã«ãšbuild.schema.phpãã¡ã€ã«ã«ã€ããŠã¯ãã§ã«ããç¥ã£ãŠããŸãããä»ã®éšåã ããèŠãŠã¿ãŸãããã
ããŒã¿ -ããã§ã¯ãããã±ãŒãžããŒã¿ãããã±ãŒãžåããããã®ãã¹ãŠã®ã¹ã¯ãªãããé 眮ããŸãã
ãªãŸã«ã -ãã©ã«ãã«ã¯ããã©ã³ã¹ããŒããã±ããã®ãªãŸã«ããå«ãŸããŠããŸã ã
build.transport.php-ããã¯ããã«ãŒã®ã¡ã€ã³ã¹ã¯ãªããã§ãããããã±ãŒãžãäœæããããã«å®è¡ããå¿ èŠããããŸãã
setup.options.php-ã€ã³ã¹ããŒã©ãŒèšå®ã åŸã§ç°¡åã«ãã®ç®çãæ€èšããŸãã
ããã«ãŒã¹ã¯ãªããã®äœæ
次ã®å 容ã§/www/doodles/_build/build.transport.phpãã¡ã€ã«ãäœæããŸãã
<?php $tstart = explode(' ', microtime()); $tstart = $tstart[1] + $tstart[0]; set_time_limit(0); /* */ define('PKG_NAME','Doodles'); define('PKG_NAME_LOWER','doodles'); define('PKG_VERSION','1.0'); define('PKG_RELEASE','rc1'); /* */ $root = dirname(dirname(__FILE__)).'/'; $sources = array( 'root' => $root, 'build' => $root . '_build/', 'data' => $root . '_build/data/', 'resolvers' => $root . '_build/resolvers/', 'chunks' => $root.'core/components/'.PKG_NAME_LOWER.'/chunks/', 'lexicon' => $root . 'core/components/'.PKG_NAME_LOWER.'/lexicon/', 'docs' => $root.'core/components/'.PKG_NAME_LOWER.'/docs/', 'elements' => $root.'core/components/'.PKG_NAME_LOWER.'/elements/', 'source_assets' => $root.'assets/components/'.PKG_NAME_LOWER, 'source_core' => $root.'core/components/'.PKG_NAME_LOWER, ); unset($root); /* override with your own defines here (see build.config.sample.php) */ require_once $sources['build'] . 'build.config.php'; require_once MODX_CORE_PATH . 'model/modx/modx.class.php'; $modx= new modX(); $modx->initialize('mgr'); echo '<pre>'; /* used for nice formatting of log messages */ $modx->setLogLevel(modX::LOG_LEVEL_INFO); $modx->setLogTarget('ECHO'); $modx->loadClass('transport.modPackageBuilder','',false, true); $builder = new modPackageBuilder($modx); $builder->createPackage(PKG_NAME_LOWER,PKG_VERSION,PKG_RELEASE); $builder->registerNamespace(PKG_NAME_LOWER,false,true,'{core_path}components/'.PKG_NAME_LOWER.'/'); /* zip up package */ $modx->log(modX::LOG_LEVEL_INFO,'Packing up transport package zip...'); $builder->pack(); $tend= explode(" ", microtime()); $tend= $tend[1] + $tend[0]; $totalTime= sprintf("%2.4f s",($tend - $tstart)); $modx->log(modX::LOG_LEVEL_INFO,"\n<br />Package Built.<br />\nExecution time: {$totalTime}\n"); exit ();
ããã«ã¯éåžžã«å€ãã®ãã®ããããŸãããåå空éãããã¯ãããdoodles-1.0-rc1.zipããã©ã³ã¹ããŒãããã±ãŒãžãã¡ã€ã«ïŒããŒã¹ã®ã¿ïŒãäœæããããã«å¿ èŠãªã®ã¯ããã ãã§ããããšã«æ³šæããŠãã ããã 詳现ã«åæããŸãã
$tstart = explode(' ', microtime()); $tstart = $tstart[1] + $tstart[0]; set_time_limit(0); /* */ define('PKG_NAME','Doodles'); define('PKG_NAME_LOWER','doodles'); define('PKG_VERSION','1.0'); define('PKG_RELEASE','rc1');
æåã«ãã¢ã»ã³ããªã®éå§æéãååŸããŸããããã«ãããæçµçã«ãã«ãã«ããã£ãæéãææ¡ã§ããŸãã ããã¯ãŸã£ããå¿ èŠã§ã¯ãªããæçšãªæ å ±ã§ãã 次ã«ããªãªãŒã¹ã®ååãããŒãžã§ã³ãããã³ã¿ã€ãã瀺ããŸãã 次ïŒ
/* */ $root = dirname(dirname(__FILE__)).'/'; $sources = array( 'root' => $root, 'build' => $root . '_build/', 'data' => $root . '_build/data/', 'resolvers' => $root . '_build/resolvers/', 'chunks' => $root.'core/components/'.PKG_NAME_LOWER.'/chunks/', 'lexicon' => $root . 'core/components/'.PKG_NAME_LOWER.'/lexicon/', 'docs' => $root.'core/components/'.PKG_NAME_LOWER.'/docs/', 'elements' => $root.'core/components/'.PKG_NAME_LOWER.'/elements/', 'source_assets' => $root.'assets/components/'.PKG_NAME_LOWER, 'source_core' => $root.'core/components/'.PKG_NAME_LOWER, ); unset($root); /* override with your own defines here (see build.config.sample.php) */ require_once $sources['build'] . 'build.config.php'; require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
ããã§ãããã±ãŒãžã³ã°ããã±ãŒãžã®ãã¹ãŠã®éšåãæ€çŽ¢ãããã¹ã決å®ããŸãã
æåŸã«ã build.config.phpãã¡ã€ã«ãšMODxã¯ã©ã¹ãå«ããŸãã ã 次ã¯ãMODxãªããžã§ã¯ããããŒãããŸãã
$modx = new modX(); $modx->initialize('mgr'); echo '<pre>'; /* used for nice formatting of log messages */ $modx->setLogLevel(modX::LOG_LEVEL_INFO); $modx->setLogTarget('ECHO'); $modx->loadClass('transport.modPackageBuilder','',false, true); $builder = new modPackageBuilder($modx); $builder->createPackage(PKG_NAME_LOWER,PKG_VERSION,PKG_RELEASE); $builder->registerNamespace(PKG_NAME_LOWER,false,true,'{core_path}components/'.PKG_NAME_LOWER.'/');
ããã§modXãªããžã§ã¯ããäœæãããmgrãã³ã³ããã¹ããåæåããŸãã 次ã«ãã¹ã¯ãªããã®å®è¡äžã«ãMODXã«ãšã©ãŒã¡ãã»ãŒãžã®è©³çŽ°ãèŠæ±ããŸãã ç»é¢ã«ã¡ãã»ãŒãžã衚瀺ããŠãã ããã
次ã«ãã¯ã©ã¹ãmodPackageBuilderããããŒããã2ã€ã®äŸ¿å©ãªã¡ãœããcreatePackageãšregisterNamespaceãååŸããŸãã
$modx->createPackage(key,version,release)
ããã§ã¯ãããã±ãŒãžã®ååïŒå°æåã§ãªããã°ãªãããããªãªããŸãã¯ãã€ãã³ãå«ããããšã¯ã§ããŸããïŒãããŒãžã§ã³ãããã³ãªãªãŒã¹ã®ã¿ã€ããæå®ããŸãã ModPackageBuilderã¯ãåå空éãèªåçã«ããã±ãŒãžåããŸãã
$builder->registerNamespace(namespace_name,autoincludes,packageNamespace,namespacePath)
æåã®ãã©ã¡ãŒã¿ãŒã¯åå空éåã§ãïŒãã®äŸã§ã¯ãdoodlesãïŒã 2çªç®ã¯ãåå空éã«é¢é£ä»ããããã¯ã©ã¹ã®é åã§ãïŒããã¯å¿ èŠãªããããfalseã«èšå®ããŸãïŒã 3çªç®ã®ãã©ã¡ãŒã¿ãŒã¯ãããã±ãŒãžã«åå空éãããã¯ããããšãæå³ããŸãïŒtrueã«èšå®ïŒã 3çªç®ã®ãã©ã¡ãŒã¿ãŒã¯ãåå空éãžã®ãã¹ãèšå®ããŸãã ãã®æåŸã®ãã©ã¡ãŒã¿ãŒãããŒã§ãã ãã¬ãŒã¹ãã«ããŒã{core_path}ãã«æ³šæããŠãã ãããããã¯ãããã±ãŒãžã®ã€ã³ã¹ããŒã«äžã«å®éã®ãã¹ã«çœ®ãæããããããã±ãŒãžã®æè»æ§ãé«ãŸããŸãã ãã¹ãããŒãã«æå®ããå¿ èŠã¯ãããŸããã
ããã«ãŒã®æåŸã®æ°è¡ã¯æ¬¡ã®ãšããã§ãã
/* zip up package */ $modx->log(modX::LOG_LEVEL_INFO,'Packing up transport package zip...'); $builder->pack(); $tend= explode(" ", microtime()); $tend= $tend[1] + $tend[0]; $totalTime= sprintf("%2.4f s",($tend - $tstart)); $modx->log(modX::LOG_LEVEL_INFO,"\n<br />Package Built.<br />\nExecution time: {$totalTime}\n"); exit ();
packïŒïŒã¡ãœããã¯ããã©ã³ã¹ããŒã¿ãŒããã±ãŒãžã®ZIPãã¡ã€ã«ãäœæããå¿ èŠãããããšãMODXã«äŒããŸãã æ®ãã®è¡ã¯ããã«ãã«ããã£ãæéã衚瀺ããã ãã§ãã ããã ãã§ãã èµ°ã£ãã
ããã¯ãã©ãŠã¶ãŒïŒhttpïŒ//localhost/doodles/_build/build.transport.phpã®ã¢ãã¬ã¹ãæã£ãŠããŸãïŒã«ããããããã°æ å ±ãšãã©ã«ããŒcore / packages / thisã«ãããŸãïŒ
ãããç§ãã¡ã®èŒžéããã±ãŒãžã§ãïŒ ããããããã¯ç§ãã¡ã®ãµããªã¡ã³ãã«ã¯ç¹ã«ååã§ã¯ãããŸããã
ããŒã¿ãè¿œå ãã
å¥ã®ã«ããŽãªãDoodlesãã§ããã±ãŒãžã«ã¹ãããããè¿œå ããŸãã build.transport.phpãã¡ã€ã«ã§ã registerNamespaceã®äžã«æ¬¡ã®ã³ãŒããè¿œå ããŸãã
<?php $category= $modx->newObject('modCategory'); $category->set('id',1); $category->set('category',PKG_NAME); /* */ //$modx->log(modX::LOG_LEVEL_INFO,'Packaging in snippets...'); //$snippets = include $sources['data'].'transport.snippets.php'; //if (empty($snippets)) $modx->log(modX::LOG_LEVEL_ERROR,'Could not package in snippets.'); //$category->addMany($snippets); /* create category vehicle */ $attr = array( xPDOTransport::UNIQUE_KEY => 'category', xPDOTransport::PRESERVE_KEYS => false, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::RELATED_OBJECTS => true, xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array ( 'Snippets' => array( xPDOTransport::PRESERVE_KEYS => false, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::UNIQUE_KEY => 'name', ), ), ); $vehicle = $builder->createVehicle($category,$attr); $builder->putVehicle($vehicle);
æåã«ããDoodlesããšããååã®modCategoryãªããžã§ã¯ãïŒã«ããŽãªïŒãäœæããŸãã ä¿å-> saveïŒïŒã§ã¯ãªãããªããžã§ã¯ãã®äœæã®ã¿ãè¡ãããšã«æ³šæããŠãã ããã 次ã«ãã¹ãããããããã¯ããããã®ã³ãŒãããããŸãããçŸæç¹ã§ã¯ç¡èŠããŠãã ãããåŸã§æ»ããŸãã
次ã«ãå€æ°ã®å±æ§ã®é åïŒVehicleã«ããŽãªã®å±æ§ïŒãäœæããŸããã ã©ããªè»ïŒ ãŸããããã¯èŒžéããã±ãŒãžã«ãªããžã§ã¯ããéã¶è»äž¡ã§ãã åãªããžã§ã¯ãïŒã¹ãããããã¡ãã¥ãŒé ç®ãã«ããŽãªãªã©ïŒã«ã¯ã茞éããã±ãŒãžãžã®ã茞éãçšã®è»äž¡ãå¿ èŠã§ãã ãããã£ãŠããããã®1ã€ãäœæããŸããããæåã«ããŠãŒã¶ãŒãããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãã«ãã®è»äž¡ãã©ã®ããã«åäœããããMODXã«äŒããããã€ãã®å±æ§ãå²ãåœãŠãŸããã
- xPDOTransport :: UNIQUE_KEY => 'category'-ããã§ã¯ããã«ããŽãªããã£ãŒã«ãããã®ã«ããŽãªã®äžæã®ããŒã§ããããšãMODXãšèšããŸãã
- xPDOTransport :: PRESERVE_KEYS => false-ãªããžã§ã¯ãã®äž»ããŒããä¿åããããå ŽåããããŸãã ããã¯ãåŸã§ååŸããã¡ãã¥ãŒãªã©ã®éèªåã€ã³ã¯ãªã¡ã³ãããŒïŒPKïŒã«åœ¹ç«ã¡ãŸãã ãã®ã«ããŽãªã¯ãããå¿ èŠãšããªããããfalseã«èšå®ããŸãã
- xPDOTransport :: UPDATE_OBJECT => true-ããã¯ãã«ããŽãªãæ¢ã«ååšããå ŽåãããŒãžã§ã³ã§æŽæ°ããå¿ èŠãããããšãMODXã«äŒããŸãã falseã«èšå®ãããŠããå ŽåãMODXã¯ã«ããŽãªãèŠã€ãã£ãå Žåã«åã«ã¹ãããããŸãã ã«ããŽãªãæŽæ°ããå¿ èŠããããŸãã
- xPDOTransport :: RELATED_OBJECTS => true-ããã¯é¢é£ãªããžã§ã¯ãã瀺ããŸãïŒã¹ãããããªããžã§ã¯ããæå®ããŸãïŒã ç§ãã¡ã®ã±ãŒã¹ã¯è¯ãäŸã§ãã ã€ã³ã¹ããŒã«ãããã¹ããããã¯ãã¹ãŠã«ããŽãªã«é 眮ãããŸãã
- xPDOTransport :: RELATED_OBJECT_ATTRIBUTES-ããã¯ãé¢é£ãªããžã§ã¯ãã®å±æ§ãæã€é£æ³é åã§ãã ç§ãã¡ã®å Žåãããã¯åãªãã¹ããããã§ããããã©ã°ã€ã³ãTVãã©ã¡ãŒã¿ãŒïŒè¿œå ãã£ãŒã«ãïŒããã£ã³ã¯ãªã©ã«ããããšãã§ããŸãã
ã¹ãããããªããžã§ã¯ãã®ããããã£ãèšå®ããŸãã
'Snippets' => array( xPDOTransport::PRESERVE_KEYS => false, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::UNIQUE_KEY => 'name', ),
ããã§ã¯ãäž»ããŒãä¿åããå¿ èŠã¯ãªããšèšããŸãïŒã«ããŽãªãšåæ§ïŒã 次ã«ããªããžã§ã¯ããæ¢ã«ååšããå Žåã¯æŽæ°ããŸãã æåŸã«ãMODXã«ãååããã£ãŒã«ããäž»ããŒã§ããããšãäŒããŸãã
次ã«ããããè¡ããŸãïŒ
$vehicle = $builder->createVehicle($category,$attr); $builder->putVehicle($vehicle);
ããã«ãããã«ããŽãªãªããžã§ã¯ãããå ã»ã©å®çŸ©ããå±æ§ãæã€å°ããªè»äž¡ã«ããã¯ãããŸãã ããã«ããããã©ã³ã¹ããŒãããã±ãŒãžã«è¿œå ãããŸãã ã§ããïŒ ç§ãã¡ã®ã«ããŽãªã¯ããã±ãŒãžåãããŠããŸãã 次ã«ãã¹ãããããè¿œå ããŸãã
ã¹ãããããè¿œå ãã
å ã«é²ã¿ããã©ã«ããŒ/ www / doodles / _build / data /ãäœæããŸãã ãã¡ã€ã«/www/doodles/_build/data/transport.snippets.phpãäœæããŸãã 次ã®ã³ãŒããå ¥ããŠãã ããïŒ
<?php function getSnippetContent($filename) { $o = file_get_contents($filename); $o = trim(str_replace(array('<?php','?>'),'',$o)); return $o; } $snippets = array(); $snippets[1]= $modx->newObject('modSnippet'); $snippets[1]->fromArray(array( 'id' => 1, 'name' => 'Doodles', 'description' => 'Displays a list of Doodles.', 'snippet' => getSnippetContent($sources['elements'].'snippets/snippet.doodles.php'), ),'',true,true); $properties = include $sources['data'].'properties/properties.doodles.php'; $snippets[1]->setProperties($properties); unset($properties); return $snippets;
æåã«ããã¡ã€ã«ããã³ãŒããååŸããã<ïŒPhpãã¿ã°ãåé€ããå°ããªãã«ããŒã¡ãœãããäœæããŸããã 次ã«ãã¹ãããããªããžã§ã¯ããäœæããŸãã èŠããŠãããŠãã ããïŒä¿åããå¿ èŠã¯ãªããäœæããã ãã§ãã $ã¹ããããé åã«æ»ããŸãããã build.transport.phpãã¡ã€ã«ã®ã³ã¡ã³ãéšåãèŠããŠããŸããïŒ ãã®éšåã¯æ¬¡ã®ãšããã§ãã
/* */ $modx->log(modX::LOG_LEVEL_INFO,'Packaging in snippets...'); $snippets = include $sources['data'].'transport.snippets.php'; if (empty($snippets)) $modx->log(modX::LOG_LEVEL_ERROR,'Could not package in snippets.'); $category->addMany($snippets);
ã³ã¡ã³ããåé€ããŸãã ããã§ãã¹ãããããè»äž¡ã«ããŽãªã«ããŒããããŸããã 次ã«ãåè¿°ã®ããããã£ãè¿œå ããŸãã
ã¹ããããããããã£ã®è¿œå
次ã®å 容ã§/www/doodles/_build/data/properties/properties.doodles.phpãã¡ã€ã«ãäœæããŸãã
<?php $properties = array( array( 'name' => 'tpl', 'desc' => 'prop_doodles.tpl_desc', 'type' => 'textfield', 'options' => '', 'value' => 'rowTpl', 'lexicon' => 'doodles:properties', ), array( 'name' => 'sort', 'desc' => 'prop_doodles.sort_desc', 'type' => 'textfield', 'options' => '', 'value' => 'name', 'lexicon' => 'doodles:properties', ), array( 'name' => 'dir', 'desc' => 'prop_doodles.dir_desc', 'type' => 'list', 'options' => array( array('text' => 'prop_doodles.ascending','value' => 'ASC'), array('text' => 'prop_doodles.descending','value' => 'DESC'), ), 'value' => 'DESC', 'lexicon' => 'doodles:properties', ), ); return $properties;
ããã¯ãã¹ããããããããã£ïŒãã©ã¡ãŒã¿ãŒïŒã®ããã©ã«ãã®PHPè¡šçŸã§ãã 圌ã®ãã¹ãŠã®ããŒãèŠãŠã¿ãŸãããã
- name-ã¹ããããã®ååã ãã®ååã¯åŒã³åºãã§æå®ãããŸãïŒ
[[Doodles? &tpl=`rowTpl`]]
- desc-ã¹ããããã®èª¬æã
- typeã¯ãããããã£ãã£ãŒã«ãã®ãxtypeãã§ãã çŸåšããtextfieldãïŒããã¹ããã£ãŒã«ãïŒããtextareaãããcombo-booleanãïŒããããããŠã³ãªã¹ããYes / NoãïŒããã³ãlistãïŒå€ã®ãªã¹ãïŒã®4çš®é¡ãå©çšå¯èœã§ãã
- ãªãã·ã§ã³ -å€ã®ãªã¹ãã«ã®ã¿äœ¿çšãããŸãã ããã¯é åã®é åã§ãã ããããã«2ã€ã®æå³ããããŸãïŒãããã¹ããïŒããã¹ãïŒãšãå€ãïŒå€ïŒã ããã¹ãã¯ãªã¹ãå ã®ãŠãŒã¶ãŒã«è¡šç€ºãããå€ã¯ããŒã¿ããŒã¹ã«ä¿åãããŸãã ããã¹ãã¯ãèŸæžããã®ããŒã«ããããšãã§ããŸãã
- value-ããããã£ã®ããã©ã«ãå€ã
- ã¬ãã·ã³ã³ -å¿ èŠã«å¿ããŠãããããã£ãi18näºæã«ããããšãã§ããŸãã èŸæžåãå ¥åããã ãã§ãMODXãæ®ããè¡ããŸãã
ãã®ãããããããã£ããããŸãã ããããã芧ã®ãšãããçšèªéãdoodlesïŒpropertiesãã®æ°ããã»ã¯ã·ã§ã³ãžã®ãªã³ã¯ãäœæããŸããã 次ã®å 容ã®ã¬ãã·ã³ã³ãã¡ã€ã«/www/doodles/core/components/doodles/lexicon/en/properties.inc.phpãäœæããŸãããã
<?php $_lang['prop_doodles.ascending'] = 'Ascending'; $_lang['prop_doodles.descending'] = 'Descending'; $_lang['prop_doodles.dir_desc'] = 'The direction to sort by.'; $_lang['prop_doodles.sort_desc'] = 'The field to sort by.'; $_lang['prop_doodles.tpl_desc'] = 'The chunk for displaying each row.';
ããã§ãããããã«ãã³ã³ãã³ãã¯ããã©ã«ãã®ã»ã¯ã·ã§ã³ã«äŒŒãŠããŸãã
ããã§ã¹ã¯ãªãããå®è¡ãããšãã«ããŽãªãšã¹ãããããšãã®ããããã£ãããã°ã«ããã±ãŒãžåãããŸãã ãããïŒ ãã ããã¢ããªã³ã®ãã¡ã€ã«ã¯ã¹ãããããŸããã ãããä¿®æ£ããŸãããã
ãã¡ã€ã«ãªãŸã«ããŒã®è¿œå
ã¢ããªã³ã®ãã¡ã€ã«/ www / doodles / core / components / doodles /ããã³/ www / doodles / asset / components / doodles /ãå«ããã©ã«ããŒãããã±ãŒãžã«è¿œå ããŸãããã ããããã䜿çšããŠãè»äž¡ã«ããŽãªã«ãã¡ã€ã«ãè¿œå ããŸã ãã¡ã€ã«ãªãŸã«ãã
ãã®ãããè»äž¡ã«ããŽãªãè¿œå ããçŽåŸã®build.transport.php㧠ïŒ
$vehicle = $builder->createVehicle($category,$attr);
ãããè¿œå ããŠãã ããïŒ
$modx->log(modX::LOG_LEVEL_INFO,'Adding file resolvers to category...'); $vehicle->resolve('file',array( 'source' => $sources['source_assets'], 'target' => "return MODX_ASSETS_PATH . 'components/';", )); $vehicle->resolve('file',array( 'source' => $sources['source_core'], 'target' => "return MODX_CORE_PATH . 'components/';", ));
2ã€ã®å±æ§ã解æãã䟡å€ããããŸãã
sourceã¯ããã¡ã€ã«ãèŠã€ããããšãã§ãããã¹ã§ãã 以åã«å®çŸ©ããsource_assetsãšsource_coreã䜿çšããŸãã
targetã¯ãã¢ããªã³ãã¡ã€ã«ã眮ããããã¹ãè¿ãè©äŸ¡æååã§ãã
resolveïŒïŒã®æåã®ãã©ã¡ãŒã¿ãŒã¯ããã¡ã€ã«ãªãŸã«ããŒã§ããããšãMODXã«äŒããŸãã ãã®ã¬ãã¹ã³ã®åŸåã§ãªãŸã«ãã詳ããèŠãŠãããŸãã
ããã§ããã«ãŒãå®è¡ãããšã Doodles / Core /ããã³Doodles / Assets / Foldersãããã¯ãããŸãã
ã¡ãã¥ãŒé ç®ãšã¢ã¯ã·ã§ã³ãè¿œå ãã
ããŠãåã«è¡ã£ãã³ã³ããŒãã³ãããŒãžã®ã¡ãã¥ãŒé ç®ãšã¢ã¯ã·ã§ã³ãè¿œå ããŸããã
次ã®ã³ãŒããè¿œå ããŸãã
$modx->log(modX::LOG_LEVEL_INFO,'Packaging in menu...'); $menu = include $sources['data'].'transport.menu.php'; if (empty($menu)) $modx->log(modX::LOG_LEVEL_ERROR,'Could not package in menu.'); $vehicle= $builder->createVehicle($menu,array ( xPDOTransport::PRESERVE_KEYS => true, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::UNIQUE_KEY => 'text', xPDOTransport::RELATED_OBJECTS => true, xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array ( 'Action' => array ( xPDOTransport::PRESERVE_KEYS => false, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::UNIQUE_KEY => array ('namespace','controller'), ), ), )); $modx->log(modX::LOG_LEVEL_INFO,'Adding in PHP resolvers...'); $builder->putVehicle($vehicle); unset($vehicle,$menu);
ããã§ã¯ããã¹ãŠãè»äž¡ã«ããŽãªã«äŒŒãŠããŸãã ã¡ãã¥ãŒãªããžã§ã¯ããšé¢é£ããã¢ã¯ã·ã§ã³ãªããžã§ã¯ããäœæãããŸãã
- PRESERVE_KEYSã trueã«èšå®ãããŠããã®ã¯ ã¡ãã¥ãŒã«ã¯äžæã®ããŒããããã¡ãã¥ãŒé ç®ã®ããŒãä¿æããããšèããŠããŸãã
- é¢é£ä»ããããã¢ã¯ã·ã§ã³ãªããžã§ã¯ãã®UNIQUE_KEYã¯é åã§ãã ããã¯ãããŒã ã¹ããŒã¹ãnamespaceã=>ãdoodlesããšã³ã³ãããŒã©ãŒãcontrollers / indexããæã€modActionãªããžã§ã¯ããæ¢ãããã«MODXã«æ瀺ããŸãã
ãæ³åã®ãšããã transport.menu.phpãã¡ã€ã«ãè¿œå ããå¿ èŠããããŸãã /www/doodles/_build/data/transport.menu.phpãäœæããŸã ïŒ
<?php $action= $modx->newObject('modAction'); $action->fromArray(array( 'id' => 1, 'namespace' => 'doodles', 'parent' => 0, 'controller' => 'controllers/index', 'haslayout' => true, 'lang_topics' => 'doodles:default', 'assets' => '', ),'',true,true); $menu= $modx->newObject('modMenu'); $menu->fromArray(array( 'text' => 'doodles', 'parent' => 'components', 'description' => 'doodles.desc', 'icon' => 'images/icons/plugin.gif', 'menuindex' => 0, 'params' => '', 'handler' => '', ),'',true,true); $menu->addOne($action); unset($menus); return $menu;
ããã®ãã¹ãŠã¯transport.snippets.phpã«äŒŒãŠããŸãããã¡ãã¥ãŒãªããžã§ã¯ãã®addOneïŒïŒã¡ãœãããåŒã³åºãããç¹ãç°ãªããŸãã fromArrayïŒïŒé åã®ãã¹ãŠã®èŠçŽ ãããŒã¿ããŒã¹ããŒãã«ã®ãã£ãŒã«ãã«å¯Ÿå¿ããããšã«æ³šæããŠãã ããã
ãããã£ãŠãã¡ãã¥ãŒé ç®ãšã¢ã¯ã·ã§ã³ã¯ããã¯ãããŠããŸãã
ãªãŸã«ããŒãè¿œå ãã
ã·ã¹ãã ã«ã¢ããªã³ãã€ã³ã¹ããŒã«ãããšã1ã€ã®åé¡ã«çŽé¢ããŸããmodx_doodlesããŒã¿ããŒã¹ããŒãã«ã¯ååšããŸããã tranportããŒã«ã®åŸã«å®è¡ãããPHPãªãŸã«ããŒãäœæããŸãããã ãã®ãªãŸã«ããã¡ãã¥ãŒããŒã¯ã«ã«è¿œå ããŸãã $ vehicle = $ builder-> createVehicleïŒ$ menuïŒã®çŽåŸã«ã次ã®ã³ãŒããè¿œå ããŸãã
$modx->log(modX::LOG_LEVEL_INFO,'Adding in PHP resolvers...'); $vehicle->resolve('php',array( 'source' => $sources['resolvers'] . 'resolve.tables.php', ));
次ã®ã³ã³ãã³ããå«ããã¡ã€ã«/www/doodles/_build/resolvers/resolve.tables.phpãäœæããŸãã
<?php if ($object->xpdo) { switch ($options[xPDOTransport::PACKAGE_ACTION]) { case xPDOTransport::ACTION_INSTALL: $modx =& $object->xpdo; $modelPath = $modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/'; $modx->addPackage('doodles',$modelPath); $manager = $modx->getManager(); $manager->createObjectContainer('Doodle'); break; case xPDOTransport::ACTION_UPGRADE: break; } } return true;
çŽ æŽãããã ããã§ã¯ãã¹ãŠãæ確ã ãšæããŸãã ã¹ã€ããã®æ§é ããããçŸåšã®ã¢ã¯ã·ã§ã³ã«å¿ããŠã¿ã¹ã¯ãå®è¡ã§ããŸãã ã¢ãã«ãžã®ãã¹ã瀺ãã addPackageïŒïŒã¡ãœãããåŒã³åºããŸããããã«ãããxpdoã¹ããŒã ãè¿œå ãããŸãïŒæåã®ã¬ãã¹ã³ããèŠããŠããŸããïŒïŒã æåŸã«ã $ modx-> getManagerïŒïŒãå®è¡ãã次ã«$ manager-> createObjectContainerïŒ 'Doodle'ïŒãå®è¡ããŸãã ãã®ã¡ãœããã¯ãMODXã«SQLãå®è¡ããDoodleã¯ã©ã¹ã®ããŒã¿ããŒã¹ã«ããŒãã«ãäœæããã³ãã³ããæäŸããŸãã ããã§ãæåã®éšåã§è¡ã£ãããã«ãããŒã¿ããŒã¹ããŒãã«ã®ååšã®ãã§ãã¯ãåé€ã§ããŸãïŒãªãŸã«ããŒã䜿çšããå¿ èŠã¯ãããŸãããã䟿å©ã§ãïŒã ãããŠæåŸã«ããã¹ãŠãã¹ã ãŒãºã«é²ãã ããšãMODXãèªèããããã«trueãè¿ããŸãã
ããã§ãããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãã«ãããŒã¿ããŒã¹ãžã®è¿œå ã®ããŒãã«ãäœæãããŸãã
cangelogãreadmeãã©ã€ã»ã³ã¹ãããã³ã€ã³ã¹ããŒã«ãªãã·ã§ã³ãã¡ã€ã«ã®è¿œå
docs /ãã©ã«ããŒã«æ¬¡ã®å 容ã®readme.txtãã¡ã€ã«ãäœæããŸãããã
-------------------- Extra: Doodles -------------------- Version: 1.0 A simple demo extra for creating robust 3rd-Party Components in MODx Revolution.
ãŸãã license.txtãã¡ã€ã«ïŒã©ã€ã»ã³ã¹ã®èª¬æãå«ãïŒãšchangelog.txt ïŒå€æŽãã°ïŒãäœæããŸãïŒãŸã ãªãå ŽåïŒã
build.transport.phpã¹ã¯ãªããã«æ»ã£ãŠã $ builder-> packïŒïŒã®åã«æ¬¡ã®è¡ãè¿œå ããŸãããã
$modx->log(modX::LOG_LEVEL_INFO,'Adding package attributes and setup options...'); $builder->setPackageAttributes(array( 'license' => file_get_contents($sources['docs'] . 'license.txt'), 'readme' => file_get_contents($sources['docs'] . 'readme.txt'), 'changelog' => file_get_contents($sources['docs'] . 'changelog.txt'), 'setup-options' => array( 'source' => $sources['build'].'setup.options.php', ), ));
ã芧ã®ãšããã setPackageAttributesïŒïŒã¡ãœãããåŒã³åºãã ãããã«ãŒã«å±æ§ãèšå®ãããŸãã ãsetup-optionsããšåŒã°ããæ°ããé åããããŸãã ãã®é åã«ã¯ãã㌠'source'ãæã€èŠçŽ ïŒPHPãã¡ã€ã«ãžã®ãã¹ïŒãªãŸã«ããŒãªã©ïŒïŒããããŸãã
次ã®å 容ã§/www/doodles/_build/setup.options.phpãã¡ã€ã«ãäœæããŸãã
<?php $output = ''; switch ($options[xPDOTransport::PACKAGE_ACTION]) { case xPDOTransport::ACTION_INSTALL: $output = '<h2>Doodles Installer</h2> <p>Thanks for installing Doodles! Please review the setup options below before proceeding.</p><br />'; break; case xPDOTransport::ACTION_UPGRADE: case xPDOTransport::ACTION_UNINSTALL: break; } return $output;
ããªãã¿ã§ããã ãã®ã³ãŒãã«ããããŠãŒã¶ãŒãããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãã«ãã€ã³ã¹ããŒã«ãªãã·ã§ã³ãã衚瀺ã§ããŸãã çŸåšãã¢ããªã³ãã€ã³ã¹ããŒã«ãã人ã«ãããããšãããšèšãã¡ãã»ãŒãžã®ã¿ã衚瀺ããŠããŸãã
ããã§ãããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãã«è¡šç€ºãããã€ã³ã¹ããŒã©ãŒã«ãã£ãŠããã«åŠçããããã©ãŒã èŠçŽ ãè¿œå ã§ããŸãã Quipã³ã³ããŒãã³ãã§äŸãèŠãããšãã§ããŸãïŒ github.com/splittingred/Quip/blob/develop/_build/resolvers/setupoptions.resolver.php
ããã ãã§ã ããã«ãŒïŒhttpïŒ//localhost/doodles/_build/build.transport.phpïŒãå®è¡ãããšããã©ã³ã¹ããŒãããã±ãŒãžãã¡ã€ã«ãdoodles-1.0-rc1.zipããcore / packages /ãã©ã«ããŒã«è¡šç€ºãããŸãã ãã®ãã¡ã€ã«ã¯ãMODXã¢ããªã³ãªããžããªã«ããŠã³ããŒãã§ãã ãããã±ãŒãžç®¡çãããã€ã³ã¹ããŒã«ã§ããŸãã
ç§ãã¡ãäœæããããã«ãŒã®ãã¹ãŠã®ãã¡ã€ã«ã¯ã github.com / splittingred / Doodles / tree / develop / _buildã«ãããŸãã