View source for MantisBT-WackoWiki Integration

#||
||
Current version: 0.2
Compatible with: !!(green)**R6.x**!! and MantisBT 2.x
Credits: ((user:WikiAdmin WikiAdmin))
URL: https://www.mantisbt.org/
|{{toc numerate=1}} ||
||#

===Integrate WackoWiki into MantisBT===
Implemented in **MantisBT 2.26.0**. 

This will add a direct link to your WackoWiki in your Mantis Bug Tracker.

  1. to the ##[Project]## Wiki page depending on the project name on the left menu
    * file:mantis_wiki.png

  2.#2 to the ##[Project]/[IssueNUMBER]## Wiki page on top of an issue  in MantisBT
    * file:mantis_wiki_issue.png

====Apply the patch to your MantisBT installation====

  * ##core/classes/MantisCoreWikiPlugin.class.php##
  * ##core/wiki_api.php##

file:wackowiki_integration_mantis2.1.0.patch
%%(hl diff)
diff --git a/config_defaults_inc.php b/config_defaults_inc.php
--- a/config_defaults_inc.php
+++ b/config_defaults_inc.php
@@ -3782,7 +3782,7 @@
 
 /**
  * Wiki Engine.
- * Supported engines: 'dokuwiki', 'mediawiki', 'twiki', 'wikka', 'xwiki'
+ * Supported engines: 'dokuwiki', 'mediawiki', 'twiki', 'wackowiki', 'wikka', 'xwiki'
  * @global string $g_wiki_engine
  */
 $g_wiki_engine = '';
diff --git a/core/classes/MantisCoreWikiPlugin.class.php b/core/classes/MantisCoreWikiPlugin.class.php
--- a/core/classes/MantisCoreWikiPlugin.class.php
+++ b/core/classes/MantisCoreWikiPlugin.class.php
@@ -218,6 +218,65 @@
 }
 
 /**
+ * Basic WackoWiki support with old-style wiki integration.
+ */
+class MantisCoreWackowikiPlugin extends MantisCoreWikiPlugin {
+	/**
+	 * Plugin Registration
+	 * @return void
+	 */
+	function register() {
+		$this->name = 'MantisBT WackoWiki Integration';
+		$this->version = '0.1';
+		$this->requires = array(
+			'MantisCore' => '2.0.0',
+		);
+	}
+
+	/**
+	 * Wiki base url
+	 *
+	 * @param integer $p_project_id A project identifier.
+	 * @return string
+	 */
+	function base_url( $p_project_id = null ) {
+		$t_base = plugin_config_get( 'engine_url' ) . '';
+
+		$t_namespace = ucfirst( plugin_config_get( 'root_namespace' ) );
+		if( !is_blank( $t_namespace ) ) {
+			$t_base .= $t_namespace . '/';
+		}
+
+		if( !is_null( $p_project_id ) && $p_project_id != ALL_PROJECTS ) {
+			$t_base .= urlencode( project_get_name( $p_project_id ) ) . '/';
+		}
+		return $t_base;
+	}
+
+	/**
+	 * Wiki link to a bug
+	 *
+	 * @param integer $p_event  Event.
+	 * @param integer $p_bug_id A bug identifier.
+	 * @return string
+	 */
+	function link_bug( $p_event, $p_bug_id ) {
+		return $this->base_url( bug_get_field( $p_bug_id, 'project_id' ) ) . 'Issue' . (int)$p_bug_id;
+	}
+
+	/**
+	 * Wiki link to a project
+	 *
+	 * @param integer $p_event      Event.
+	 * @param integer $p_project_id A project identifier.
+	 * @return string
+	 */
+	function link_project( $p_event, $p_project_id ) {
+		return $this->base_url( $p_project_id ) . '';
+	}
+}
+
+/**
  * Basic WikkaWiki support with old-style wiki integration.
  */
 class MantisCoreWikkaWikiPlugin extends MantisCoreWikiPlugin {
diff --git a/core/wiki_api.php b/core/wiki_api.php
--- a/core/wiki_api.php
+++ b/core/wiki_api.php
@@ -70,6 +70,9 @@
 		case 'twiki':
 			plugin_child( 'MantisCoreTwiki' );
 			break;
+		case 'wackowiki':
+			plugin_child( 'MantisCoreWackowiki' );
+			break;
 		case 'WikkaWiki':
 			plugin_child( 'MantisCoreWikkaWiki' );
 			break;
%% 

====Add the following settings to your MantisBT ====

  * ##config/config.inc.php##

%%
####################
# Wiki Integration #
####################

$g_wiki_enable = ON;

$g_wiki_engine = 'wackowiki';

$g_wiki_root_namespace = 'Bugs';

$g_wiki_engine_url = 'https://example.com/wiki/';
%% 

4. Now it should work. Enjoy!

===Possible problems and solutions===

====Wiki Integration settings====

##$g_wiki_enable##
  Set to ##ON## to enable Wiki integration. Defaults to OFF. 

##$g_wiki_engine##
  value: ##'wackowiki'##

##$g_wiki_root_namespace##
  Wiki namespace to be used as root for all pages relating to this MantisBT installation.
   e.g. ##'Bugs'## or leave it empty

  Namespace: /##Bugs##/##Project##/##IssueNUMBER##
    1. root namespace
    2. project name
    3. issue number

##$g_wiki_engine_url##
    URL under which the wiki engine is hosted.

  value: ##''## (empty)
    Must be on the same server as MantisBT, requires a trailing '/'.
    If left empty (default), the URL is derived from the global MantisBT path, replacing the URL's path component by the wiki engine string, i.e. if 
      1. ##$g_path = '~http://example.com/mantis/'## 
      2. ##$g_wiki_engine = 'wackowiki'##, 
      3. the wiki URL will be ##'~http://example.com/wackowiki/'##. 

  value: ##'~https://example.com/wiki/'##

===Links===
  1. WackoWiki site: https://wackowiki.org/
  1. Mantis site: https://www.mantisbt.org/
  1. https://www.mantisbt.org/bugs/view.php?id=22371 -> implemented with MantisBT 2.26.0
    * https://github.com/mantisbt/mantisbt/commit/ecd659f66075766c4f8ab7de9788bced5f37f7e0
  2. Example: https://wackowiki.org/bugs/