<?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 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); }); });
$chart->save(); } } // delete user $user->delete(); $user->save(); } // create test user $user = new User(); $user->setEmail('test'); $pwd = !empty($dw_config['testuser_pwd']) ? $dw_config['testuser_pwd'] : 'test'; $user->setPwd(hash_hmac('sha256', $pwd, DW_AUTH_SALT)); $user->setRole('editor'); $user->setCreatedAt(time()); $user->save(); $themes = DatawrapperTheme::all(true); foreach (glob("../test/test-charts/*.json") as $test) { $config = json_decode(file_get_contents($test), true); $data = $config['_data']; unset($config['_data']); unset($config['_sig']); if (isset($config['_id'])) { $config['metadata']['describe']['__test_id'] = $config['_id']; unset($config['_id']); } unset($config['id']); foreach ($themes as $theme) { $chart = new Chart(); $chart->setId(ChartQuery::create()->getUnusedRandomId()); $chart->setUser($user); $chart->unserialize($config);
<?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 /* * get list of all currently available themes * */ $app->get('/themes', function () { $res = DatawrapperTheme::all(); ok($res); }); $app->get('/themes/:themeid', function ($themeid) { $res = DatawrapperTheme::get($themeid); ok($res); });
public function themesAdmin($app, $page) { $page = array_merge($page, array('title' => 'Themes', 'themes' => DatawrapperTheme::all(), 'count' => count_charts_per_themes())); $app->render('plugins/admin-themes/admin-themes.twig', $page); }
<?php require_once '../lib/utils/themes.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('chartData' => $chart->loadData(), 'chart' => $chart, '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); }); });
if (!empty($GLOBALS['dw_config']['debug_export_test_cases'])) { if_chart_exists($chart_id, function ($chart) use($app) { $json = $chart->serialize(); $payload = json_decode($app->request()->getBody(), true); $name = $payload['id']; $json['_data'] = $chart->loadData(); $json['_sig'] = $payload['signature']; if (empty($name)) { error('', 'no name specified'); } else { $name = str_replace(" ", "-", $name); $json['_id'] = $name; file_put_contents("../../test/test-charts/" . $name . ".json", json_encode($json)); ok(); } }); } }); $app->get('/charts/:id/vis-data', function ($chart_id) { if_chart_is_readable($chart_id, function ($user, $chart) { try { $allVis = array(); foreach (DatawrapperVisualization::all() as $vis) { $allVis[$vis['id']] = $vis; } ok(array('visualizations' => $allVis, 'vis' => DatawrapperVisualization::get($chart->getType()), 'themes' => DatawrapperTheme::all())); } catch (Exception $e) { error('io-error', $e->getMessage()); } }); });
$chart_csv .= ';'; $chart_csv .= isset($data['charts_published'][$key]) ? $data['charts_published'][$key] : '-'; $chart_csv .= "\\n"; } $page = array('title' => 'Dashboard', 'user_csv' => $user_csv, 'chart_csv' => $chart_csv, 'linechart' => DatawrapperVisualization::get('line-chart'), 'chartLocale' => 'en-US'); add_header_vars($page, 'admin'); add_adminpage_vars($page, '/admin'); $app->render('admin-dashboard.twig', $page); } else { $app->notFound(); } }); $app->get('/admin/themes/?', function () use($app) { $user = DatawrapperSession::getUser(); if ($user->isAdmin()) { $page = array('title' => 'Themes', 'themes' => DatawrapperTheme::all(), 'count' => count_charts_per_themes()); add_header_vars($page, 'admin'); add_adminpage_vars($page, '/admin/themes'); $app->render('admin-themes.twig', $page); } else { $app->notFound(); } }); $app->get('/admin/users/?', function () use($app) { $user = DatawrapperSession::getUser(); if ($user->isAdmin()) { $page = array('title' => 'Users', 'q' => $app->request()->params('q', '')); add_header_vars($page, 'admin'); add_adminpage_vars($page, '/admin/users'); $sort = $app->request()->params('sort', ''); function getQuery($user)