Skip to content
Snippets Groups Projects
knowledge-space.php 3.8 KiB
Newer Older
<?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="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);
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(
        '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');
Maximilian Giller's avatar
Maximilian Giller committed
}

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"]);
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');
Maximilian Giller's avatar
Maximilian Giller committed
add_shortcode('knowledge-space-editor', 'ks_add_editor');