Skip to content
Snippets Groups Projects
knowledge-space.php 3.51 KiB
Newer Older
<?php

/*
Plugin Name: Knowledge Space
Description: This plugin adds a knowledge space to the website via a shortcode.
Version: 1.0
Author: Matthias Konitzny
*/

function ks_add_graph($atts = []): string
    $space_id = kg_get_space_id_from_atts($atts);
    $div = '<div id="3d-graph"></div>'; // The id "3d-graph" indicates, that the javascript associated with this should automatically be executed
    $plugin_dir = plugin_dir_url(__FILE__);

    $script_path = 'build' . DIRECTORY_SEPARATOR . $GLOBALS['build'] . DIRECTORY_SEPARATOR . 'graph.js';
    // $script = "<script src='$script_path'></script>";
    //wp_enqueue_script('kg-script', $script_path);
    wp_enqueue_script("ks-display-js", plugins_url($script_path, __FILE__), array('jquery'), false);
    wp_localize_script(
        'ks-display-js',
        'ajax_object',
        array('ajax_url' => admin_url('admin-ajax.php'))
    );
    wp_localize_script("ks-display-js", "space", array('id' => $space_id));
    wp_localize_script("ks-display-js", "plugin", array('path' => $plugin_dir));
    return $div . $variables;
    // return $div . $variables . $script;
function ks_echo_graph ($atts = []): void {
    echo ks_add_graph($atts);
}

function ks_add_editor($atts = [])
Maximilian Giller's avatar
Maximilian Giller committed

    $space_id = kg_get_space_id_from_atts($atts);
    $plugin_dir = plugin_dir_url(__FILE__);
    wp_localize_script("ks-editor-js", "space", array('id' => $space_id));
    wp_localize_script("ks-editor-js", "plugin", array('path' => $plugin_dir));
    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);
    //wp_register_script("ks-editor-js", plugins_url($script_path, __FILE__), array('jquery'), false);

    wp_localize_script(
        'ks-editor-js',
        'ajax_object',
        array('ajax_url' => admin_url('admin-ajax.php'))
    );
Matthias Konitzny's avatar
Matthias Konitzny committed
    //wp_enqueue_script("ks-editor-js");
    $style_file_version = date("ymd-Gis", filemtime(plugin_dir_path(__FILE__) . "editor/css/editor.css"));
    wp_enqueue_style("ks-editor-css", plugins_url("editor/css/editor.css", __FILE__), array(), $style_file_version);
    $plugin_dir = plugin_dir_url(__FILE__);
    wp_enqueue_style('kg-style', $plugin_dir . 'kg-style.css');
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');