Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 2073)
+++ branches/2.8.x/CHANGELOG	(revision 2074)
@@ -11,6 +11,12 @@
 ! = Update/Change
 ===============================================================================
 
+06 Jan-2014 Build 2074 Manuela v.d.Decken(DarkViper)
++ added new outputfilter to use OutputFilterDashboard
+06 Jan-2014 Build 2073 Manuela v.d.Decken(DarkViper)
+recall tagging of WebsiteBaker 2.8.4 release
+03 Jan-2014 Build 2072 Manuela v.d.Decken(DarkViper)
+Tagging WebsiteBaker 2.8.4 release
 03 Jan-2014 Build 2071 Manuela v.d.Decken(DarkViper)
 + include/Sensio/Twig added Version 1.15.0
 03 Jan-2014 Build 2070 Manuela v.d.Decken(DarkViper)
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 2073)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 2074)
@@ -51,5 +51,5 @@
 
 // check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled)
 if(!defined('VERSION')) define('VERSION', '2.8.4');
-if(!defined('REVISION')) define('REVISION', '2071');
+if(!defined('REVISION')) define('REVISION', '2073');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/modules/output_filter/filters/filterOpF.php
===================================================================
--- branches/2.8.x/wb/modules/output_filter/filters/filterOpF.php	(nonexistent)
+++ branches/2.8.x/wb/modules/output_filter/filters/filterOpF.php	(revision 2074)
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * make use of Thorn's OutputFilter Dashboard (OpF Dashboard)
+ * @param string &$content : reference to global $content
+ * @return void
+ */
+function doFilterOpF($content)
+{
+	// Load OutputFilter functions
+	$sOpfFile = WbAdaptor::getInstance()->AppPath.'modules/outputfilter_dashboard/functions.php';
+	if (is_readable($sOpfFile)) {
+		require_once($sOpfFile);
+	   // apply outputfilter
+		if (function_exists('opf_apply_filters')) {
+			// use 'cache' instead of 'nocache' to enable page-cache.
+			// Do not use 'cache' in case you use dynamic contents (e.g. snippets)!
+			opf_controller('init', 'nocache');
+			$content = opf_controller('page', $content);
+		}
+	}
+	return $content;
+}
Index: branches/2.8.x/wb/modules/output_filter/index.php
===================================================================
--- branches/2.8.x/wb/modules/output_filter/index.php	(revision 2073)
+++ branches/2.8.x/wb/modules/output_filter/index.php	(revision 2074)
@@ -23,66 +23,52 @@
 /* ************************************************************************** */
 /**
  * execute the frontend output filter to modify email addresses
- * @param string actual content
+ * @param string $sContent actual content
  * @return string modified content
  */
-	function executeFrontendOutputFilter($content) {
+	function executeFrontendOutputFilter($sContent) {
 		// get output filter settings from database
 		$filter_settings = getOutputFilterSettings();
-		$sFilterDirectory = str_replace('\\', '/', dirname(__FILE__)).'/filters/';
+		$sFilterDirectory = str_replace('\\', '/', __DIR__).'/filters/';
 		$output_filter_mode = 0;
 		$output_filter_mode |= ($filter_settings['email_filter'] * pow(2, 0));  // n | 2^0
 		$output_filter_mode |= ($filter_settings['mailto_filter'] * pow(2, 1)); // n | 2^1
 		define('OUTPUT_FILTER_AT_REPLACEMENT', $filter_settings['at_replacement']);
 		define('OUTPUT_FILTER_DOT_REPLACEMENT', $filter_settings['dot_replacement']);
+        if (!function_exists('OutputFilterApi')) {
+            require (__DIR__.'/OutputFilterApi.php');
+        }
+/* ### fixed default filters ################################################ */
+        $sContent = OutputFilterApi('ReplaceSysvar', $sContent);
+        $sContent = OutputFilterApi('WbLink', $sContent);
+/* ************************************************************************** */
+/* *** from here insert requests of individual variable filter ************** */
 
-/* ### filter type: replace Sysvar placeholder ############################## */
-		if (file_exists($sFilterDirectory.'filterReplaceSysvar.php')) {
-			require_once($sFilterDirectory.'filterReplaceSysvar.php');
-			$content = doFilterReplaceSysvar($content);
-		}
-/* ### filter type: change [wblinkxx] into real URLs ######################## */
-		if (file_exists($sFilterDirectory.'filterWbLink.php')) {
-			require_once($sFilterDirectory.'filterWbLink.php');
-			$content = doFilterWbLink($content);
-		}
 /* ### filter type: execute droplets filter ################################# */
-		if (file_exists($sFilterDirectory.'filterDroplets.php')) {
-			require_once($sFilterDirectory.'filterDroplets.php');
-			$content = doFilterDroplets($content);
-		}
+        $sContent = OutputFilterApi('Droplets', $sContent);
 /* ### filter type: protect email addresses ################################# */
 		if( ($output_filter_mode & pow(2, 0)) || ($output_filter_mode & pow(2, 1)) ) {
 			if (file_exists($sFilterDirectory.'filterEmail.php')) {
 				require_once($sFilterDirectory.'filterEmail.php');
-				$content = doFilterEmail($content, $output_filter_mode);
+				$sContent = doFilterEmail($sContent, $output_filter_mode);
 			}
 		}
-/* ### filter type: replace Sysvar placeholder ############################## */
-		if (file_exists($sFilterDirectory.'filterReplaceSysvar.php')) {
-			require_once($sFilterDirectory.'filterReplaceSysvar.php');
-			$content = doFilterReplaceSysvar($content);
-		}
-/* ### filter type: change [wblinkxx] into real URLs ######################## */
-		if (file_exists($sFilterDirectory.'filterWbLink.php')) {
-			require_once($sFilterDirectory.'filterWbLink.php');
-			$content = doFilterWbLink($content);
-		}
-/* ### filter type: full qualified URLs to relative URLs##################### */
+/* ### filter type: make use of Thorn's OutputFilterDashboard ############### */
+        if($filter_settings['opf'] == 1){
+            $sContent = OutputFilterApi('OpF', $sContent);
+        }
+
+/* *** end of individual variable filter ************************************ */
+/* ************************************************************************** */
+/* ### fixed default filters ################################################ */
+        $sContent = OutputFilterApi('ReplaceSysvar', $sContent);
+        $sContent = OutputFilterApi('WbLink', $sContent);
         if($filter_settings['sys_rel'] == 1){
-			if (file_exists($sFilterDirectory.'filterRelUrl.php')) {
-				require_once($sFilterDirectory.'filterRelUrl.php');
-				$content = doFilterRelUrl($content);
-			}
+            $sContent = OutputFilterApi('RelUrl', $sContent);
 		}
-/* ### filter type: moves css definitions from <body> into <head> ########### */
-		if (file_exists($sFilterDirectory.'filterCssToHead.php')) {
-			require_once($sFilterDirectory.'filterCssToHead.php');
-			$content = doFilterCssToHead($content);
-		}
-
+        $sContent = OutputFilterApi('CssToHead', $sContent);
 /* ### end of filters ####################################################### */
-		return $content;
+		return $sContent;
 	}
 /* ************************************************************************** */
 /**
@@ -93,10 +79,11 @@
  * @return array contains all settings
  */
 	function getOutputFilterSettings() {
-		global $database, $admin;
+        $oDb = WbDatabase::getInstance();
 	// set default values
 		$settings = array(
 			'sys_rel'         => 0,
+            'opf'             => 0,
 			'email_filter'    => 0,
 			'mailto_filter'   => 0,
 			'at_replacement'  => '(at)',
@@ -103,14 +90,12 @@
 			'dot_replacement' => '(dot)'
 		);
 	// be sure field 'sys_rel' is in table
-		$database->field_add( TABLE_PREFIX.'mod_output_filter', 'sys_rel', 'INT NOT NULL DEFAULT \'0\' FIRST');
+		$oDb->field_add( $oDb->TablePrefix.'mod_output_filter', 'sys_rel', 'INT NOT NULL DEFAULT \'0\' FIRST');
 	// request settings from database
-		$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_output_filter` ';
-		if(($res = $database->query($sql))) {
-			if(($rec = $res->fetchRow())) {
+		$sql = 'SELECT * FROM `'.$oDb->TablePrefix.'mod_output_filter` ';
+		if(($res = $oDb->doQuery($sql))) {
+			if(($rec = $res->fetchRow(MYSQL_ASSOC))) {
 				$settings = $rec;
-				$settings['at_replacement']  = $admin->strip_slashes($settings['at_replacement']);
-				$settings['dot_replacement'] = $admin->strip_slashes($settings['dot_replacement']);
 			}
 		}
 	// return array with filter settings
Index: branches/2.8.x/wb/modules/output_filter/upgrade.php
===================================================================
--- branches/2.8.x/wb/modules/output_filter/upgrade.php	(revision 2073)
+++ branches/2.8.x/wb/modules/output_filter/upgrade.php	(revision 2074)
@@ -57,16 +57,23 @@
 					$msg[] = $database->get_error();
 				}
 			}
+// change table structure
 			$table_name = $database->TablePrefix.'mod_output_filter';
 			$field_name = 'sys_rel';
 			$description = 'INT(11) NOT NULL DEFAULT \'0\' FIRST';
-			if(!$database->field_exists($table_name,$field_name)) {
-				$database->field_add($table_name, $field_name, $description);
-				$msg[] = 'Add field `sys_rel` FIRST'." $OK";
+			if(!$database->isField($table_name,$field_name)) {
+				$database->addField($table_name, $field_name, $description);
+				$msg[] = 'Add field `'.$field_name.'` FIRST'." $OK";
 			} else {
-				$msg[] = 'Field `sys_rel` already exists'." $OK";
+				$msg[] = 'Field `'.$field_name.'` already exists'." $OK";
 			}
-// change table structure
+			$field_name = 'opf';
+			if(!$database->isField($table_name,$field_name)) {
+				$database->addField($table_name, $field_name, $description);
+				$msg[] = 'Add field `'.$field_name.'` FIRST'." $OK";
+			} else {
+				$msg[] = 'Field `'.$field_name.'` already exists'." $OK";
+			}
 			$sTable = $database->TablePrefix.'mod_output_filter';
 			$sDescription = 'int(11) NOT NULL DEFAULT \'0\'';
 			$sFieldName = 'sys_rel';
