From ada7fc7ecc8c4c59d36a92a7a6022a8da6c6e49b Mon Sep 17 00:00:00 2001 From: M_Viper Date: Wed, 18 Mar 2026 21:56:40 +0100 Subject: [PATCH] Update from Git Manager GUI --- templates/admin/article-form.php | 111 +++++++++++++ templates/admin/article-list.php | 85 ++++++++++ templates/admin/categories.php | 45 +++++ templates/admin/dashboard.php | 147 +++++++++++++++++ templates/admin/gitea-importer.php | 254 +++++++++++++++++++++++++++++ templates/admin/settings.php | 67 ++++++++ templates/admin/wiki-form.php | 102 ++++++++++++ templates/breadcrumb.php | 15 ++ templates/search-box.php | 16 ++ templates/sidebar.php | 56 +++++++ templates/single-wmw-article.php | 132 +++++++++++++++ templates/single-wmw-wiki.php | 15 ++ templates/single-wmw_article.php | 112 +++++++++++++ templates/single-wmw_wiki.php | 37 +++++ templates/wiki-index.php | 71 ++++++++ templates/wiki-list.php | 24 +++ 16 files changed, 1289 insertions(+) create mode 100644 templates/admin/article-form.php create mode 100644 templates/admin/article-list.php create mode 100644 templates/admin/categories.php create mode 100644 templates/admin/dashboard.php create mode 100644 templates/admin/gitea-importer.php create mode 100644 templates/admin/settings.php create mode 100644 templates/admin/wiki-form.php create mode 100644 templates/breadcrumb.php create mode 100644 templates/search-box.php create mode 100644 templates/sidebar.php create mode 100644 templates/single-wmw-article.php create mode 100644 templates/single-wmw-wiki.php create mode 100644 templates/single-wmw_article.php create mode 100644 templates/single-wmw_wiki.php create mode 100644 templates/wiki-index.php create mode 100644 templates/wiki-list.php diff --git a/templates/admin/article-form.php b/templates/admin/article-form.php new file mode 100644 index 0000000..f8715e0 --- /dev/null +++ b/templates/admin/article-form.php @@ -0,0 +1,111 @@ +ID : 0; +$a_title = $is_edit ? $article->post_title : ''; +$a_content = $is_edit ? $article->post_content : ''; +$a_excerpt = $is_edit ? $article->post_excerpt : ''; +$a_wiki_id = $is_edit ? (int)get_post_meta($article_id,'_wmw_wiki_id',true) : $wiki_id; +$a_order = $is_edit ? (int)get_post_meta($article_id,'_wmw_order',true) : 0; +$a_status = $is_edit ? $article->post_status : 'publish'; +$a_cats = $is_edit ? wp_list_pluck((array)get_the_terms($article_id,'wmw_category'),'term_id') : array(); +$a_tags = $is_edit ? implode(', ', wp_list_pluck((array)get_the_terms($article_id,'wmw_tag'),'name')) : ''; +$all_cats = get_terms(array('taxonomy'=>'wmw_category','hide_empty'=>false)); +?> +
+
+ + ← Zurück +
+ +
+
+
+
+ + +
+
+ + 'wmw_content', + 'media_buttons' => true, + 'textarea_rows' => 20, + 'tinymce' => true, + ) ); + ?> +
+
+
+ +
+
+

📁 Zuordnung

+
+ + +
+
+ +
+ + + +
+ + Neue Kategorie +
+
+ + +
+
+ +
+

⚙️ Optionen

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
diff --git a/templates/admin/article-list.php b/templates/admin/article-list.php new file mode 100644 index 0000000..bba178f --- /dev/null +++ b/templates/admin/article-list.php @@ -0,0 +1,85 @@ + +
+
+ + +
+ + + + + +
+
📄
+

Keine Artikel vorhanden

+ Ersten Artikel erstellen +
+ +
+ + + + + + + + + + + + + + ID); + $cats = get_the_terms($article->ID,'wmw_category'); + $cats_str = $cats && !is_wp_error($cats) ? implode(', ', wp_list_pluck($cats,'name')) : '—'; + $order = (int)get_post_meta($article->ID,'_wmw_order',true); + ?> + + + + + + + + + + +
TitelWikiKategorienStatusReihenfolgeAktionen
+ post_title); ?> + + ID).' '.esc_html($art_wiki->post_title) : '—'; ?> + post_status==='publish'): ?> + Veröffentlicht + + Entwurf + + + ✏️ + 🗑️ +
+
+ +
diff --git a/templates/admin/categories.php b/templates/admin/categories.php new file mode 100644 index 0000000..4196ae1 --- /dev/null +++ b/templates/admin/categories.php @@ -0,0 +1,45 @@ +'wmw_category','hide_empty'=>false,'orderby'=>'name','order'=>'ASC')); +?> +
+
+ + ← Dashboard +
+
+
+
+

Vorhandene Kategorien

+ +

Noch keine Kategorien. Füge unten deine erste hinzu.

+ + + + + + + + + + + + + +
NameSlugArtikelAktionen
name); ?>slug); ?>count; ?> + ✏️ Bearbeiten +
+ +
+
+
+
+

➕ Neue Kategorie

+

Kategorien in WordPress verwalten

+

Kategorien können über die Standard-WordPress-Taxonomieseite erstellt und bearbeitet werden.

+
+
+
+
diff --git a/templates/admin/dashboard.php b/templates/admin/dashboard.php new file mode 100644 index 0000000..b8a3526 --- /dev/null +++ b/templates/admin/dashboard.php @@ -0,0 +1,147 @@ + +
+ +
+ + +
+ + +
+
+ + Wikis +
+
+ + Artikel gesamt +
+
+ + Kategorien +
+
+ + + + + +
+
📖
+

Noch keine Wikis vorhanden

+

Erstelle dein erstes Wiki für dein Plugin!

+ + Erstes Wiki erstellen + +
+ + +
+ ID; + $articles = wmw_get_articles( $wiki_id ); + $article_count = count( $articles ); + $icon = wmw_get_wiki_icon( $wiki_id ); + $color = wmw_get_wiki_color( $wiki_id ); + $version = get_post_meta( $wiki_id, '_wmw_version', true ) ?: '1.0.0'; + $edit_url = admin_url( 'admin.php?page=wmw-edit-wiki&id=' . $wiki_id ); + $new_art_url = admin_url( 'admin.php?page=wmw-new-article&wiki_id=' . $wiki_id ); + $articles_url = admin_url( 'admin.php?page=wmw-articles&wiki_id=' . $wiki_id ); + $view_url = get_permalink( $wiki_id ); + ?> +
+
+ +
+ v + + post_status === 'publish' ? '● Live' : '○ Entwurf'; ?> + +
+
+

post_title ); ?>

+ post_excerpt ) : ?> +

post_excerpt, 12 ) ); ?>

+ +
+ 📄 Artikel +
+ +
+ +
+ + + + +
+

📋 Shortcode-Referenz

+
+
+ [wmw_wiki_list] + Alle Wikis als Karten anzeigen +
+
+ [wmw_wiki id="1"] + Ein Wiki mit allen Artikeln +
+
+ [wmw_wiki slug="mein-plugin"] + Wiki per Slug einbinden +
+
+ [wmw_search wiki_id="1"] + Suchfeld für ein Wiki +
+
+ [wmw_article id="5"] + Einzelnen Artikel einbetten +
+
+ [wmw_breadcrumb] + Breadcrumb-Navigation +
+
+
+ +
+ + +
+

🔍 Suchindex

+

Falls die Suche keine Ergebnisse liefert (z.B. nach einem Gitea-Import), den Index neu aufbauen.

+ + +
+ \ No newline at end of file diff --git a/templates/admin/gitea-importer.php b/templates/admin/gitea-importer.php new file mode 100644 index 0000000..568db5d --- /dev/null +++ b/templates/admin/gitea-importer.php @@ -0,0 +1,254 @@ +list_pages(); + } +} + +// ── Handle Import ───────────────────────────────────────────────────────────── +if ( isset( $_POST['wmw_gitea_import'] ) && wp_verify_nonce( $_POST['wmw_gitea_nonce'] ?? '', 'wmw_gitea_import' ) && current_user_can( 'manage_options' ) ) { + + $gitea_url = esc_url_raw( $_POST['gitea_url'] ?? '' ); + $owner = sanitize_text_field( $_POST['gitea_owner'] ?? '' ); + $repo = sanitize_text_field( $_POST['gitea_repo'] ?? '' ); + $token = sanitize_text_field( $_POST['gitea_token'] ?? '' ); + $wiki_id = absint( $_POST['wmw_wiki_id'] ?? 0 ); + $skip_pages = array_map( 'sanitize_text_field', array_filter( explode( "\n", str_replace( "\r", '', $_POST['skip_pages'] ?? '' ) ) ) ); + $update_exist = isset( $_POST['update_existing'] ); + + if ( $gitea_url && $owner && $repo && $wiki_id ) { + $importer = new WMW_Gitea_Importer( $gitea_url, $owner, $repo, $token ); + $result = $importer->import_all( $wiki_id, $skip_pages, $update_exist ); + } else { + $result = array( 'errors' => array( 'Bitte alle Pflichtfelder ausfüllen.' ) ); + } +} +?> +
+ +
+ + ← Dashboard +
+ + +
+

📊 Import-Ergebnis

+
+
+ + Neu importiert +
+
+ + Aktualisiert +
+
+ + Übersprungen +
+
+ +
+ ⚠️ Fehler: +
+
+ + + + 📋 Importierte Artikel ansehen + + +
+ + +
+
+ +
+ + +
+

🔗 Gitea-Quelle

+ +
+ + +

Nur die Basis-URL deiner Gitea-Instanz (ohne /api oder /wiki).

+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +

Token unter Gitea → Einstellungen → Anwendungen → Access Token erstellen.

+
+ + +
+ + +
+

📋 Gefundene Wiki-Seiten

+ +

get_error_message() ); ?>

+ +

Keine Seiten gefunden.

+ +
+ +
+ 📄 + + +
+ +
+

Seiten bereit zum Import.

+ +
+ + +
+

🎯 Import-Ziel

+ +
+ + +

Alle Seiten werden als Artikel in diesem Wiki angelegt.

+
+ +
+ + +

Diese Seiten werden nicht importiert (z.B. Home, _Sidebar).

+
+ +
+ +

Wenn deaktiviert, werden bestehende Artikel übersprungen.

+
+
+ +
+ +

+ Der Import kann je nach Wiki-Größe einige Sekunden dauern. +

+
+ +
+
+ +
+
+

ℹ️ Wie funktioniert's?

+
    +
  1. Gitea-URL, Owner & Repo eingeben
  2. +
  3. Auf Seiten vorab laden klicken
  4. +
  5. Ziel-Wiki auswählen
  6. +
  7. Seiten auswählen die übersprungen werden sollen
  8. +
  9. Importieren klicken
  10. +
+
+
+

🔐 Private Repos

+

Für private Repositories brauchst du einen Access Token:

+
    +
  1. In Gitea anmelden
  2. +
  3. Einstellungen → Anwendungen
  4. +
  5. „Token generieren" mit read:wiki Scope
  6. +
  7. Token oben eintragen
  8. +
+
+
+

📝 Markdown-Konvertierung

+

Folgende Elemente werden automatisch konvertiert:

+
    +
  • Überschriften H1–H6
  • +
  • Fett, Kursiv, Durchgestrichen
  • +
  • Code-Blöcke (mit Syntax-Highlighting)
  • +
  • Tabellen
  • +
  • Links & Bilder
  • +
  • Blockquotes
  • +
  • Aufzählungslisten
  • +
  • Gitea-interne [[Links]]
  • +
+
+
+
+
+ + diff --git a/templates/admin/settings.php b/templates/admin/settings.php new file mode 100644 index 0000000..ff28ec1 --- /dev/null +++ b/templates/admin/settings.php @@ -0,0 +1,67 @@ + +
+
+ +
+
+ +
+
+
+

🖥️ Darstellung

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Inhaltsverzeichnis (TOC)
Breadcrumbs
Verwandte Artikel
Suchfeld
Sidebar-Position + +
Artikel pro Seite
+
+
+

🎨 Custom CSS

+

Eigenes CSS für das Wiki-Frontend. Hier kannst du das Design anpassen.

+ +
+
+
+
+

💾 Speichern

+ +
+
+

ℹ️ Plugin-Info

+

WP Multi Wiki
Version

+

Autor: M_Viper

+
+
+
+
+
diff --git a/templates/admin/wiki-form.php b/templates/admin/wiki-form.php new file mode 100644 index 0000000..85c6d0b --- /dev/null +++ b/templates/admin/wiki-form.php @@ -0,0 +1,102 @@ +ID : 0; +$wiki_title = $is_edit ? $wiki->post_title : ''; +$wiki_desc = $is_edit ? $wiki->post_content : ''; +$wiki_excerpt= $is_edit ? $wiki->post_excerpt : ''; +$wiki_icon = $is_edit ? get_post_meta($wiki_id,'_wmw_icon',true) : '📖'; +$wiki_color = $is_edit ? get_post_meta($wiki_id,'_wmw_color',true) : '#2271b1'; +$wiki_ver = $is_edit ? get_post_meta($wiki_id,'_wmw_version',true) : '1.0.0'; +$wiki_status = $is_edit ? $wiki->post_status : 'publish'; +?> +
+
+ + ← Zurück +
+ +
+
+
+
+ + +
+
+ + +
+
+ + 'wmw_description', + 'media_buttons' => false, + 'textarea_rows' => 8, + 'tinymce' => true, + ) ); + ?> +
+
+
+ +
+
+

🎨 Erscheinungsbild

+
+ + +

Ein Emoji-Icon für dein Wiki

+
+ + + +
+
+
+ + +
+
+ +
+

⚙️ Plugin-Info

+
+ + +
+
+ + +
+
+ + +
+
+
diff --git a/templates/breadcrumb.php b/templates/breadcrumb.php new file mode 100644 index 0000000..07f2cc2 --- /dev/null +++ b/templates/breadcrumb.php @@ -0,0 +1,15 @@ + + diff --git a/templates/search-box.php b/templates/search-box.php new file mode 100644 index 0000000..7de7d51 --- /dev/null +++ b/templates/search-box.php @@ -0,0 +1,16 @@ + + diff --git a/templates/sidebar.php b/templates/sidebar.php new file mode 100644 index 0000000..b25145c --- /dev/null +++ b/templates/sidebar.php @@ -0,0 +1,56 @@ +ID : 0; +?> +
+ + + ID, 'wmw_category'); + if ($cats && !is_wp_error($cats)) { + foreach ($cats as $cat) { + $grouped[$cat->term_id][] = $art; + $cat_names[$cat->term_id] = $cat->name; + } + } else { + $grouped['_none'][] = $art; + } + } + + // Sort: named categories first, then uncategorized + ksort($grouped); + + foreach ($grouped as $cat_id => $cat_arts): + $cat_label = $cat_id === '_none' ? 'Allgemein' : ($cat_names[$cat_id] ?? 'Sonstige'); + + // Sort by order + usort($cat_arts, function($a,$b){ + $oa = (int)get_post_meta($a->ID,'_wmw_order',true); + $ob = (int)get_post_meta($b->ID,'_wmw_order',true); + return $oa - $ob; + }); + ?> +
+
+ +
+ +
diff --git a/templates/single-wmw-article.php b/templates/single-wmw-article.php new file mode 100644 index 0000000..4e6052c --- /dev/null +++ b/templates/single-wmw-article.php @@ -0,0 +1,132 @@ +ID); +$side_pos = $settings['sidebar_position'] ?? 'left'; +?> +
+ + + + +
+ + + + + +
+
+
+ + + ID); ?> + post_title); ?> + + +

post_title); ?>

+ +
+ +
+ post_content); ?> +
+ + +
+ + ID, 'wmw_category'); + if ($cats && !is_wp_error($cats)) { + $cat_ids = wp_list_pluck($cats, 'term_id'); + $related = get_posts(array( + 'post_type' => 'wmw_article', + 'post_status' => 'publish', + 'posts_per_page' => 4, + 'post__not_in' => array($article->ID), + 'meta_query' => array(array('key'=>'_wmw_wiki_id','value'=>wmw_get_article_wiki_id($article->ID))), + 'tax_query' => array(array('taxonomy'=>'wmw_category','field'=>'term_id','terms'=>$cat_ids)), + )); + } + } + if (!empty($related)): + ?> + + + +
+
+
+ + diff --git a/templates/single-wmw-wiki.php b/templates/single-wmw-wiki.php new file mode 100644 index 0000000..a1d10f5 --- /dev/null +++ b/templates/single-wmw-wiki.php @@ -0,0 +1,15 @@ + +
+ + + + + +
+ diff --git a/templates/single-wmw_article.php b/templates/single-wmw_article.php new file mode 100644 index 0000000..21226e3 --- /dev/null +++ b/templates/single-wmw_article.php @@ -0,0 +1,112 @@ + 'wmw_article', + 'numberposts' => -1, + 'post_status' => 'publish', + 'meta_key' => '_wmw_wiki_id', + 'meta_value' => $wiki_id, + 'orderby' => [ 'meta_value_num' => 'ASC', 'title' => 'ASC' ], + ] ); + } + $prev_art = null; $next_art = null; + foreach ( $siblings as $i => $s ) { + if ( $s->ID === $post_id ) { + if ( $i > 0 ) $prev_art = $siblings[ $i - 1 ]; + if ( $i < count( $siblings ) - 1 ) $next_art = $siblings[ $i + 1 ]; + break; + } + } +?> +
+ +
+ + + + + +
+ + + +
+ +
+ +
+ + diff --git a/templates/single-wmw_wiki.php b/templates/single-wmw_wiki.php new file mode 100644 index 0000000..a4505ef --- /dev/null +++ b/templates/single-wmw_wiki.php @@ -0,0 +1,37 @@ + +
+
+
+ + <?php the_title_attribute(); ?> + + + +
+
+

+ + Version + + +

+ +
+
+ +
+ + +
+ + diff --git a/templates/wiki-index.php b/templates/wiki-index.php new file mode 100644 index 0000000..5bed87b --- /dev/null +++ b/templates/wiki-index.php @@ -0,0 +1,71 @@ + +
+ + +
+
+
+

post_title); ?>

+ post_excerpt): ?> +

post_excerpt); ?>

+ +
+ ID,'_wmw_version',true); + if ($ver): ?> + v + +
+ + + ID); ?> + + + post_content): ?> +
+ post_content); ?> +
+ + + + $cat_articles): + if (empty($cat_articles)) continue; + $has_cats = true; + $cat_name = $cat_id === 'uncategorized' ? '📄 Allgemein' : (isset($cat_map[$cat_id]) ? $cat_map[$cat_id]->name : 'Sonstige'); + ?> + + +
+

Noch keine Artikel in diesem Wiki.

+
+ + +
\ No newline at end of file diff --git a/templates/wiki-list.php b/templates/wiki-list.php new file mode 100644 index 0000000..57833ef --- /dev/null +++ b/templates/wiki-list.php @@ -0,0 +1,24 @@ + +
+ ID); + $color = wmw_get_wiki_color($wiki->ID); + $count = count(wmw_get_articles($wiki->ID)); + $version = get_post_meta($wiki->ID,'_wmw_version',true) ?: '1.0.0'; + ?> + +
+
+

post_title); ?>

+ post_excerpt): ?> +

post_excerpt,12)); ?>

+ + +
+
+
+ +