Skip to content
Snippets Groups Projects
knowledge-space.php 2.78 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
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 . 'graph.js';
    wp_enqueue_script("ks-display-js", plugins_url($script_path, __FILE__), array('jquery'), false);
    ks_localize("ks-display-js", $atts);
function ks_echo_graph($atts = []): void
{
    echo ks_add_graph($atts);
}

function ks_localize($handle, $atts)
    $space_id = kg_get_space_id_from_atts($atts);
    $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
        )
    );
}

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 . 'graph.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'
    );
}


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');