Importing webpage elements from manually entered cloud file path work. All detected elements are automatically imported.

This commit is contained in:
Andrew Manning 2016-07-17 16:05:26 -04:00
parent 75fb065526
commit d6b28cdc57
3 changed files with 26 additions and 7 deletions

View File

@ -269,8 +269,27 @@ class Webpages extends \Zotlabs\Web\Controller {
notice( t('Invalid folder path.') . EOL);
return null;
}
info( t('Valid folder path.') . EOL);
require_once('include/import.php');
$elements = [];
$elements['pages'] = scan_webpage_elements($_POST['path'], 'page', true);
$elements['layouts'] = scan_webpage_elements($_POST['path'], 'layout', true);
$elements['blocks'] = scan_webpage_elements($_POST['path'], 'block', true);
logger('elements: ' . json_encode($elements));
if(!(empty($elements['pages']) && empty($elements['blocks']) && empty($elements['layouts']))) {
info( t('Webpages elements detected.') . EOL);
}
// Import layout first so that pages that reference new layouts will find
// the mid of layout items in the database
foreach($elements['layouts'] as &$layout) {
$layout = import_webpage_element($layout, $channel, 'layout');
}
foreach($elements['pages'] as &$page) {
$page = import_webpage_element($page, $channel, 'page');
}
foreach($elements['blocks'] as &$block) {
$block = import_webpage_element($block, $channel, 'block');
}
return null;

View File

@ -1972,7 +1972,7 @@ function get_filename_by_cloudname($cloudname, $channel, $storepath) {
foreach($items as $item) {
$filename = find_filename_by_hash($channel['channel_id'], $item);
if($filename === $cloudname) {
return $filename;
return $item;
}
}
return null;

View File

@ -1223,15 +1223,15 @@ function scan_webpage_elements($path, $type, $cloud = false) {
$dirtoscan = $path;
switch ($type) {
case 'page':
$dirtoscan .= '/pages/';
$dirtoscan .= 'pages/';
$json_filename = 'page.json';
break;
case 'layout':
$dirtoscan .= '/layouts/';
$dirtoscan .= 'layouts/';
$json_filename = 'layout.json';
break;
case 'block':
$dirtoscan .= '/blocks/';
$dirtoscan .= 'blocks/';
$json_filename = 'block.json';
break;
default :
@ -1251,7 +1251,7 @@ function scan_webpage_elements($path, $type, $cloud = false) {
$folder = $dirtoscan . '/' . $element;
if (is_dir($folder)) {
if($cloud) {
$jsonfilepath = get_filename_by_cloudname($json_filename, $channel, $folder);
$jsonfilepath = $folder . '/' . get_filename_by_cloudname($json_filename, $channel, $folder);
} else {
$jsonfilepath = $folder . '/' . $json_filename;
}