<?php /* Plugin Name: Knowledge Space Description: A Wordpress-Plugin to display knowledge in a graph-structured way. Version: 1.0 Author: Matthias Konitzny, Maximilian Giller, Joscha Rode, Harm Kube Author URI: https://www.ibr.cs.tu-bs.de */ $GLOBALS['build'] = 'debug'; function ks_add_graph($atts = []): string { $div = '<div id="knowledge-space-display"></div>'; // The id "3d-graph" indicates, that the javascript associated with this should automatically be executed ks_load_styles("frontend.css"); ks_load_styles("vendors.css"); wp_enqueue_script("ks-runtime-js", plugins_url(get_script_path("runtime.js"), __FILE__), array('jquery'), false); wp_enqueue_script("ks-vendors-js", plugins_url(get_script_path("vendors.js"), __FILE__), array('jquery'), false); wp_enqueue_script("ks-display-js", plugins_url(get_script_path("frontend.js"), __FILE__), array('jquery'), false); ks_localize("ks-display-js", $atts); return $div; } function get_script_path($script_name) { return 'build' . DIRECTORY_SEPARATOR . $GLOBALS['build'] . DIRECTORY_SEPARATOR . $script_name; } function parse_atts($atts) { return shortcode_atts(array( 'space' => 'space', 'mode' => 'default' ), $atts); } function ks_echo_graph($atts = []): void { echo ks_add_graph($atts); } function ks_localize($handle, $atts) { $params = parse_atts($atts); if ($GLOBALS['build'] == 'debug'){ echo '<pre>'; echo "Shortcode attributes:<br>"; print_r($params); echo '</pre>'; } $space_id = kg_get_space_id_from_atts($atts); // TODO: Replace with $params $plugin_dir = plugin_dir_url(__FILE__); wp_localize_script( $handle, 'ks_global', array( 'ajax_url' => admin_url('admin-ajax.php'), 'space_id' => $space_id, 'plugin_path' => $plugin_dir, 'mode' => $params['mode'] ) ); } function ks_add_editor($atts = []) { ks_add_editor_dependencies(); ks_localize("ks-editor-js", $atts); ks_load_styles("backend.css"); require_once(__DIR__ . '/src/editor/editor.php'); } function ks_add_editor_dependencies() { wp_enqueue_script("ks-runtime-js", plugins_url(get_script_path("runtime.js"), __FILE__), array('jquery'), false); wp_enqueue_script("ks-vendors-js", plugins_url(get_script_path("vendors.js"), __FILE__), array('jquery'), false); wp_enqueue_script("ks-editor-js", plugins_url(get_script_path("backend.js"), __FILE__), array('jquery'), false); } function ks_load_styles($styles_name) { $styles_path = 'build' . DIRECTORY_SEPARATOR . $GLOBALS['build'] . DIRECTORY_SEPARATOR . $styles_name; wp_enqueue_style('ks-style-' . $styles_name, plugins_url($styles_path, __FILE__)); } function kg_escape_space_id($id) { return str_replace( "\\", "-", str_replace( "/", "-", str_replace(" ", "-", $id) ) ); } function kg_get_space_id_from_atts($atts) { if ($atts != "" && array_key_exists("space", $atts)) { return kg_escape_space_id($atts["space"]); } else { return "space"; } } add_action('admin_menu', 'kg_editor_admin_add_page'); function kg_editor_admin_add_page() { add_menu_page( 'Knowledge Space', 'Knowledge Space', 'edit_plugins', 'knowledge-space', 'ks_echo_graph' ); add_submenu_page( 'knowledge-space', 'Knowledge Space - Editor', 'Editor', 'edit_plugins', 'knowledge-space-editor', 'ks_add_editor' ); } require_once(__DIR__ . "/src/knowledge-space-database.php"); require_once(__DIR__ . '/src/datasets.php'); //add_action('wp_enqueue_scripts', 'kg_load_css'); add_shortcode('knowledge-space', 'ks_add_graph'); add_shortcode('knowledge-space-editor', 'ks_add_editor');