<?php require_once ROOT_PATH . 'lib/utils/themes.php'; require_once ROOT_PATH . 'vendor/jsmin/jsmin.php'; /* * PUBLISH STEP - shows progress of publishing action and thumbnail generation * forwards to /chart/:id/finish */ $app->get('/chart/:id/publish', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $cfg = $GLOBALS['dw_config']; $page = array('title' => $chart->getID() . ' :: ' . __('Publish'), 'chartData' => $chart->loadData(), 'chart' => $chart, 'visualizations' => DatawrapperVisualization::all(), 'vis' => DatawrapperVisualization::get($chart->getType()), 'chartUrl' => $chart->getPublicUrl(), 'chartUrlLocal' => '/chart/' . $chart->getID() . '/preview', 'themes' => DatawrapperTheme::all(), 'exportStaticImage' => !empty($cfg['phantomjs']), 'chartActions' => DatawrapperHooks::execute(DatawrapperHooks::GET_CHART_ACTIONS, $chart), 'estExportTime' => ceil(JobQuery::create()->estimatedTime('export_image') / 60)); add_header_vars($page, 'chart', 'chart-editor/publish.css'); add_editor_nav($page, 4); if ($user->isAbleToPublish() && ($chart->getLastEditStep() == 3 || $app->request()->get('republish') == 1)) { // actual publish process $chart->publish(); $page['chartUrl'] = $chart->getPublicUrl(); // generate thumbnails $page['publish'] = true; $page['republish'] = $app->request()->get('republish') == 1; } $app->render('chart/publish.twig', $page); }); });
*/ $app->get('/xhr/header/:page', function ($active) use($app) { disable_cache($app); $page = array(); add_header_vars($page, $active); $res = $app->response(); $res['Cache-Control'] = 'max-age=0'; $app->render('header.twig', $page); }); /** * reloads the header menu after login/logout */ $app->get('/xhr/home-login', function () use($app) { $page = array(); add_header_vars($page); $res = $app->response(); $res['Cache-Control'] = 'max-age=0'; $app->render('home-login.twig', $page); }); /** * reloads visualization specific options after the user * changed the visualization type */ require_once '../lib/utils/themes.php'; $app->get('/xhr/:chartid/vis-options', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $page = array('vis' => DatawrapperVisualization::get($chart->getType()), 'theme' => DatawrapperTheme::get($chart->getTheme()), 'language' => substr(DatawrapperSession::getLanguage(), 0, 2)); $app->render('vis-options.twig', $page); }); });
<?php /* * VISUALIZE STEP */ $app->get('/chart/:id/visualize', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $page = array('title' => $chart->getID() . ' :: ' . __('Visualize'), 'chartData' => $chart->loadData(), 'chart' => $chart, 'visualizations_deps' => DatawrapperVisualization::all('dependencies'), 'visualizations' => DatawrapperVisualization::all(), 'vis' => DatawrapperVisualization::get($chart->getType()), 'themes' => DatawrapperTheme::all(), 'theme' => DatawrapperTheme::get($chart->getTheme()), 'debug' => !empty($GLOBALS['dw_config']['debug_export_test_cases']) ? '1' : '0'); add_header_vars($page, 'chart'); add_editor_nav($page, 3); $app->render('chart/visualize.twig', $page); }); });
<?php /* * UPLOAD STEP */ $app->get('/chart/:id/upload', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $datasets = DatawrapperHooks::execute(DatawrapperHooks::GET_DEMO_DATASETS); $groups = array(); foreach ($datasets as $ds) { if (!isset($groups[$ds['type']])) { $groups[$ds['type']] = array('type' => $ds['type'], 'datasets' => array()); } $groups[$ds['type']]['datasets'][] = $ds; } $page = array('title' => $chart->getID() . ' :: ' . __('Upload Data'), 'chartData' => $chart->loadData(), 'chart' => $chart, 'datasets' => $groups); add_header_vars($page, 'chart'); add_editor_nav($page, 1); $res = $app->response(); $res['Cache-Control'] = 'max-age=0'; $app->render('chart/upload.twig', $page); }); });
<?php /* * DESCRIBE STEP */ $app->get('/chart/:id/describe', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $page = array('title' => $chart->getID() . ' :: ' . __('Check & Describe'), 'chartData' => $chart->loadData(), 'chart' => $chart); add_header_vars($page, 'chart', 'chart-editor/describe.css'); add_editor_nav($page, 2); switch (substr(DatawrapperSession::getLanguage(), 0, 2)) { case 'de': $k = '.'; $d = ','; break; case 'fr': $k = ' '; $d = ','; break; default: $k = ','; $d = '.'; } $page['columntypes'] = array('text' => 'Text', 'number' => 'Number', 'date' => 'Date'); $page['numberformats'] = array('n3' => '3 (' . number_format(1234.56789, 3, $d, $k) . ')', 'n2' => '2 (' . number_format(1234.56789, 2, $d, $k) . ')', 'n1' => '1 (' . number_format(1234.56789, 1, $d, $k) . ')', 'n0' => '0 (' . number_format(1234.56789, 0, $d, $k) . ')'); $page['significantdigits'] = array('s6' => '6 (' . number_format(1234.56789, 2, $d, $k) . ')', 's5' => '5 (' . number_format(123.456789, 2, $d, $k) . ')', 's4' => '4 (' . number_format(12.34, 2, $d, $k) . ')', 's3' => '3 (' . number_format(1.23, 2, $d, $k) . ')', 's2' => '2 (' . number_format(0.12, 2, $d, $k) . ')', 's1' => '1 (' . number_format(0.01, 2, $d, $k) . ')'); $app->render('chart/describe.twig', $page); }); });
<?php require_once '../lib/utils/themes.php'; require_once '../lib/utils/chart_content.php'; /* * Shows a preview of a chart for display in an iFrame */ $app->get('/chart/:id/preview/?', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $page = get_chart_content($chart, $user, $app->request()->get('minify'), $app->request()->get('debug')); $page['plain'] = $app->request()->get('plain') == 1; $page['fullscreen'] = $app->request()->get('fs') == 1; $page['innersvg'] = $app->request()->get('innersvg') == 1; $app->render('chart.twig', $page); }); });
<?php /* * PUBLISH STEP - shows progress of publishing action and thumbnail generation */ $app->get('/chart/:id/publish', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $cfg = $GLOBALS['dw_config']; $chartActions = DatawrapperHooks::execute(DatawrapperHooks::GET_CHART_ACTIONS, $chart); // add duplicate action $chartActions[] = array('id' => 'duplicate', 'icon' => 'code-fork', 'title' => __('Duplicate this chart'), 'order' => 500); // sort actions usort($chartActions, function ($a, $b) { return (isset($a['order']) ? $a['order'] : 999) - (isset($b['order']) ? $b['order'] : 999); }); $chartW = $chart->getMetadata('publish.embed-width'); $chartH = $chart->getMetadata('publish.embed-height'); if (substr($chartW, -1) != '%') { $chartW .= 'px'; } if (substr($chartH, -1) != '%') { $chartH .= 'px'; } $page = array('title' => $chart->getID() . ' :: ' . __('Publish'), 'chartData' => $chart->loadData(), 'chart' => $chart, 'visualizations' => DatawrapperVisualization::all(), 'vis' => DatawrapperVisualization::get($chart->getType()), 'chartUrl' => $chart->getPublicUrl(), 'chartUrlLocal' => '/chart/' . $chart->getID() . '/preview', 'embedWidth' => $chartW, 'embedHeight' => $chartH, 'themes' => DatawrapperTheme::all(), 'exportStaticImage' => !empty($cfg['phantomjs']), 'chartActions' => $chartActions, 'estExportTime' => ceil(JobQuery::create()->estimatedTime('export') / 60)); add_header_vars($page, 'chart', 'chart-editor/publish.css'); add_editor_nav($page, 4); $app->render('chart/publish.twig', $page); }); });
<?php /* * UPLOAD STEP */ $app->get('/chart/:id/upload', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $page = array('title' => $chart->getID() . ' :: ' . __('Upload Data'), 'chartData' => $chart->loadData(), 'chart' => $chart, 'datasets' => DatawrapperHooks::execute(DatawrapperHooks::GET_DEMO_DATASETS)); add_header_vars($page, 'chart'); add_editor_nav($page, 1); $res = $app->response(); $res['Cache-Control'] = 'max-age=0'; $app->render('chart/upload.twig', $page); }); });
<?php /* * DESCRIBE STEP */ $app->get('/chart/:id/describe', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $page = array('chartData' => $chart->loadData(), 'chart' => $chart); add_header_vars($page, 'chart'); add_editor_nav($page, 2); switch (substr(DatawrapperSession::getLanguage(), 0, 2)) { case 'de': $k = '.'; $d = ','; break; case 'fr': $k = ' '; $d = ','; break; default: $k = ','; $d = '.'; } $page['numberformats'] = array('n3' => '3 (' . number_format(1234.56789, 3, $d, $k) . ')', 'n2' => '2 (' . number_format(1234.56789, 2, $d, $k) . ')', 'n1' => '1 (' . number_format(1234.56789, 1, $d, $k) . ')', 'n0' => '0 (' . number_format(1234.56789, 0, $d, $k) . ')'); $app->render('chart-describe.twig', $page); }); });
/* * PUBLISH STEP - shows progress of publishing action and thumbnail generation * forwards to /chart/:id/finish */ $app->get('/chart/:id/publish', function ($id) use($app) { disable_cache($app); check_chart_writable($id, function ($user, $chart) use($app) { $cfg = $GLOBALS['dw_config']; $local_url = 'http://' . $cfg['chart_domain'] . '/' . $chart->getID() . '/index.html'; $public_url = $chart->getPublicUrl(); if (empty($public_url)) { $public_url = $local_url; } $page = array('chartData' => $chart->loadData(), 'chart' => $chart, 'visualizations' => DatawrapperVisualization::all(), 'vis' => DatawrapperVisualization::get($chart->getType()), 'chartUrl' => $public_url, 'chartUrlLocal' => '/chart/' . $chart->getID() . '/preview', 'themes' => DatawrapperTheme::all(), 'exportStaticImage' => !empty($cfg['phantomjs']), 'chartActions' => DatawrapperHooks::execute(DatawrapperHooks::GET_CHART_ACTIONS, $chart), 'estExportTime' => ceil(JobQuery::create()->estimatedTime('export') / 60)); add_header_vars($page, 'chart'); add_editor_nav($page, 4); if ($user->isAbleToPublish() && ($chart->getLastEditStep() == 3 || $app->request()->get('republish') == 1)) { $published_urls = DatawrapperHooks::execute(DatawrapperHooks::GET_PUBLISHED_URL, $chart); if (!empty($published_urls)) { $chart->setPublicUrl($published_urls[0]); $page['chartUrl'] = $published_urls[0]; } else { $chart->setPublicUrl($local_url); } $chart->save(); // generate thumbnails $page['publish'] = true; } $app->render('chart-publish.twig', $page); }); });