Skip to content
Snippets Groups Projects
knowledge-space.php 3.27 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?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
    
    function ks_add_graph($atts = []): string
    
        $div = '<div id="3d-graph"></div>'; // The id "3d-graph" indicates, that the javascript associated with this should automatically be executed
    
        $script_path = 'build' . DIRECTORY_SEPARATOR . $GLOBALS['build'] . DIRECTORY_SEPARATOR . 'frontend.js';
    
        wp_enqueue_script("ks-display-js", plugins_url($script_path, __FILE__), array('jquery'), false);
    
        ks_localize("ks-display-js", $atts);
    
    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(
    
            '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);
    
        require_once(__DIR__ . '/editor/editor.php');
    
    Maximilian Giller's avatar
    Maximilian Giller committed
    }
    
    
    function ks_add_editor_dependencies()
    
        $script_path = 'build' . DIRECTORY_SEPARATOR . $GLOBALS['build'] . DIRECTORY_SEPARATOR . 'backend.js';
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
        wp_enqueue_script("ks-editor-js", plugins_url($script_path, __FILE__), array('jquery'), false);
    
    function ks_load_styles() {
        $styles_path = 'build' . DIRECTORY_SEPARATOR . $GLOBALS['build'] . DIRECTORY_SEPARATOR . 'graph.css';
        wp_enqueue_style('ks-style', 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"]);
    
    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'
        );
    }
    
    
    Maximilian Giller's avatar
    Maximilian Giller committed
    require_once(__DIR__ . "/knowledge-space-database.php");
    
    require_once(__DIR__ . '/datasets/datasets.php');
    
    //add_action('wp_enqueue_scripts', 'kg_load_css');
    
    add_shortcode('knowledge-space', 'ks_add_graph');
    
    Maximilian Giller's avatar
    Maximilian Giller committed
    add_shortcode('knowledge-space-editor', 'ks_add_editor');