This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".

The branch, master has been updated
       via  d85bf8d3cc76b8716ac95016547422823089c0c5 (commit)
       via  0f0764e4414e5610bd0f672b53a697cc0d35c924 (commit)
       via  f7f0efc6068aa8ad5e6271d2e05f5fc00bb5f321 (commit)
      from  d8abda08c3f29b1bb8c6c87281ea4d5d54212d6a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=d85bf8d3cc76b8716ac95016547422823089c0c5

commit d85bf8d3cc76b8716ac95016547422823089c0c5
Author: Franck Villaume <[email protected]>
Date:   Mon Mar 22 18:59:52 2021 +0100

    Sync CHANGES + merge features from DGFiP/Guy Morin

diff --git a/src/CHANGES b/src/CHANGES
index 57aa312..e4cebc1 100644
--- a/src/CHANGES
+++ b/src/CHANGES
@@ -2,7 +2,9 @@ FusionForge X.y:
 * Developer page: use widget system, including general & scmgit widgets [#899] 
(TrivialDev)
 * Diary & Notes: support markdown (TrivialDev)
 * Diary & Notes: support crossref (TrivialDev)
+* Forum: pinning support (DGFiP/Guy Morin)
 * Plugin Hudson/Jenkins: display link in public area widget [#889] (TrivialDev)
+* Theme: new funky-guy, support responsive menu (DGFiP/Guy Morin)
 * User: followers/following mechanism (TrivialDev)
 * Utils: crossref, support diary [Nxxx] and Project [Pxxx] (TrivialDev)
 * Widget HomeLatestDiaryNotes: new widget for Forge home page to display 5 
latest public Diary Notes across the forge (TrivialDev)

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=0f0764e4414e5610bd0f672b53a697cc0d35c924

commit 0f0764e4414e5610bd0f672b53a697cc0d35c924
Author: Guy Morin <guy@guy-90X3A>
Date:   Thu Mar 18 15:18:27 2021 +0100

    New theme with responsive menu

diff --git a/src/www/themes/funky-guy/README.txt 
b/src/www/themes/funky-guy/README.txt
new file mode 100644
index 0000000..ce5bac0
--- /dev/null
+++ b/src/www/themes/funky-guy/README.txt
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+                          T h e   F u n k y   T h e m e
+--------------------------------------------------------------------------------
+
+About the Funky Theme:
+=====================
+
+The Funky theme is Copyright 2010 (c) Capgemini (www.capgemini.com)
+AUTHOR: Antoine Mercadal <[email protected]>
+
+The Funky theme is free software; you can redistribute it and/or modify it 
under 
+the terms of the GNU General Public License as published by the Free Software 
+Foundation; either version 2 of the License, or (at your option) any later 
+version.
+
+
+Credits:
+========
+
+Author:     Antoine Mercadal ([email protected])
+Design by:  Antoine Mercadal ([email protected])
\ No newline at end of file
diff --git a/src/www/themes/funky-guy/Theme.class.php 
b/src/www/themes/funky-guy/Theme.class.php
new file mode 100644
index 0000000..dff35ca
--- /dev/null
+++ b/src/www/themes/funky-guy/Theme.class.php
@@ -0,0 +1,393 @@
+<?php
+/**
+ * FusionForge Funky Theme
+ *
+ * Copyright 2010, Antoine Mercadal - Capgemini
+ * Copyright 2010, Marc-Etienne Vargenau, Alcatel-Lucent
+ * Copyright 2011, Franck Villaume - Capgemini
+ * Copyright 2011-2017, Franck Villaume - TrivialDev
+ * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
+ *
+ * This file is part of FusionForge. FusionForge is free software;
+ * you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+require_once $gfwww.'include/Layout.class.php';
+
+class Theme_Funky_Guy extends Layout {
+       
+       function __construct() {
+               parent::__construct();
+               $this->themeurl = util_make_uri('themes/funky-guy/');
+               $this->imgbaseurl = $this->themeurl . 'images/';
+               $this->addStylesheet('/themes/funky-guy/css/theme.css');
+               $this->addStylesheet('/themes/funky-guy/css/theme-pages.css');
+               
$this->addStylesheet('/scripts/jquery-ui/css/overcast/jquery-ui-1.12.1.css');
+               
$this->addStylesheet('/scripts/jquery-ui/css/overcast/jquery-ui.structure-1.12.1.css');
+               
$this->addStylesheet('/scripts/jquery-ui/css/overcast/jquery-ui.theme-1.12.1.css');
+       }
+
+       /**
+        * headerJS() - creates the JS headers and calls the plugin javascript 
hook
+        * @todo generalize this
+        */
+       function headerJS() {
+               global $use_tooltips;
+
+               echo html_e('script', array('type' => 'text/javascript', 'src' 
=> util_make_uri('/js/common.js')), '', false);
+               plugin_hook("javascript_file");
+
+               // invoke the 'javascript' hook for custom javascript addition
+               $params = array('return' => false);
+               plugin_hook("javascript", $params);
+               $javascript = $params['return'];
+               if($javascript) {
+                       echo html_ao('script', array('type' => 
'text/javascript')).'//<![CDATA['."\n";
+                       echo $javascript;
+                       echo "\n".'//]]'."\n";
+                       echo html_ac(html_ap() -1);
+               }
+               html_use_storage();
+               html_use_coolfieldset();
+               html_use_jqueryui();
+               echo $this->getJavascripts();
+               echo html_ao('script', array('type' => 'text/javascript'));
+               echo '  //<![CDATA[
+                       jQuery(window).load(function(){
+                               
setTimeout("jQuery(\'.feedback\').hide(\'slow\')", 5000);
+                               setInterval(function() {
+                                               
setTimeout("jQuery(\'.feedback\').hide(\'slow\')", 5000);
+                                       }, 5000);
+                               jQuery("button").button();
+                               jQuery(":submit").button();
+                               jQuery(":reset").button();
+                               jQuery(":button").button();
+                               jQuery("#tabber").tabs();
+                               
jQuery("input").filter(\'[type="number"]\').spinner();
+                       });
+                       //]]>'."\n";
+               if ($use_tooltips) {
+                       echo '  jQuery(document).ready(
+                                       function() {
+                                               jQuery(document).tooltip({
+                                                               show: {
+                                                                       effect: 
\'slideDown\'
+                                                                       },
+                                                               track: true,
+                                                               open: function 
(event, ui) {
+                                                                       
setTimeout(function () {
+                                                                               
jQuery(ui.tooltip).hide(\'slideUp\');
+                                                                               
}, 5000);
+                                                                       }
+                                                               });
+                                       }
+                               );'."\n";
+               }
+               echo html_ac(html_ap() -1);
+       }
+
+       function hamburgerButton() {
+               $hamburgerIcon = '<svg viewBox="0 0 50 40" width="20" 
height="20" fill="#eee">
+                               <rect width="50" height="7"></rect>
+                               <rect y="15" width="50" height="7"></rect>
+                               <rect y="30" width="50" height="7"></rect>
+                             </svg>';
+               echo html_ao('label', array('for' => 'hamburgerButton'));
+               echo $hamburgerIcon;
+               echo html_ac(html_ap() -1); // </label>
+       }
+
+       function bodyHeader($params) {
+               if (!isset($params['h1']) && isset($params['title'])) {
+                       $params['h1'] = $params['title'];
+               }
+
+               if (!isset($params['title'])) {
+                       $params['title'] = forge_get_config('forge_name');
+               } else {
+                       $params['title'] = $params['title'] . " - 
".forge_get_config('forge_name');
+               }
+
+               echo html_ao('header', array('role' => 'banner'));
+               echo html_ao('nav', array('role' => 'navigation'));
+               echo $this->hamburgerButton();  
+               echo html_ao('logo');
+               echo util_make_link('/', html_image('header/header-logo.png', 
null, null, array('alt'=>'FusionForge Home', 'height'=>'40')));
+               echo html_ac(html_ap() -1); // </logo>
+               echo $this->searchBox();
+               echo html_ao('div', array('id' => 'userlinksdiv'));
+               echo html_ao('ul');
+               $items = $this->navigation->getUserLinks();
+               for ($j = 0; $j < count($items['titles']); $j++) {
+                       $links[] = html_ao('li')
+                               .util_make_link($items['urls'][$j], 
$items['titles'][$j], array('class' => 'userlink'), true)
+                               .html_ac(html_ap() -1);
+               }
+               $params['links'] = &$links;
+               plugin_hook('headermenu', $params);
+               $template = isset($params['template']) ? $params['template'] : 
null;
+               echo implode($template, $links);
+               echo html_ac(html_ap() -1); // </ul>
+               echo html_ac(html_ap() -1); // </div> #userlinkdiv
+               
+               echo html_ao('div', array('id' => 'menudiv'));
+               echo html_ao('input', array('id' => 'hamburgerButton', 'type' 
=> 'checkbox'));
+               echo html_ac(html_ap() -1); // </input>
+               echo html_ao('div', array('id' => 'hamburgermenudiv'));
+               $this->outerTabs($params);
+               echo html_ac(html_ap() -1); // </div> #hamburgermenudiv
+               echo html_ao('div', array('id' => 'userlinkshamburgerdiv'));
+               echo html_ao('ul');
+               echo implode($template, $links);
+               echo html_ac(html_ap() -1); // </ul>
+               echo html_ac(html_ap() -1); // </div> #userlinkhamburgerdiv
+               echo html_ac(html_ap() -1); // </div> #menudiv
+               echo $this->quickNav();
+               echo '<!-- inner tabs -->' . "\n";
+               echo html_ao('div', array('class' => 'innertabs'));
+               if (isset($params['group']) && $params['group']) {
+                       $this->projectTabs($params['toptab'], $params['group']);
+               }
+               echo html_ac(html_ap() -1); // </div> #tabGenerator
+               echo html_ac(html_ap() -1); // </div> #innertabs
+               echo html_ac(html_ap() -1); // </nav>
+               echo html_ac(html_ap() -2); // </header>
+
+               echo html_ao('main', array('id' => 'maindiv', 'role' => 
'main'));
+               plugin_hook('message');
+
+               if (isset($GLOBALS['error_msg']) && $GLOBALS['error_msg']) {
+                       echo $this->error_msg($GLOBALS['error_msg']);
+               }
+               if (isset($GLOBALS['warning_msg']) && $GLOBALS['warning_msg']) {
+                       echo $this->warning_msg($GLOBALS['warning_msg']);
+               }
+               if (isset($GLOBALS['feedback']) && $GLOBALS['feedback']) {
+                       echo $this->feedback($GLOBALS['feedback']);
+               }
+
+               if (!empty($params['h1'])) {
+                       echo html_e('h1', array(), $params['h1'], false);
+               } elseif (!empty($params['title'])) {
+                       echo html_e('h1', array('class' => 'hide'), 
$params['title'], false);
+               }
+               if (isset($params['submenu'])) {
+                       echo $params['submenu'];
+               }
+       }
+
+       function bodyFooter() {
+               echo html_ac(html_ap() -1).'<!-- id="maindiv" -->' . "\n";
+       }
+
+       function footer() {
+               $this->bodyFooter();
+               echo html_ao('footer', array('role' => 'contentinfo'));
+               echo $this->navigation->getPoweredBy();
+               echo $this->navigation->getShowSource();
+               echo html_e('div', array('style' => 'clear:both'), '', false);
+               echo html_ac(html_ap() -1);
+               plugin_hook('webanalytics_url');
+               echo html_ac(html_ap() -1);
+               echo '</html>' . "\n";
+       }
+
+       /**
+        * boxTop() - Top HTML box
+        *
+        * @param       string  $title  Box title
+        * @param       string  $id
+        * @return      string
+        */
+       function boxTop($title, $id = '') {
+               if ($id) {
+                       $id = $this->toSlug($id);
+                       $idid = $id;
+                       $idtitle = $id.'-title';
+                       $idtcont = $id.'-title-content';
+               } else {
+                       $idid = rand();
+                       $idtitle = rand();
+                       $idtcont = rand();
+               }
+
+               $t_result = '';
+               $t_result .= html_ao('div', array('id' => $idid, 'class' => 
'box-surround'));
+               $t_result .= html_ao('div', array('id' => $idtitle, 'class' => 
'box-title'));
+               $t_result .= html_e('div', array('id' => $idtcont, 'class' => 
'box-title-content'), $title, false);
+               $t_result .= html_ac(html_ap() -1);
+               return $t_result;
+       }
+
+       /**
+        * boxMiddle() - Middle HTML box
+        *
+        * @param       string  $title  Box title
+        * @param       string  $id
+        * @return      string
+        */
+       function boxMiddle($title, $id = '') {
+               if ($id) {
+                       $id = $this->toSlug($id);
+                       $idtitle = $id.'-title"';
+               } else {
+                       $idtitle = rand();
+               }
+
+               return html_e('div', array('id' => $idtitle, 'class' => 
'box-middle'), $title, false);
+       }
+
+       /**
+        * boxContent() - Content HTML box
+        *
+        * @param       string  $content        Box content
+        * @param       string  $id
+        * @return      string
+        */
+       function boxContent($content, $id = '') {
+               if ($id) {
+                       $id = $this->toSlug($id);
+                       $idcont = $id.'-content"';
+               } else {
+                       $idcont = rand();
+               }
+
+               return html_e('div', array('id' => $idcont, 'class' => 
'box-content'), $content, false);
+       }
+
+       /**
+        * boxBottom() - Bottom HTML box
+        *
+        * @return      string
+        */
+       function boxBottom() {
+               return html_ac(html_ap() -1).'<!-- class="box-surround" 
-->'."\n";
+       }
+
+       function tabGenerator($tabs_dirs, $tabs_titles, $tabs_tooltips, 
$nested=false, $selected=false, $sel_tab_bgcolor='white', $total_width='100%') {
+               $count = count($tabs_dirs);
+
+               if ($count < 1) {
+                       return '';
+               }
+
+               $return = '<!-- start tabs -->'."\n";
+               $attrs = array('class' => 'tabGenerator fullwidth');
+
+               if ($total_width != '100%')
+                       $attrs['style'] = 'width:' . $total_width;
+
+               $return .= html_ao('div', $attrs);
+               $return .= html_ao('ul');
+
+               $accumulated_width = 0;
+
+               for ($i = 0; $i < $count; $i++) {
+                       $tabwidth = intval(ceil(($i+1)*100/$count)) - 
$accumulated_width;
+                       $accumulated_width += $tabwidth;
+
+                       // middle part
+                       $attrs = array();
+                       $attrs['class'] = 'tg-middle';
+                       $return .= html_ao('li', $attrs);
+                       $attrs = array();
+                       $attrs['id'] = md5($tabs_dirs[$i]).rand();
+                       $attrs['href'] = $tabs_dirs[$i];
+                       if (preg_match('/^https?:\/\//', $tabs_dirs[$i])) {
+                               $attrs['target'] = '_blank';
+                       }
+                       $return .= html_ao('a', $attrs);
+                       
+                       $attrs = array('title' => $tabs_tooltips[$i]);
+                       if ($selected == $i)
+                               $attrs['class'] = 'selected';
+                       elseif ($nested)
+                               $attrs['class'] = 'nested';
+
+                       $return .= html_e('span', $attrs, $tabs_titles[$i], 
false);
+                       $return .= html_ac(html_ap() - 2);
+               }
+
+               $return .= html_ac(html_ap() -1).'<!-- end tabs -->'."\n";
+               return $return;
+       }
+
+       /**
+        * beginSubMenu() - Opening a submenu.
+        *
+        * @return      string  Html to start a submenu.
+        */
+       function beginSubMenu() {
+               return html_ao('ul', array('class' => 'submenu'));
+       }
+
+       /**
+        * endSubMenu() - Closing a submenu.
+        *
+        * @return      string  Html to end a submenu.
+        */
+       function endSubMenu() {
+               return html_ac(html_ap() -1);
+       }
+
+       /**
+        * printSubMenu() - Takes two array of titles and links and builds the 
contents of a menu.
+        *
+        * @param       array   $title_arr      The array of titles.
+        * @param       array   $links_arr      The array of title links.
+        * @param       array   $attr_arr       The array of attributs by link
+        * @return      string  Html to build a submenu.
+        */
+       function printSubMenu($title_arr, $links_arr, $attr_arr) {
+               $count = count($title_arr) - 1;
+               $return = '';
+
+               if (!count($attr_arr)) {
+                       for ($i=0; $i<count($title_arr); $i++) {
+                               $attr_arr[] = NULL;
+                       }
+               }
+               for ($i = 0; $i < $count; $i++) {
+                       $return .= html_ao('li');
+                       $return .= html_e('span', array(), 
util_make_link($links_arr[$i], $title_arr[$i], $attr_arr[$i]), false);
+                       $return .= html_ac(html_ap() -1);
+               }
+
+               $return .= html_ao('li');
+               $return .= html_e('span', array(), 
util_make_link($links_arr[$i], $title_arr[$i], $attr_arr[$i]), false);
+               $return .= html_ac(html_ap() -1);
+               return $return;
+       }
+
+       /**
+        * subMenu() - Takes two array of titles and links and build a menu.
+        *
+        * @param       array   $title_arr      The array of titles.
+        * @param       array   $links_arr      The array of title links.
+        * @param       array   $attr_arr       The array of attributes by link
+        * @return      string  Html to build a submenu.
+        */
+       function subMenu($title_arr, $links_arr, $attr_arr = array()) {
+               $return = $this->beginSubMenu();
+               $return .= $this->printSubMenu($title_arr, $links_arr, 
$attr_arr);
+               $return .= $this->endSubMenu();
+               return $return;
+       }
+}
+
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
diff --git a/src/www/themes/funky-guy/css/theme-pages.css 
b/src/www/themes/funky-guy/css/theme-pages.css
new file mode 100644
index 0000000..b055ea4
--- /dev/null
+++ b/src/www/themes/funky-guy/css/theme-pages.css
@@ -0,0 +1,313 @@
+/*
+ * FusionForge Funky Theme
+ *
+ * Copyright 2009 Matthieu FAURE // Open-S: global clean-up
+ * Copyright 2010, Antoine Mercadal - Capgemini
+ * Copyright 2017, Franck Villaume - TrivialDev
+ * http://fusionforge.org
+ *
+ * This file is part of FusionForge. FusionForge is free software;
+ * you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * CONTENT: all page-related styles
+ * ========================================================
+ */
+
+/*
+ * PAGE: home page
+ * ========================================================
+ */
+
+/* =bd (main body)
+----------------------------------------------- */
+#bd td {
+       vertical-align: top;
+       padding: 5px;
+}
+
+#bd-col1 {
+       width: 65%;
+}
+
+#bd-col2 {
+       width: 35%;
+}
+
+#title-home-page {
+       text-align: center;
+}
+
+#Latest_News h3 {
+       margin-top: 0;
+       margin-bottom: 0;
+       font-weight: bold;
+}
+
+#Latest_News em {
+       padding-left: 1em;
+}
+
+/* remove inherited background-image */
+#title_Features_Boxes {
+       display: none;
+}
+
+#Features_Boxes {
+       background-image: none;
+}
+
+#Features_Boxes #title_Associated_Forges {
+       margin-top: 0;
+}
+
+#Associated_Forges td {
+       padding-right: 1em;
+}
+
+#Associated_Forges .align-right {
+       text-align: right;
+}
+
+#Recently_Registered_Projects td {
+       padding: 0.2em;
+}
+
+#search_associated_forges {
+       float: left;
+       margin-top: 5px;
+       margin-bottom: 5px;
+}
+
+#search_associated_forges_submit {
+       margin-top: 6px;
+       padding-left: 5px;
+}
+
+/*
+ * PAGE: project home
+ * ========================================================
+ */
+#project-summary-and-devs {
+       margin-top: 0.5em;
+}
+
+#file-releases {
+       margin: 0 0.5em;
+}
+
+#latest-major-contributions {
+       margin: 1em 0.5em;
+}
+
+/*
+ * PAGE: frs
+ * ========================================================
+ */
+.frs-table-files {
+       width: 100%;
+       margin: 0 0 2.5em 0;
+}
+
+.frs-table-files th {
+       background: #e8dfd4;
+}
+
+.frs-table-files tr {
+       border-bottom: solid 1px #c9c9c9;
+}
+
+.frs-table-files th,
+.frs-table-files td {
+       vertical-align:middle;
+}
+
+.frs-table-files h3 {
+       margin:0;
+}
+
+#forge-frs .blue-box {
+       padding-top: 2em;
+       padding-bottom: 2em;
+}
+
+#forge-frs h2 {
+       padding-top: 1em;
+}
+
+#forge-frs h3 {
+       font-size: small;
+}
+
+#forge-frs .box-surround {
+       margin: 0 0.5em 0.5em 2em;
+}
+
+#forge-frs .box-content {
+       padding-left: 2em;
+}
+
+#forge-frs .listTable {
+       margin: 0;
+}
+
+#forge-frs .listTable td {
+       width: 12%;
+}
+
+/*
+ * PAGE: user_home (eg: http://fusionforge/user/<username>)
+ * ========================================================
+ */
+#user-profile-homepage {
+
+}
+
+/*
+ * PAGE: Activity (eg: http://fusionforge/activity/?group_id=<id>)
+ * ========================================================
+ */
+#activity {
+       display: table;
+       width: 100%;
+}
+
+#activity_left {
+       float: left;
+}
+
+#activity_right {
+       overflow : hidden;
+       padding-left: 10px;
+       margin-top:5px;
+}
+
+#activity_select {
+}
+
+#activity_label,
+#activity_label_startdate,
+#activity_label_enddate {
+       font-weight:bold;
+       margin-top:10px;
+}
+
+#activity_startdate,
+#activity_enddate {
+}
+
+#activity_submit {
+       margin-top:10px;
+}
+
+/*
+ * PAGE: Diary (eg: 
http://fusionforge/developer/diary.php?diary_id=<id>&diary_user=<userid>)
+ * 
==========================================================================================
+ */
+#diary {
+       display: table;
+       width: 100%;
+}
+
+#diary_left {
+       float: left;
+       width: 75%;
+}
+
+#diary_right {
+       overflow : hidden;
+       padding-left: 10px;
+}
+
+
+/*
+ * PAGE: docman (eg: http://fusionforge/docman/?group_id=<id>)
+ * ========================================================
+ */
+.docman_h3 {
+       margin-top: 0;
+}
+
+.docman_h4 {
+       padding: 0;
+       margin: 2px;
+       font-style: italic;
+}
+
+.docman_div_include {
+       border: 1px solid #C2C7D1;
+       padding: 2px;
+       margin-top: 5px;
+       margin-bottom: 5px;
+}
+
+.docmanDivIncluded {
+       font-size: 0.95em;
+}
+
+.docmanSubmitDiv input {
+       margin: 5px;
+}
+
+.docmanDiv {
+       padding-bottom: 5px;
+       font-size: 0.9em;
+}
+
+.docmanDiv table {
+       border: 1px solid #C2C7D1;
+       border-collapse: collapse;
+       text-align: left;
+       vertical-align: middle;
+       width: 100%;
+       margin: 2px;
+}
+
+.docmanDiv td, .docmanDiv th {
+       border: 1px solid #C2C7D1;
+       border-collapse: collapse;
+       padding: 3px;
+}
+
+.docman_li_treecontent {
+       list-style-image: url('../images/ic/folder.png');
+       margin: 2px;
+}
+
+.docman_li_treecontent_selected {
+       list-style-image: url('../images/docman/directory-with-documents.png');
+       margin: 2px;
+}
+
+.docman_editfile_title,
+#docman_search_query_label {
+       font-weight:bold;
+}
+
+/*
+ * PAGE: tracker (eg: http://fusionforge/tracker/?group_id=<id>)
+ * ========================================================
+ */
+#trackermodform  table {
+       width: 100%;
+}
+
+#trackermodform  input[type=submit] {
+       float: right;
+}
+
+.artifact_closed,
+.artifact_closed:hover {
+       text-decoration:line-through;
+}
diff --git a/src/www/themes/funky-guy/css/theme.css 
b/src/www/themes/funky-guy/css/theme.css
new file mode 100644
index 0000000..dcc4da3
--- /dev/null
+++ b/src/www/themes/funky-guy/css/theme.css
@@ -0,0 +1,945 @@
+/*
+ * Stylesheet for Funky Guy Theme.
+ *
+ * Copyright 2010, Antoine Mercadal - Capgemini
+ * Copyright 2010, Franck Villaume - Capgemini
+ * Copyright 2011, Iñigo Martinez
+ * Copyright 2013-2014,2017, Franck Villaume - TrivialDev
+ * Copyright 2014, Benoit Debaenst - TrivialDev
+ * Copyright 2015, Roland Mas
+ * Copyright 2021, Guy Morin
+ * http://fusionforge.org
+ *
+ * This file is part of FusionForge. FusionForge is free software;
+ * you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* Font */
+@font-face {
+       font-family: 'Manjari-Bold';
+       src: url('Manjari-Bold.ttf') format('truetype');
+       font-weight: normal;
+       font-style: normal;
+}
+
+/* HTML elements */
+html {
+       background-color: #efefef;
+}
+
+body {
+       font-size:12px;
+       font-family: Helvetica, Helv, swiss, sans-serif;
+       color:rgb(68,68,68);
+       background-color:white;
+       text-align:left;
+       margin: 0;
+}
+
+#maindiv {
+       margin: 0;
+       padding: 1em;
+}
+
+form {
+       margin:0;
+}
+
+img {
+       border:0;
+       vertical-align: middle;
+}
+
+h1, h2, h3,
+.box-title-content,
+.box-middle,
+.widget_titlebar_title {
+       font-family: Arial, sans-serif;
+}
+
+h1 {
+       color: #303030;
+       padding-top: 4px;
+       font-size: 24px;
+       letter-spacing: 2px;
+}
+
+h2 {
+       margin-top: 30px;
+       font-size: 21px;
+       color: #505d77;
+}
+
+h3 {
+       margin-top: 30px;
+       font-size: 18px;
+       color: #505d77;
+}
+
+ul {
+       list-style-type: circle;
+       margin: 0;
+}
+
+li {
+       margin: .5em;
+}
+
+a {
+       text-decoration:none;
+       font-weight: bold;
+       color: #36c;
+       transition-property: background-color, color, height, shadow;
+       transition-duration: 0.3s;
+}
+
+a:hover {
+       text-decoration: none;
+       color: #38f;
+       font-weight: bold;
+}
+
+th, td {
+       text-align:left;
+       border:none;
+       border-collapse: collapse;
+}
+
+input[type="text"], input[type="password"], input[type="url"], 
input[type="email"], textarea {
+       width: auto;
+       border-radius: 6px;
+       border: 1px solid #c6c6c6;
+       padding: 3px;
+       font-family:"Lucida Grande",sans-serif;
+}
+
+hr {
+       border: 0;
+       background-color: #E2E2E2;
+       height: 1px;
+}
+
+/* =header */
+header {
+       padding: 0;
+       background: #41495C;
+}
+
+nav {
+       display: flex;
+       flex-direction: row;
+       flex-wrap: wrap;
+       align-items: center;
+       margin: auto;
+}
+
+header div {
+       color: #aaa;
+}
+
+header logo {
+       margin-left: .5em;
+}
+
+header a {
+       color: #eee;
+       font-size: .9em;
+}
+
+header a:hover {
+       color:#ff9;
+}
+
+/* =searchBox */
+div[role='search'] {
+       flex: 1 0 50%;
+}
+
+#searchBox {
+       padding:0 .5em;
+       text-align:left;
+       position: relative;
+}
+
+#searchBox a {
+       text-decoration:none;
+       font-weight: bold;
+       transition-property: color;
+       transition-duration: 0.3s;
+}
+
+#searchBox a:hover {
+       text-decoration: none;
+       font-weight: bold;
+}
+
+header select {
+       cursor: pointer;
+       height: 1.9em;
+       padding: .2em 1.2em .2em .4em;
+       border-radius: .3em;
+       border: 1px solid #789;
+       color: #fff;
+       background: #51596c url("../images/header/select_down.png") center 
right no-repeat;
+       appearance: none;
+       box-shadow: none;
+}
+
+header option {
+       background:#31394c;
+}
+
+#searchBox input[type=text] {
+       height: 1.8em;
+       padding: .1em 26px .1em .4em;
+       border-radius: .3em;
+       border: 1px solid #789;
+       display: inline;
+       width: 9em;
+       font-size: inherit;
+       color: #fff;
+       background: #31394c;
+       box-shadow: none;
+}
+
+#searchBox input[type=submit] {
+       height: 20px;
+       width: 20px;
+       position: relative;
+       right: 26px;
+       margin-right: -22px;
+       font-size: 0;
+       border: none !important;
+       background: transparent url("../images/header/search.png") center 
center no-repeat !important;
+       appearance: none;
+       box-shadow: none;
+}
+
+/* =userlinks */
+#userlinksdiv {
+       margin: 0 .8em;
+       text-align: right;
+}
+#userlinksdiv li {
+       display: inline;
+       margin: 0;
+       padding-left: 1em;
+}
+
+/* =quicknav */
+#quicknavdiv {
+       padding:0 .8em .6em 0;
+}
+
+#quicknav {
+       width: 12em;
+}
+
+/* =menudiv */
+#menudiv {
+       display: flex;
+       flex-direction: row;
+       flex-wrap: wrap;
+       width: 100%;
+}
+
+/* =hamburgerMenuOff */
+#hamburgerButton,
+header nav label,
+#userlinkshamburgerdiv {
+       display: none;
+}
+
+#hamburgermenudiv {
+       flex: 1;
+}
+
+/* =tabGenerator */
+.tabGenerator {
+       font-weight:bold;
+       margin: 0;
+}
+
+.tabGenerator ul {
+       list-style: none;
+       margin: 0;
+}
+
+.tabGenerator ul:first-child {
+       padding-bottom: .2em;
+}
+
+.tabGenerator li {
+       display: inline-block;
+}
+
+.tabGenerator .tg-middle span {
+       transition-property: background-color, color, height, shadow;
+       transition-duration: 0.3s;
+       font-size:1.15em;
+       
+       padding: .6em;
+       white-space: nowrap;
+}
+
+.tabGenerator .tg-middle span:hover {
+       color: #ff9;
+}
+
+.tabGenerator .tg-middle span.selected {
+       background: none;
+       color:#ff9;
+}
+
+/*
+       innertabs
+*/
+.innertabs {
+       display: block;
+       width: 100%;
+}
+
+.innertabs .tabGenerator ul {
+       display: flex;
+       flex-direction: row;
+       margin: 0;
+       padding: 0;
+       border-left: 1px solid #505d77;
+}
+
+.innertabs .tabGenerator li {
+       flex: 1;
+       margin: 0;
+       padding: 0;
+}      
+
+.innertabs .tabGenerator a {
+       display: flex;
+       flex-direction: column;
+       height: 100%;
+       padding:0 0 .2em 0;
+       margin: 0;
+}
+
+
+.innertabs .tabGenerator .tg-middle span {
+       height: 100%;
+       padding: .2em .4em .3em .4em;
+       display: flex;
+       align-items: center;
+       justify-content: center;
+       background-color:none;
+       background: #707d97;
+       color: #fff;
+       font-weight:bold;
+       line-height: none;
+       overflow:hidden;
+       text-overflow:ellipsis;
+       white-space:normal;
+       text-align:center;
+       transition-property: background, color;
+       transition-duration: .4s;
+       border-right: 1px solid #505d77;
+}
+
+.innertabs .tabGenerator .tg-middle span:hover,
+.innertabs .tabGenerator .tg-middle span.selected {
+       background: #fff;
+       color: #222;
+}
+
+.topTab, a.topTab, a.topTab:visited, a.topTab:hover,
+.topTabSelected, a.topTabSelected, a.topTabSelected:visited,
+a.topTabSelected:hover {
+       text-decoration: none;
+       font-weight: bold;
+       color: rgb(68, 68, 68);
+       font-family: arial, helvetica, sans-serif;
+       font-size: 0.9em;
+}
+
+.bottomTab, a.bottomTab, a.bottomTab:visited, a.bottomTab:hover {
+       text-decoration: none;
+       font-weight: bold;
+       color: white;
+       font-family: arial, helvetica, sans-serif;
+       font-size: 0.9em;
+}
+
+.bottomTabSelected, a.bottomTabSelected, a.bottomTabSelected:visited, 
a.bottomTabSelected:hover {
+       text-decoration: none;
+       font-weight: bold;
+       color: rgb(68, 68, 68);
+       font-family: arial, helvetica, sans-serif;
+       font-size: 0.9em;
+}
+
+.topLeft {
+       vertical-align: top;
+       text-align: left;
+}
+
+.middleRight {
+       vertical-align: middle;
+       text-align: right;
+}
+
+.pane {
+       color: rgb(112, 112, 112);
+       background-color: white;
+}
+
+.field-holder {
+       clear: both;
+}
+
+/* Boxes (top / middle / bottom)
+----------------------------------------------- */
+.box-surround {
+/*  margin-bottom: 1em;*/
+       background-color: #f0f0f0;
+       border: 1px solid #c2c3c4;
+       border-radius: 6px;
+       padding:4px 8px 12px 8px;
+       margin-bottom: 0;
+       box-shadow: 1px 1px 4px #c2c3c4;
+}
+
+.box-title-content {
+       color: #505d77;
+       font-weight: bold;
+       font-size: 16px;
+       padding: 5px;
+       border-bottom: 1px solid #E2E3E4;
+}
+
+
+.box-content {
+       border-bottom: 1px solid #E2E3E4;
+       margin: 0;
+       padding: 8px 8px 8px 18px;
+}
+
+.box-content p {
+       margin: 0;
+}
+
+
+.box-middle {
+  margin: 0;
+  padding-left: 18px;
+  padding-top: 2px;
+  padding-bottom: 2px;
+  color: #505d77;
+  font-size: 14px;
+  font-weight: bold;
+}
+
+
+/* widgets */
+
+.widget {
+       margin-top: 5px;
+       background-color: #f7f7f7;
+       border: 1px solid #929394;
+    border-radius: 3px;
+       box-shadow: 1px 1px 4px #b2b3b4;
+}
+
+.widget_titlebar_handle {
+    border-bottom: 2px solid #cfcfcf;
+}
+
+.widget_titlebar {
+       color: #505d77;
+       font-weight: bold;
+       font-size: 16px;
+       padding: 5px;
+       background: #dfdfdf;
+    border-top-left-radius: 3px;
+    border-top-right-radius: 3px;
+}
+
+.widget_titlebar a {
+    color:#505d77 !important;
+}
+
+.widget_titlebar_title {
+    color: #505d77;
+    padding: 0 4px;
+}
+
+.widget_titlebar_close img {
+       width: 12px;
+       height: 12px;
+}
+
+.widget_titlebar_minimize img {
+       width: 12px;
+       height: 12px;
+}
+
+.widget_titlebar_maximize img {
+       width: 12px;
+       height: 12px;
+}
+
+.widget_content {
+       border-bottom: 1px solid #d2d3d4;
+       border-bottom-left-radius: 3px;
+       border-bottom-right-radius: 3px;
+       margin: 0;
+       padding: .4em;
+}
+
+.widget_preferences {
+       background: none;
+}
+.widget_preferences fieldset {
+       border: none;
+       margin: .4em 0 .1em 0;
+}
+.widget_preferences fieldset fieldset {
+       margin: .4em 0;
+}
+
+.widget_content table {
+       border-collapse: collapse;
+       border: 1px solid #D5D5D5;
+}
+.widget_content table td {
+       padding: 4px;
+}
+
+.widget-sticker-container {
+       padding: 4px;
+       float: left;
+       margin-left: auto;
+       margin-right: auto;
+       background-color: white;
+       border: 1px solid #D5D5D5;
+       min-width: 300px;
+       max-width: 500px;
+}
+
+.widget-sticker-header {
+       background-color: #CDDCF3;
+       padding: 1px;
+}
+
+.widget-sticker-body {
+       position: relative;
+       padding: 2px;
+       width: 98%;
+       overflow: hidden;
+}
+
+.widget-sticker-footer {
+       padding: 1px;
+}
+
+#widget-categories a {
+       display: block;
+       padding: 2px 4px;
+       border-radius: 4px;
+}
+#widget-categories a.selected {
+       background-color: #36c;
+       color: white;
+}
+
+.widget_toolbar {
+       border-bottom: 1px solid #ccc;
+       margin-bottom: 8px;
+       padding: .4em .8em;
+       display: inline-block;
+}
+
+.widget_toolbar li {
+       padding: 0;
+}
+
+.widget_toolbar li.current a,
+.widget_toolbar li.current a:hover {
+       border-bottom: 2px solid #38f;
+       color: #333;
+}
+
+.widget_toolbar li a {
+       padding-bottom: .35em !important;
+       color: #333;
+}
+
+.widget_toolbar li a:hover {
+       border-bottom: 2px solid #999;
+       color: #333;
+}
+
+table.listing tbody tr:nth-child(even),
+.bgcolor-grey {
+       background-color: #CDDCF3;
+}
+
+table.listing tbody tr:nth-child(odd),
+.bgcolor-white {
+       background-color: #FFFFFF;
+}
+
+/*
+       listTable
+*/
+
+.listTable table {
+       border-collapse: collapse;
+}
+
+.listTable table td {
+       padding: 5px;
+       border: 1px solid gray;
+}
+
+/*
+       submenu
+*/
+.submenu {
+       margin-top: .5em;
+       margin-bottom: 1.25em;
+       margin-left: 0;
+       /*border-collapse: collapse;*/
+       border-bottom: 1px solid #61697C;
+       border-spacing: 6px 0;
+       padding-left: 0;
+}
+.submenu a {
+       background: #51596C;
+       color: #fff;
+       text-align:center;
+       border-top-left-radius: 6px;
+       border-top-right-radius: 6px;
+       display: inline-block;
+       padding: 4px 8px;
+}
+.submenu a:hover {
+       color: #ff9;
+}
+
+.submenu li {
+       display: table-cell;
+       margin-left: 5px;
+       border-bottom: none;
+       margin-right: 10px;
+}
+
+
+/* =ft (footer)
+----------------------------------------------- */
+#ft {
+       text-align:center;
+}
+
+/* error_msg, warning_msg or feedback function
+----------------------------------------------- */
+span.active, span.deleted, span.pending, span.suspended {
+       padding:0 .5em;
+       border-radius: 3px;
+}
+.active     {background-color: #cfc;}
+.deleted    {background-color: #cff;}
+.pending    {background-color: #ddd;}
+.suspended  {background-color: #fc6;}
+.error {
+       background-color: #ff4940; /* red */
+       border: 1px solid red;
+       padding: 7px;
+       border-radius: 6px;
+       text-shadow: 1px 1px #ff7c73;
+       text-align: left;
+       font-size: small;
+       font-weight: normal;
+       color: black;
+       margin: 2px 3px 3px;
+}
+
+.warning_msg, .warning, .tips, .important {
+       background-color: #ffd297; /* orange */
+       border: 1px solid #ffa500; /* orange */
+       padding: 7px;
+       border-radius: 6px;
+       text-shadow: 1px 1px #fff5CA;
+       text-align: left;
+       font-weight: normal;
+       font-size: small;
+       margin: 2px 3px 3px;
+}
+
+.feedback {
+       background-color: #aef26d; /* green */
+       border: 1px solid green;
+       padding: 7px;
+       border-radius: 6px;
+       text-shadow: 1px 1px #DFF59f;
+       text-align: left;
+       font-weight: normal;
+       font-size: small;
+       margin: 2px 3px 3px;
+}
+
+p.information {
+       background-color: #bdd0f2;
+       border: 1px solid #3a5fa5;
+       padding: 7px;
+       border-radius: 6px;
+       text-shadow: 1px 1px #bcf;
+       text-align: left;
+       font-weight: normal;
+       font-size: small;
+       margin: 2px 3px 3px;
+}
+
+#ffErrors {
+       background-color: #ff4940; /* red */
+       border: 1px solid red;
+       padding: 7px;
+       border-radius: 6px;
+       text-shadow: 1px 1px #ff7c73;
+       color: black;
+       margin: 2px 3px 3px;
+}
+
+#ffErrors .error {
+       background-color: #ff4940; /* red */
+       border: 1px solid red;
+       padding: 7px;
+       border-radius: 6px;
+       text-shadow: 1px 1px #ff7c73;
+       color: black;
+       margin: 2px 3px 3px;
+}
+
+footer {
+       padding: 1.5em .5em .5em .5em;
+       background: #efefef;
+       border-top: 1px solid #ccc;
+       margin: 0;
+       text-align: center;
+       color: #dcdcdc;
+}
+
+footer img {
+       float: right;
+}
+
+.info-box h2{
+       font-size: 1.3em;
+       border-radius: 0.5em 0.5em 0 0;
+       border-bottom: 1px solid #E2E3E4;
+       padding: 3px 3px 3px 10px;
+       margin: 0 -4px 0 -4px;
+}
+
+
+.info-box {
+       background: #f0f0f0;
+       color: #565c5e;
+       padding: .2em .4em;
+       margin-bottom: .4em;
+       border-radius: 0.7em;    
+       border:1px solid #c2c3c4;
+       box-shadow: 1px 1px 4px #c2c3c4;
+}
+
+.priority1 { background-color: #f3f4db}
+.priority2 { background-color: #fcecc2}
+.priority3 { background-color: #fde4aa}
+.priority4 { background-color: #fcd986}
+.priority5 { background-color: #fac955}
+
+.table-header-rotated {
+       border-collapse: collapse;
+}
+
+.table-header-rotated td {
+       width: 30px;
+       text-align: center;
+       padding: .5em .25em;
+       border: 1px solid #ccc;
+}
+
+.table-header-rotated th.rotate {
+       height: 140px;
+       white-space: nowrap;
+}
+
+.table-header-rotated th.rotate>div {
+       transform: translate(25px, 51px) rotate(315deg);
+       width: 30px;
+}
+
+.table-header-rotated th.rotate>div>span {
+       border-bottom: 1px solid #ccc;
+       padding: .25em .5em;
+}
+
+.table-header-rotated th.row-header {
+       padding: 0 .5em;
+       border-bottom: 1px solid #ccc;
+}
+
+table.listing thead tr th {
+       background-color: #707d97 !important;
+       color: white;
+       text-align: center;
+}
+
+table.listing thead tr th,
+table.listing tbody tr td {
+       padding: 4px 8px !important;
+}
+
+table.listing thead tr th a {
+       color:white;
+}
+
+table.listing tbody tr:nth-child(2n), .even {
+       background-color: #e0dfd6 !important;
+}
+
+table.listing tbody tr:nth-child(2n+1), .odd {
+       background-color: #e6e6e0 !important;
+}
+
+input, select {
+       vertical-align: middle;
+}
+
+.important {
+       background-color: #e10;
+       border: none;
+       color: white;
+       text-shadow: 0 0 1px #300;;
+       padding: .2em .4em;
+}
+
+/* Buttons */
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header 
.ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html 
.ui-button.ui-state-disabled:active {
+       background:none !important;
+       background-color: #d7d7d7 !important;
+       border:1px solid #a7a7a7 !important;
+       color: #222 !important;
+       text-shadow:1px 1px #eee;
+       transition-property: background-color, text-shadow;
+       transition-duration: 0.3s;
+}
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header 
.ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, 
.ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus {    
+       border: 1px solid #505d77;
+       background-color: #f7f7f7 !important;
+       border:1px solid #878787 !important;
+       color: black !important;
+       text-shadow:1px 1px #fff;
+}
+
+/* Hide number input spinners */
+input[type='number'] {
+    -moz-appearance:textfield;
+}
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button { -webkit-appearance: none; }
+/* end Hide number input spinners */
+
+@media only screen and (max-width:1023px) {
+
+/* =hamburgerMenuOn */
+header nav label {
+       cursor: pointer;
+       padding: 0 .8em;
+       display: inline-block;
+}
+
+div[role="search"] {
+       flex: 1 0 70%;
+}
+
+#userlinksdiv,
+#quicknav {
+       display: none;
+}
+
+#menudiv,
+#userlinkshamburgerdiv {
+       display: block;
+       width: 100%;
+}
+
+#menudiv input,
+#menudiv input:not(:checked) ~ #hamburgermenudiv {
+       display: none;
+       height: 0;
+       transition: all ease-in-out .9s;
+}
+
+#menudiv input:checked ~ #hamburgermenudiv {
+       display: block;
+       height: 100%;
+}
+
+#hamburgermenudiv .tabGenerator {
+       display: flex;
+       flex-direction: column;
+       margin-top: .4em;
+}
+
+#userlinkshamburgerdiv ul,
+#hamburgermenudiv .tabGenerator ul {
+        display: flex;
+       flex-direction: column;
+       margin: 0;
+        padding: 0;
+       width: 100%;
+}
+
+#userlinkshamburgerdiv li,
+#hamburgermenudiv .tabGenerator li {
+       display: inline-block;
+       margin: 0 .8em;
+       padding: 0;
+       border-top: 1px solid #707d97;
+       text-align: left;
+}
+
+#userlinkshamburgerdiv {
+       margin: 0;
+       width: 100%;    
+}
+
+#userlinkshamburgerdiv ul {
+       flex-direction: column-reverse;
+}
+
+#userlinkshamburgerdiv li {
+       font-size: .9em;
+}
+
+#userlinkshamburgerdiv li a {
+       display: block;
+       font-size: 1.15em;
+       padding: .6em;
+       white-space: no-wrap;
+}
+
+#hamburgermenudiv .tabGenerator span{
+       display: block;
+}
+
+}
diff --git a/src/www/themes/funky-guy/images/category.png 
b/src/www/themes/funky-guy/images/category.png
new file mode 100644
index 0000000..c4f21cd
Binary files /dev/null and b/src/www/themes/funky-guy/images/category.png differ
diff --git a/src/www/themes/funky-guy/images/clear.png 
b/src/www/themes/funky-guy/images/clear.png
new file mode 100644
index 0000000..146dbe2
Binary files /dev/null and b/src/www/themes/funky-guy/images/clear.png differ
diff --git 
a/src/www/themes/funky-guy/images/docman/directory-with-documents.png 
b/src/www/themes/funky-guy/images/docman/directory-with-documents.png
new file mode 100644
index 0000000..dfae547
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/directory-with-documents.png differ
diff --git a/src/www/themes/funky-guy/images/docman/document-reserved.png 
b/src/www/themes/funky-guy/images/docman/document-reserved.png
new file mode 100644
index 0000000..bdabf94
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/document-reserved.png differ
diff --git a/src/www/themes/funky-guy/images/docman/download-directory-zip.png 
b/src/www/themes/funky-guy/images/docman/download-directory-zip.png
new file mode 100644
index 0000000..77757a7
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/download-directory-zip.png differ
diff --git a/src/www/themes/funky-guy/images/docman/enforce-document.png 
b/src/www/themes/funky-guy/images/docman/enforce-document.png
new file mode 100644
index 0000000..40c0d98
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/enforce-document.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_html.png 
b/src/www/themes/funky-guy/images/docman/file_type_html.png
new file mode 100644
index 0000000..adc6ded
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_html.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_image.png 
b/src/www/themes/funky-guy/images/docman/file_type_image.png
new file mode 100644
index 0000000..74719b2
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_image.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_pdf.png 
b/src/www/themes/funky-guy/images/docman/file_type_pdf.png
new file mode 100644
index 0000000..a07bc12
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_pdf.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_presentation.png 
b/src/www/themes/funky-guy/images/docman/file_type_presentation.png
new file mode 100644
index 0000000..69c03be
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_presentation.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_sound.png 
b/src/www/themes/funky-guy/images/docman/file_type_sound.png
new file mode 100644
index 0000000..3d708dd
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_sound.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_spreadsheet.png 
b/src/www/themes/funky-guy/images/docman/file_type_spreadsheet.png
new file mode 100644
index 0000000..6531b65
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_spreadsheet.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_unknown.png 
b/src/www/themes/funky-guy/images/docman/file_type_unknown.png
new file mode 100644
index 0000000..db366e5
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_unknown.png differ
diff --git a/src/www/themes/funky-guy/images/docman/file_type_writer.png 
b/src/www/themes/funky-guy/images/docman/file_type_writer.png
new file mode 100644
index 0000000..6582c30
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/file_type_writer.png differ
diff --git a/src/www/themes/funky-guy/images/docman/move-document.png 
b/src/www/themes/funky-guy/images/docman/move-document.png
new file mode 100644
index 0000000..7fe4a49
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/move-document.png differ
diff --git a/src/www/themes/funky-guy/images/docman/release-document.png 
b/src/www/themes/funky-guy/images/docman/release-document.png
new file mode 100644
index 0000000..e7c28e9
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/release-document.png differ
diff --git a/src/www/themes/funky-guy/images/docman/reserve-document.png 
b/src/www/themes/funky-guy/images/docman/reserve-document.png
new file mode 100644
index 0000000..759f0e3
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/reserve-document.png differ
diff --git a/src/www/themes/funky-guy/images/docman/validate.png 
b/src/www/themes/funky-guy/images/docman/validate.png
new file mode 100644
index 0000000..438fd46
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/docman/validate.png differ
diff --git a/src/www/themes/funky-guy/images/header/header-logo.png 
b/src/www/themes/funky-guy/images/header/header-logo.png
new file mode 100644
index 0000000..85dbc79
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/header/header-logo.png differ
diff --git a/src/www/themes/funky-guy/images/header/search.png 
b/src/www/themes/funky-guy/images/header/search.png
new file mode 100644
index 0000000..ffb17d0
Binary files /dev/null and b/src/www/themes/funky-guy/images/header/search.png 
differ
diff --git a/src/www/themes/funky-guy/images/header/select_down.png 
b/src/www/themes/funky-guy/images/header/select_down.png
new file mode 100644
index 0000000..629175d
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/header/select_down.png differ
diff --git a/src/www/themes/funky-guy/images/ic/acl_roles20.png 
b/src/www/themes/funky-guy/images/ic/acl_roles20.png
new file mode 100644
index 0000000..9c47036
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/acl_roles20.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/add-16.png 
b/src/www/themes/funky-guy/images/ic/add-16.png
new file mode 100644
index 0000000..bb6d822
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/add-16.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/add.png 
b/src/www/themes/funky-guy/images/ic/add.png
new file mode 100644
index 0000000..12d2908
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/add.png differ
diff --git a/src/www/themes/funky-guy/images/ic/attach.png 
b/src/www/themes/funky-guy/images/ic/attach.png
new file mode 100644
index 0000000..1a742f7
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/attach.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/attach_add.png 
b/src/www/themes/funky-guy/images/ic/attach_add.png
new file mode 100644
index 0000000..9a19d50
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/attach_add.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/attach_delete.png 
b/src/www/themes/funky-guy/images/ic/attach_delete.png
new file mode 100644
index 0000000..988ca4a
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/attach_delete.png differ
diff --git a/src/www/themes/funky-guy/images/ic/attach_edit.png 
b/src/www/themes/funky-guy/images/ic/attach_edit.png
new file mode 100644
index 0000000..bc93c2e
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/attach_edit.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/btn_down.png 
b/src/www/themes/funky-guy/images/ic/btn_down.png
new file mode 100644
index 0000000..b50d7a7
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/btn_down.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/btn_up.png 
b/src/www/themes/funky-guy/images/ic/btn_up.png
new file mode 100644
index 0000000..95e0c59
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/btn_up.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/caret.png 
b/src/www/themes/funky-guy/images/ic/caret.png
new file mode 100644
index 0000000..b77ab98
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/caret.png differ
diff --git a/src/www/themes/funky-guy/images/ic/check.png 
b/src/www/themes/funky-guy/images/ic/check.png
new file mode 100644
index 0000000..9235e6d
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/check.png differ
diff --git a/src/www/themes/funky-guy/images/ic/close.png 
b/src/www/themes/funky-guy/images/ic/close.png
new file mode 100644
index 0000000..a581fed
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/close.png differ
diff --git a/src/www/themes/funky-guy/images/ic/configure.png 
b/src/www/themes/funky-guy/images/ic/configure.png
new file mode 100644
index 0000000..27b856a
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/configure.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/cvs16b.png 
b/src/www/themes/funky-guy/images/ic/cvs16b.png
new file mode 100644
index 0000000..b7550da
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/cvs16b.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/delete.png 
b/src/www/themes/funky-guy/images/ic/delete.png
new file mode 100644
index 0000000..6f97193
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/delete.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/directory-add.png 
b/src/www/themes/funky-guy/images/ic/directory-add.png
new file mode 100644
index 0000000..18a213b
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/directory-add.png differ
diff --git a/src/www/themes/funky-guy/images/ic/docman16b.png 
b/src/www/themes/funky-guy/images/ic/docman16b.png
new file mode 100644
index 0000000..d15ab2d
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/docman16b.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/download.png 
b/src/www/themes/funky-guy/images/ic/download.png
new file mode 100644
index 0000000..134c047
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/download.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/edit-file.png 
b/src/www/themes/funky-guy/images/ic/edit-file.png
new file mode 100644
index 0000000..997fdf5
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/edit-file.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/file-txt.png 
b/src/www/themes/funky-guy/images/ic/file-txt.png
new file mode 100644
index 0000000..d1b115a
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/file-txt.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/file_type_archive.png 
b/src/www/themes/funky-guy/images/ic/file_type_archive.png
new file mode 100644
index 0000000..c294ece
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/file_type_archive.png differ
diff --git a/src/www/themes/funky-guy/images/ic/folder.png 
b/src/www/themes/funky-guy/images/ic/folder.png
new file mode 100644
index 0000000..87466c6
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/folder.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/forum20g.png 
b/src/www/themes/funky-guy/images/ic/forum20g.png
new file mode 100644
index 0000000..495cae5
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/forum20g.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/forum_delete.png 
b/src/www/themes/funky-guy/images/ic/forum_delete.png
new file mode 100644
index 0000000..057ff39
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/forum_delete.png differ
diff --git a/src/www/themes/funky-guy/images/ic/forum_edit.png 
b/src/www/themes/funky-guy/images/ic/forum_edit.png
new file mode 100644
index 0000000..4f9cc50
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/forum_edit.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/forum_move.png 
b/src/www/themes/funky-guy/images/ic/forum_move.png
new file mode 100644
index 0000000..1c19558
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/forum_move.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/forum_pin.png 
b/src/www/themes/funky-guy/images/ic/forum_pin.png
new file mode 100644
index 0000000..b7ed7b3
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/forum_pin.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/forum_unpin.png 
b/src/www/themes/funky-guy/images/ic/forum_unpin.png
new file mode 100644
index 0000000..0b782b4
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/forum_unpin.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/ftp16b.png 
b/src/www/themes/funky-guy/images/ic/ftp16b.png
new file mode 100644
index 0000000..54c9e03
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/ftp16b.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/halfcheck.png 
b/src/www/themes/funky-guy/images/ic/halfcheck.png
new file mode 100644
index 0000000..82e4125
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/halfcheck.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/home16b.png 
b/src/www/themes/funky-guy/images/ic/home16b.png
new file mode 100644
index 0000000..1e1569a
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/home16b.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/mail-send.png 
b/src/www/themes/funky-guy/images/ic/mail-send.png
new file mode 100644
index 0000000..610bbc9
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/mail-send.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/mail16b.png 
b/src/www/themes/funky-guy/images/ic/mail16b.png
new file mode 100644
index 0000000..d16c5eb
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/mail16b.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/mail16w.png 
b/src/www/themes/funky-guy/images/ic/mail16w.png
new file mode 100644
index 0000000..9931f01
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/mail16w.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/manual16c.png 
b/src/www/themes/funky-guy/images/ic/manual16c.png
new file mode 100644
index 0000000..e644c81
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/manual16c.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/minus-16.png 
b/src/www/themes/funky-guy/images/ic/minus-16.png
new file mode 100644
index 0000000..7ce010f
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/minus-16.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/msg.png 
b/src/www/themes/funky-guy/images/ic/msg.png
new file mode 100644
index 0000000..9a041f9
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/msg.png differ
diff --git a/src/www/themes/funky-guy/images/ic/ofolder.png 
b/src/www/themes/funky-guy/images/ic/ofolder.png
new file mode 100644
index 0000000..dfae547
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/ofolder.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/package.png 
b/src/www/themes/funky-guy/images/ic/package.png
new file mode 100644
index 0000000..a94591d
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/package.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/pencil.png 
b/src/www/themes/funky-guy/images/ic/pencil.png
new file mode 100644
index 0000000..a8eae84
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/pencil.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/pointer_down.png 
b/src/www/themes/funky-guy/images/ic/pointer_down.png
new file mode 100644
index 0000000..85f0f7e
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/pointer_down.png differ
diff --git a/src/www/themes/funky-guy/images/ic/pointer_up.png 
b/src/www/themes/funky-guy/images/ic/pointer_up.png
new file mode 100644
index 0000000..82aa9d0
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/pointer_up.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/remove.png 
b/src/www/themes/funky-guy/images/ic/remove.png
new file mode 100644
index 0000000..87156af
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/remove.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/required.png 
b/src/www/themes/funky-guy/images/ic/required.png
new file mode 100644
index 0000000..5736248
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/required.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/rss.png 
b/src/www/themes/funky-guy/images/ic/rss.png
new file mode 100644
index 0000000..5854b56
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/rss.png differ
diff --git a/src/www/themes/funky-guy/images/ic/save.png 
b/src/www/themes/funky-guy/images/ic/save.png
new file mode 100644
index 0000000..a98aced
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/save.png differ
diff --git a/src/www/themes/funky-guy/images/ic/spinner.gif 
b/src/www/themes/funky-guy/images/ic/spinner.gif
new file mode 100644
index 0000000..dd92021
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/spinner.gif 
differ
diff --git a/src/www/themes/funky-guy/images/ic/startmonitor.png 
b/src/www/themes/funky-guy/images/ic/startmonitor.png
new file mode 100644
index 0000000..ca6af63
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/startmonitor.png differ
diff --git a/src/www/themes/funky-guy/images/ic/stop.png 
b/src/www/themes/funky-guy/images/ic/stop.png
new file mode 100644
index 0000000..51d6d36
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/stop.png differ
diff --git a/src/www/themes/funky-guy/images/ic/stopmonitor.png 
b/src/www/themes/funky-guy/images/ic/stopmonitor.png
new file mode 100644
index 0000000..b564213
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/stopmonitor.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/survey16b.png 
b/src/www/themes/funky-guy/images/ic/survey16b.png
new file mode 100644
index 0000000..085d0f0
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/survey16b.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/t.png 
b/src/www/themes/funky-guy/images/ic/t.png
new file mode 100644
index 0000000..8ee767e
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/t.png differ
diff --git a/src/www/themes/funky-guy/images/ic/t2.png 
b/src/www/themes/funky-guy/images/ic/t2.png
new file mode 100644
index 0000000..45ac855
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/t2.png differ
diff --git a/src/www/themes/funky-guy/images/ic/tag.png 
b/src/www/themes/funky-guy/images/ic/tag.png
new file mode 100644
index 0000000..0d84f0f
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/tag.png differ
diff --git a/src/www/themes/funky-guy/images/ic/taskman20g.png 
b/src/www/themes/funky-guy/images/ic/taskman20g.png
new file mode 100644
index 0000000..5b021eb
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/taskman20g.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/taskman20w.png 
b/src/www/themes/funky-guy/images/ic/taskman20w.png
new file mode 100644
index 0000000..5b021eb
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/taskman20w.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/ticket-closed.png 
b/src/www/themes/funky-guy/images/ic/ticket-closed.png
new file mode 100644
index 0000000..640e355
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/ticket-closed.png differ
diff --git a/src/www/themes/funky-guy/images/ic/ticket-open.png 
b/src/www/themes/funky-guy/images/ic/ticket-open.png
new file mode 100644
index 0000000..090800f
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/ticket-open.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/toggle_minus.png 
b/src/www/themes/funky-guy/images/ic/toggle_minus.png
new file mode 100644
index 0000000..0678dfc
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/ic/toggle_minus.png differ
diff --git a/src/www/themes/funky-guy/images/ic/toggle_plus.png 
b/src/www/themes/funky-guy/images/ic/toggle_plus.png
new file mode 100644
index 0000000..9aa376b
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/toggle_plus.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/tracker20g.png 
b/src/www/themes/funky-guy/images/ic/tracker20g.png
new file mode 100644
index 0000000..236a361
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/tracker20g.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/up-down-16.png 
b/src/www/themes/funky-guy/images/ic/up-down-16.png
new file mode 100644
index 0000000..c758b32
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/up-down-16.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/wiki20g.png 
b/src/www/themes/funky-guy/images/ic/wiki20g.png
new file mode 100644
index 0000000..76b16df
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/wiki20g.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/write16w.png 
b/src/www/themes/funky-guy/images/ic/write16w.png
new file mode 100644
index 0000000..2e6388c
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/write16w.png 
differ
diff --git a/src/www/themes/funky-guy/images/ic/xmail16w.png 
b/src/www/themes/funky-guy/images/ic/xmail16w.png
new file mode 100644
index 0000000..667a0d8
Binary files /dev/null and b/src/www/themes/funky-guy/images/ic/xmail16w.png 
differ
diff --git a/src/www/themes/funky-guy/images/layout/2-columns.png 
b/src/www/themes/funky-guy/images/layout/2-columns.png
new file mode 100644
index 0000000..148df03
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/layout/2-columns.png differ
diff --git a/src/www/themes/funky-guy/images/layout/3-columns.png 
b/src/www/themes/funky-guy/images/layout/3-columns.png
new file mode 100644
index 0000000..115aee4
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/layout/3-columns.png differ
diff --git a/src/www/themes/funky-guy/images/layout/custom.png 
b/src/www/themes/funky-guy/images/layout/custom.png
new file mode 100644
index 0000000..37f0e0e
Binary files /dev/null and b/src/www/themes/funky-guy/images/layout/custom.png 
differ
diff --git a/src/www/themes/funky-guy/images/layout/layouts.xcf 
b/src/www/themes/funky-guy/images/layout/layouts.xcf
new file mode 100644
index 0000000..79989bb
Binary files /dev/null and b/src/www/themes/funky-guy/images/layout/layouts.xcf 
differ
diff --git a/src/www/themes/funky-guy/images/layout/left.png 
b/src/www/themes/funky-guy/images/layout/left.png
new file mode 100644
index 0000000..242695d
Binary files /dev/null and b/src/www/themes/funky-guy/images/layout/left.png 
differ
diff --git a/src/www/themes/funky-guy/images/layout/right.png 
b/src/www/themes/funky-guy/images/layout/right.png
new file mode 100644
index 0000000..593db8c
Binary files /dev/null and b/src/www/themes/funky-guy/images/layout/right.png 
differ
diff --git a/src/www/themes/funky-guy/images/magnifier20.png 
b/src/www/themes/funky-guy/images/magnifier20.png
new file mode 100644
index 0000000..423cdba
Binary files /dev/null and b/src/www/themes/funky-guy/images/magnifier20.png 
differ
diff --git a/src/www/themes/funky-guy/images/plugin_status_broken.png 
b/src/www/themes/funky-guy/images/plugin_status_broken.png
new file mode 100644
index 0000000..94e1a5f
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/plugin_status_broken.png differ
diff --git a/src/www/themes/funky-guy/images/plugin_status_valid.png 
b/src/www/themes/funky-guy/images/plugin_status_valid.png
new file mode 100644
index 0000000..84d572b
Binary files /dev/null and 
b/src/www/themes/funky-guy/images/plugin_status_valid.png differ
diff --git a/src/www/themes/funky-guy/images/pointer_down.png 
b/src/www/themes/funky-guy/images/pointer_down.png
new file mode 100644
index 0000000..85f0f7e
Binary files /dev/null and b/src/www/themes/funky-guy/images/pointer_down.png 
differ
diff --git a/src/www/themes/funky-guy/images/pointer_right.png 
b/src/www/themes/funky-guy/images/pointer_right.png
new file mode 100644
index 0000000..bbb2a47
Binary files /dev/null and b/src/www/themes/funky-guy/images/pointer_right.png 
differ
diff --git a/src/www/themes/funky-guy/images/search-logo.png 
b/src/www/themes/funky-guy/images/search-logo.png
new file mode 100644
index 0000000..4e19d37
Binary files /dev/null and b/src/www/themes/funky-guy/images/search-logo.png 
differ
diff --git a/src/www/themes/funky-guy/images/spacer.gif 
b/src/www/themes/funky-guy/images/spacer.gif
new file mode 100644
index 0000000..2e94c53
Binary files /dev/null and b/src/www/themes/funky-guy/images/spacer.gif differ
diff --git a/src/www/themes/funky-guy/images/stop.png 
b/src/www/themes/funky-guy/images/stop.png
new file mode 100644
index 0000000..bc02226
Binary files /dev/null and b/src/www/themes/funky-guy/images/stop.png differ

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=f7f0efc6068aa8ad5e6271d2e05f5fc00bb5f321

commit f7f0efc6068aa8ad5e6271d2e05f5fc00bb5f321
Author: Guy Morin <guy@guy-90X3A>
Date:   Mon Mar 8 14:34:38 2021 +0100

    Forum pinning function

diff --git a/src/common/forum/ForumHTML.class.php 
b/src/common/forum/ForumHTML.class.php
index e0e921d..cdad1fe 100644
--- a/src/common/forum/ForumHTML.class.php
+++ b/src/common/forum/ForumHTML.class.php
@@ -143,6 +143,25 @@ function forum_header($params = array()) {
                        }
                        echo 
util_make_link('/forum/save.php?forum_id='.$forum_id.'&group_id='.$group_id,
                                                 html_image('ic/save.png') .' 
'._('Save Place')).' | ';
+                       // Link to pin or un pin a thread
+                       $thread_id = getIntFromRequest("thread_id");
+                       if (forge_check_perm('forum_admin', $f->Group->getID()) 
&& ($thread_id)) {
+                           if (getStringFromRequest('pin') !== 't') {
+                               if(ForumHTML::getIsPinned($thread_id)) {
+                                   $pin = 'f';
+                                   $pin_icon = 'forum_unpin';
+                                   $pin_text = _('Unpin this thread');
+                               } else {
+                                   $pin = 't';
+                                   $pin_icon = 'forum_pin';
+                                   $pin_text = _('Pin this thread');
+                               }
+                               echo 
util_make_link('/forum/forum.php?thread_id='.$thread_id
+                                   .'&forum_id='.$forum_id
+                                   .'&group_id='.$group_id
+                                   .'&pin='.$pin, 
html_image('ic/'.$pin_icon.'.png').' '.$pin_text).' | ';
+                           }
+                       }
                }
        } elseif ($f) {
                echo 
util_make_link('/forum/monitor.php?forum_id='.$forum_id.'&group_id='.$group_id.'&start=1',
 html_image('ic/mail16w.png').' '._('Monitor Forum')).' | ';
@@ -540,6 +559,22 @@ class ForumHTML extends FFError {
        }
 
        /**
+        * getIsPinned - to get is_pinned value from a thread
+        * 
+        * @param int $thread_id - thread id
+        * 
+        * @return boolean is_pinned - thread is pinned or not
+        */
+       public static function getIsPinned($thread_id) {
+           $is_pinned = false;
+           $result = db_query_params('SELECT is_pinned FROM forum WHERE 
thread_id=$1 AND is_pinned = \'t\'', array($thread_id));
+           if(db_numrows($result) > 0) {
+               $is_pinned = true;
+           }
+           return $is_pinned;
+       }
+       
+       /**
         * @param int $thread_id
         * @param int $is_followup_to
         * @param string $subject
diff --git a/src/common/forum/ForumMessage.class.php 
b/src/common/forum/ForumMessage.class.php
index 74615ac..56e1cac 100644
--- a/src/common/forum/ForumMessage.class.php
+++ b/src/common/forum/ForumMessage.class.php
@@ -197,7 +197,9 @@ class ForumMessage extends FFError {
 
 
                db_begin();
-               $result = db_query_params ('INSERT INTO forum 
(group_forum_id,posted_by,subject,body,post_date,is_followup_to,thread_id,most_recent_date)
 VALUES ($1,$2,$3,$4,$5,$6,$7,$8)',
+               $is_pinned = 'f';
+               if (ForumHTML::getIsPinned($thread_id)) $is_pinned = 't';
+               $result = db_query_params ('INSERT INTO forum 
(group_forum_id,posted_by,subject,body,post_date,is_followup_to,thread_id,most_recent_date,is_pinned)
 VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9)',
                                           array ($group_forum_id,
                                                  $posted_by,
                                                  htmlspecialchars($subject),
@@ -205,7 +207,8 @@ class ForumMessage extends FFError {
                                                  $post_date,
                                                  $is_followup_to,
                                                  $thread_id,
-                                                 $most_recent_date)) ;
+                                                 $most_recent_date,
+                                             $is_pinned)) ;
 
                if (!$result || db_affected_rows($result) < 1) {
                        $this->setError(_('Posting Failed').' '.db_error());
@@ -298,7 +301,9 @@ class ForumMessage extends FFError {
                        }
                }
 
-               $result = db_query_params ('INSERT INTO forum 
(group_forum_id,posted_by,subject,body,post_date,is_followup_to,thread_id,most_recent_date)
 VALUES ($1,$2,$3,$4,$5,$6,$7,$8)',
+        $is_pinned = 'f';
+        if(ForumHTML::getIsPinned($thread_id)) $is_pinned = 't';
+               $result = db_query_params ('INSERT INTO forum 
(group_forum_id,posted_by,subject,body,post_date,is_followup_to,thread_id,most_recent_date)
 VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9)',
                                           array ($this->Forum->getID(),
                                                  $user_id,
                                                  htmlspecialchars($subject),
@@ -306,7 +311,8 @@ class ForumMessage extends FFError {
                                                  $timestamp,
                                                  $is_followup_to,
                                                  $thread_id,
-                                                 $timestamp)) ;
+                                                 $timestamp,
+                                             $is_pinned)) ;
                if (!$result || db_affected_rows($result) < 1) {
                        $this->setError(_('Posting Failed').' '.db_error());
                        db_rollback();
diff --git a/src/db/20210308-forum-pinned-thread.sql 
b/src/db/20210308-forum-pinned-thread.sql
new file mode 100644
index 0000000..1abbf96
--- /dev/null
+++ b/src/db/20210308-forum-pinned-thread.sql
@@ -0,0 +1 @@
+ALTER TABLE forum ADD is_pinned BOOLEAN DEFAULT 'f'; 
diff --git a/src/www/forum/forum.php b/src/www/forum/forum.php
index cea5aba..984577c 100644
--- a/src/www/forum/forum.php
+++ b/src/www/forum/forum.php
@@ -46,6 +46,18 @@ $offset = getIntFromRequest('offset');
 $max_rows = getIntFromRequest('max_rows');
 $set = getStringFromRequest('set');
 
+if (forge_check_perm('forum_admin', $group_id) && ($thread_id)) {
+    $pin = getStringFromRequest('pin');
+    if($pin === 't' || $pin === 'f') {
+        db_query_params('UPDATE forum SET is_pinned=$1 WHERE thread_id=$2', 
array($pin,$thread_id));
+    }
+    if($pin === 't') {
+        unset($thread_id);
+        $feedback = 'Discussion épinglée';
+    }
+    unset($pin);
+}
+
 if ($forum_id) {
 
        if (!$group_id) {
@@ -307,15 +319,15 @@ if ($forum_id) {
                        This is the view that is most similar to the "Ultimate 
BB view"
                */
 
-               $result = db_query_params ('SELECT 
f.most_recent_date,users.user_name,users.realname,users.user_id,f.msg_id,f.subject,f.thread_id,
+               $result = db_query_params ('SELECT f2.is_pinned, 
f.most_recent_date,users.user_name,users.realname,users.user_id,f.msg_id,f.subject,f.thread_id,
                                                (count(f2.thread_id)-1) AS 
followups,max(f2.post_date) AS recent
                                                FROM forum f, forum f2, users
                                                WHERE f.group_forum_id=$1
                                                AND f.is_followup_to=0
                                                AND users.user_id=f.posted_by
                                                AND f.thread_id=f2.thread_id
-                                               GROUP BY 
f.most_recent_date,users.user_name,users.realname,users.user_id,f.msg_id,f.subject,f.thread_id
-                                               ORDER BY f.most_recent_date 
DESC',
+                                               GROUP BY 
f2.is_pinned,f.most_recent_date,users.user_name,users.realname,users.user_id,f.msg_id,f.subject,f.thread_id
+                                               ORDER BY f2.is_pinned 
DESC,f.most_recent_date DESC',
                                                array ($forum_id),
                                                $max_rows+1,
                                                $offset);
@@ -346,9 +358,13 @@ if ($forum_id) {
                                /*
                                                show the subject and poster
                                */
+                               $icon = $HTML->getFolderPic();
+                               if($row['is_pinned'] === 't') {
+                                   $icon = html_image('ic/forum_pin.png');
+                               }
                                $ret_val .= '<tr><td>'
                                        
.util_make_link('/forum/forum.php?thread_id='.$row['thread_id'].'&forum_id='.$forum_id.'&group_id='.$group_id,
-                                                       $HTML->getFolderPic().' 
'. $subject).'</td>'
+                                                       $icon.' '. 
$subject).'</td>'
                                        
.'<td>'.util_display_user($row['user_name'], $row['user_id'], 
$row['realname']).'</td>'.
                                        '<td>'. $row['followups'] .'</td>'.
                                        '<td>'. 
relative_date($row['recent']).'</td></tr>';
diff --git a/src/www/themes/funky-wOw/images/ic/forum_pin.png 
b/src/www/themes/funky-wOw/images/ic/forum_pin.png
new file mode 100644
index 0000000..b7ed7b3
Binary files /dev/null and b/src/www/themes/funky-wOw/images/ic/forum_pin.png 
differ
diff --git a/src/www/themes/funky-wOw/images/ic/forum_unpin.png 
b/src/www/themes/funky-wOw/images/ic/forum_unpin.png
new file mode 100644
index 0000000..0b782b4
Binary files /dev/null and b/src/www/themes/funky-wOw/images/ic/forum_unpin.png 
differ
diff --git a/src/www/themes/funky/images/ic/forum_pin.png 
b/src/www/themes/funky/images/ic/forum_pin.png
new file mode 100644
index 0000000..b7ed7b3
Binary files /dev/null and b/src/www/themes/funky/images/ic/forum_pin.png differ
diff --git a/src/www/themes/funky/images/ic/forum_unpin.png 
b/src/www/themes/funky/images/ic/forum_unpin.png
new file mode 100644
index 0000000..0b782b4
Binary files /dev/null and b/src/www/themes/funky/images/ic/forum_unpin.png 
differ

-----------------------------------------------------------------------

Summary of changes:
 src/CHANGES                                        |   2 +
 src/common/forum/ForumHTML.class.php               |  35 +
 src/common/forum/ForumMessage.class.php            |  14 +-
 src/db/20210308-forum-pinned-thread.sql            |   1 +
 src/www/forum/forum.php                            |  24 +-
 src/www/themes/{funky => funky-guy}/README.txt     |   0
 src/www/themes/funky-guy/Theme.class.php           | 393 +++++++++
 .../{funky => funky-guy}/css/theme-pages.css       |   0
 src/www/themes/funky-guy/css/theme.css             | 945 +++++++++++++++++++++
 src/www/themes/funky-guy/images/category.png       | Bin 0 -> 1899 bytes
 .../themes/{funky => funky-guy}/images/clear.png   | Bin
 .../images/docman/directory-with-documents.png     | Bin
 .../images/docman/document-reserved.png            | Bin
 .../images/docman/download-directory-zip.png       | Bin
 .../images/docman/enforce-document.png             | Bin
 .../images/docman/file_type_html.png               | Bin
 .../images/docman/file_type_image.png              | Bin
 .../images/docman/file_type_pdf.png                | Bin
 .../images/docman/file_type_presentation.png       | Bin
 .../images/docman/file_type_sound.png              | Bin
 .../images/docman/file_type_spreadsheet.png        | Bin
 .../images/docman/file_type_unknown.png            | Bin
 .../images/docman/file_type_writer.png             | Bin
 .../images/docman/move-document.png                | Bin
 .../images/docman/release-document.png             | Bin
 .../images/docman/reserve-document.png             | Bin
 .../images/docman/validate.png                     | Bin
 .../themes/funky-guy/images/header/header-logo.png | Bin 0 -> 4731 bytes
 src/www/themes/funky-guy/images/header/search.png  | Bin 0 -> 351 bytes
 .../themes/funky-guy/images/header/select_down.png | Bin 0 -> 164 bytes
 src/www/themes/funky-guy/images/ic/acl_roles20.png | Bin 0 -> 1069 bytes
 .../{funky => funky-guy}/images/ic/add-16.png      | Bin
 src/www/themes/funky-guy/images/ic/add.png         | Bin 0 -> 1119 bytes
 .../{funky => funky-guy}/images/ic/attach.png      | Bin
 .../{funky => funky-guy}/images/ic/attach_add.png  | Bin
 .../images/ic/attach_delete.png                    | Bin
 .../{funky => funky-guy}/images/ic/attach_edit.png | Bin
 .../{funky => funky-guy}/images/ic/btn_down.png    | Bin
 .../{funky => funky-guy}/images/ic/btn_up.png      | Bin
 .../{funky => funky-guy}/images/ic/caret.png       | Bin
 src/www/themes/funky-guy/images/ic/check.png       | Bin 0 -> 650 bytes
 .../{funky => funky-guy}/images/ic/close.png       | Bin
 src/www/themes/funky-guy/images/ic/configure.png   | Bin 0 -> 1210 bytes
 src/www/themes/funky-guy/images/ic/cvs16b.png      | Bin 0 -> 666 bytes
 src/www/themes/funky-guy/images/ic/delete.png      | Bin 0 -> 1179 bytes
 .../images/ic/directory-add.png                    | Bin
 .../{funky => funky-guy}/images/ic/docman16b.png   | Bin
 .../{funky => funky-guy}/images/ic/download.png    | Bin
 .../{funky => funky-guy}/images/ic/edit-file.png   | Bin
 .../{funky => funky-guy}/images/ic/file-txt.png    | Bin
 .../images/ic/file_type_archive.png                | Bin
 .../{funky => funky-guy}/images/ic/folder.png      | Bin
 src/www/themes/funky-guy/images/ic/forum20g.png    | Bin 0 -> 993 bytes
 .../images/ic/forum_delete.png                     | Bin
 .../{funky => funky-guy}/images/ic/forum_edit.png  | Bin
 .../{funky => funky-guy}/images/ic/forum_move.png  | Bin
 src/www/themes/funky-guy/images/ic/forum_pin.png   | Bin 0 -> 652 bytes
 src/www/themes/funky-guy/images/ic/forum_unpin.png | Bin 0 -> 664 bytes
 src/www/themes/funky-guy/images/ic/ftp16b.png      | Bin 0 -> 983 bytes
 .../{funky => funky-guy}/images/ic/halfcheck.png   | Bin
 src/www/themes/funky-guy/images/ic/home16b.png     | Bin 0 -> 1128 bytes
 .../{funky => funky-guy}/images/ic/mail-send.png   | Bin
 src/www/themes/funky-guy/images/ic/mail16b.png     | Bin 0 -> 796 bytes
 src/www/themes/funky-guy/images/ic/mail16w.png     | Bin 0 -> 796 bytes
 src/www/themes/funky-guy/images/ic/manual16c.png   | Bin 0 -> 508 bytes
 .../{funky => funky-guy}/images/ic/minus-16.png    | Bin
 .../themes/{funky => funky-guy}/images/ic/msg.png  | Bin
 .../{funky => funky-guy}/images/ic/ofolder.png     | Bin
 .../{funky => funky-guy}/images/ic/package.png     | Bin
 src/www/themes/funky-guy/images/ic/pencil.png      | Bin 0 -> 875 bytes
 .../images/ic}/pointer_down.png                    | Bin
 .../{funky => funky-guy}/images/ic/pointer_up.png  | Bin
 .../{funky => funky-guy}/images/ic/remove.png      | Bin
 .../{funky => funky-guy}/images/ic/required.png    | Bin
 .../themes/{funky => funky-guy}/images/ic/rss.png  | Bin
 src/www/themes/funky-guy/images/ic/save.png        | Bin 0 -> 921 bytes
 .../{funky => funky-guy}/images/ic/spinner.gif     | Bin
 .../images/ic/startmonitor.png                     | Bin
 .../themes/{funky => funky-guy}/images/ic/stop.png | Bin
 .../{funky => funky-guy}/images/ic/stopmonitor.png | Bin
 src/www/themes/funky-guy/images/ic/survey16b.png   | Bin 0 -> 1046 bytes
 .../themes/{funky => funky-guy}/images/ic/t.png    | Bin
 .../themes/{funky => funky-guy}/images/ic/t2.png   | Bin
 .../themes/{funky => funky-guy}/images/ic/tag.png  | Bin
 .../{funky => funky-guy}/images/ic/taskman20g.png  | Bin
 .../{funky => funky-guy}/images/ic/taskman20w.png  | Bin
 .../images/ic/ticket-closed.png                    | Bin
 .../{funky => funky-guy}/images/ic/ticket-open.png | Bin
 .../images/ic/toggle_minus.png                     | Bin
 .../{funky => funky-guy}/images/ic/toggle_plus.png | Bin
 .../{funky => funky-guy}/images/ic/tracker20g.png  | Bin
 .../{funky => funky-guy}/images/ic/up-down-16.png  | Bin
 .../{funky => funky-guy}/images/ic/wiki20g.png     | Bin
 src/www/themes/funky-guy/images/ic/write16w.png    | Bin 0 -> 977 bytes
 src/www/themes/funky-guy/images/ic/xmail16w.png    | Bin 0 -> 1187 bytes
 .../images/layout/2-columns.png                    | Bin
 .../images/layout/3-columns.png                    | Bin
 .../{funky => funky-guy}/images/layout/custom.png  | Bin
 .../{funky => funky-guy}/images/layout/layouts.xcf | Bin
 .../{funky => funky-guy}/images/layout/left.png    | Bin
 .../{funky => funky-guy}/images/layout/right.png   | Bin
 .../{funky => funky-guy}/images/magnifier20.png    | Bin
 .../funky-guy/images/plugin_status_broken.png      | Bin 0 -> 24416 bytes
 .../funky-guy/images/plugin_status_valid.png       | Bin 0 -> 18356 bytes
 .../{funky => funky-guy}/images/pointer_down.png   | Bin
 .../{funky => funky-guy}/images/pointer_right.png  | Bin
 .../{funky => funky-guy}/images/search-logo.png    | Bin
 .../themes/{funky => funky-guy}/images/spacer.gif  | Bin
 src/www/themes/funky-guy/images/stop.png           | Bin 0 -> 3634 bytes
 src/www/themes/funky-wOw/images/ic/forum_pin.png   | Bin 0 -> 652 bytes
 src/www/themes/funky-wOw/images/ic/forum_unpin.png | Bin 0 -> 664 bytes
 src/www/themes/funky/images/ic/forum_pin.png       | Bin 0 -> 652 bytes
 src/www/themes/funky/images/ic/forum_unpin.png     | Bin 0 -> 664 bytes
 113 files changed, 1406 insertions(+), 8 deletions(-)
 create mode 100644 src/db/20210308-forum-pinned-thread.sql
 copy src/www/themes/{funky => funky-guy}/README.txt (100%)
 create mode 100644 src/www/themes/funky-guy/Theme.class.php
 copy src/www/themes/{funky => funky-guy}/css/theme-pages.css (100%)
 create mode 100644 src/www/themes/funky-guy/css/theme.css
 create mode 100644 src/www/themes/funky-guy/images/category.png
 copy src/www/themes/{funky => funky-guy}/images/clear.png (100%)
 copy src/www/themes/{funky => 
funky-guy}/images/docman/directory-with-documents.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/document-reserved.png 
(100%)
 copy src/www/themes/{funky => 
funky-guy}/images/docman/download-directory-zip.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/enforce-document.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/file_type_html.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/file_type_image.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/file_type_pdf.png (100%)
 copy src/www/themes/{funky => 
funky-guy}/images/docman/file_type_presentation.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/file_type_sound.png 
(100%)
 copy src/www/themes/{funky => 
funky-guy}/images/docman/file_type_spreadsheet.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/file_type_unknown.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/file_type_writer.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/move-document.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/release-document.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/reserve-document.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/docman/validate.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/header/header-logo.png
 create mode 100644 src/www/themes/funky-guy/images/header/search.png
 create mode 100644 src/www/themes/funky-guy/images/header/select_down.png
 create mode 100644 src/www/themes/funky-guy/images/ic/acl_roles20.png
 copy src/www/themes/{funky => funky-guy}/images/ic/add-16.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/add.png
 copy src/www/themes/{funky => funky-guy}/images/ic/attach.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/attach_add.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/attach_delete.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/attach_edit.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/btn_down.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/btn_up.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/caret.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/check.png
 copy src/www/themes/{funky => funky-guy}/images/ic/close.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/configure.png
 create mode 100644 src/www/themes/funky-guy/images/ic/cvs16b.png
 create mode 100644 src/www/themes/funky-guy/images/ic/delete.png
 copy src/www/themes/{funky => funky-guy}/images/ic/directory-add.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/docman16b.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/download.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/edit-file.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/file-txt.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/file_type_archive.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/folder.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/forum20g.png
 copy src/www/themes/{funky => funky-guy}/images/ic/forum_delete.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/forum_edit.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/forum_move.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/forum_pin.png
 create mode 100644 src/www/themes/funky-guy/images/ic/forum_unpin.png
 create mode 100644 src/www/themes/funky-guy/images/ic/ftp16b.png
 copy src/www/themes/{funky => funky-guy}/images/ic/halfcheck.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/home16b.png
 copy src/www/themes/{funky => funky-guy}/images/ic/mail-send.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/mail16b.png
 create mode 100644 src/www/themes/funky-guy/images/ic/mail16w.png
 create mode 100644 src/www/themes/funky-guy/images/ic/manual16c.png
 copy src/www/themes/{funky => funky-guy}/images/ic/minus-16.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/msg.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/ofolder.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/package.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/pencil.png
 copy src/www/themes/{funky/images => funky-guy/images/ic}/pointer_down.png 
(100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/pointer_up.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/remove.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/required.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/rss.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/save.png
 copy src/www/themes/{funky => funky-guy}/images/ic/spinner.gif (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/startmonitor.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/stop.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/stopmonitor.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/survey16b.png
 copy src/www/themes/{funky => funky-guy}/images/ic/t.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/t2.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/tag.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/taskman20g.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/taskman20w.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/ticket-closed.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/ticket-open.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/toggle_minus.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/toggle_plus.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/tracker20g.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/up-down-16.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/ic/wiki20g.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/ic/write16w.png
 create mode 100644 src/www/themes/funky-guy/images/ic/xmail16w.png
 copy src/www/themes/{funky => funky-guy}/images/layout/2-columns.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/layout/3-columns.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/layout/custom.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/layout/layouts.xcf (100%)
 copy src/www/themes/{funky => funky-guy}/images/layout/left.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/layout/right.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/magnifier20.png (100%)
 create mode 100644 src/www/themes/funky-guy/images/plugin_status_broken.png
 create mode 100644 src/www/themes/funky-guy/images/plugin_status_valid.png
 copy src/www/themes/{funky => funky-guy}/images/pointer_down.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/pointer_right.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/search-logo.png (100%)
 copy src/www/themes/{funky => funky-guy}/images/spacer.gif (100%)
 create mode 100644 src/www/themes/funky-guy/images/stop.png
 create mode 100644 src/www/themes/funky-wOw/images/ic/forum_pin.png
 create mode 100644 src/www/themes/funky-wOw/images/ic/forum_unpin.png
 create mode 100644 src/www/themes/funky/images/ic/forum_pin.png
 create mode 100644 src/www/themes/funky/images/ic/forum_unpin.png


hooks/post-receive
-- 
FusionForge

_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits

Reply via email to