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  6a0a69204fbf3416f499065721d31783a07dc19c (commit)
       via  fa372dd85176ac90b446a5fd1e4796f3b69c38b0 (commit)
       via  265e4983a0aad79e7dec3008a7e8a9401a63c31a (commit)
       via  f6d6c1937f494159ff928131c9db95eb192c6aa4 (commit)
       via  31365c20b5afcdf38b85f472b7e8df19e158b41b (commit)
       via  e7cd36827e505cd727e73c8d4d82a45cec5c8606 (commit)
       via  b85125593a617da004a230239402cc087ecf2199 (commit)
       via  14b6c687b26446e32f7405c78c21b4252d437b0c (commit)
       via  e46751b4758150644c4b91645e37ea6d2a0db895 (commit)
       via  b0621ee14a25c1099f8be74b5649cb0c95c99e09 (commit)
       via  62af65ec0e683dd2a184a9c91fc233a44f0c3abb (commit)
       via  0fef2ed80879207d42a355f3c98ad4c2a1514185 (commit)
       via  0242ab86d1fe0a530e5fcb2b24dfc8923b11c1b6 (commit)
      from  881fbf6803a19152d082f0580a192ad1e6a9bbad (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=6a0a69204fbf3416f499065721d31783a07dc19c

commit 6a0a69204fbf3416f499065721d31783a07dc19c
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 18 20:46:05 2015 +0200

    implement db_images as logo and initial display in widget Project 
description

diff --git a/src/common/include/Group.class.php 
b/src/common/include/Group.class.php
index 61bb4b8..8334869 100644
--- a/src/common/include/Group.class.php
+++ b/src/common/include/Group.class.php
@@ -490,7 +490,7 @@ class Group extends Error {
         * @param bool  $use_docman
         * @param string        $new_doc_address
         * @param bool  $send_all_docs
-        * @param int   $logo_image_id
+        * @param int   $logo_image_id XXXX UNUSED XXXX -> see getLogoImageID 
function
         * @param bool  $use_ftp
         * @param bool  $use_tracker
         * @param bool  $use_frs
@@ -585,7 +585,6 @@ class Group extends Error {
 
                db_begin();
 
-               //XXX not yet actived logo_image_id='$logo_image_id',
                $res = db_query_params('UPDATE groups
                        SET group_name=$1,
                                homepage=$2,
@@ -920,6 +919,15 @@ class Group extends Error {
         * @return      int     The ID of logo image in db_images table (or 100 
if none).
         */
        function getLogoImageID() {
+               if (!isset($this->data_array['logo_image_id'])) {
+                       $res = db_query_params('select id from db_images where 
group_id = $1 and is_logo = $2',
+                                               array($this->getID(), 1));
+                       if ($res && db_numrows($res)) {
+                               $this->data_array['logo_image_id'] = 
db_result($res, 0, 'id');
+                       } else {
+                               $this->data_array['logo_image_id'] = null;
+                       }
+               }
                return $this->data_array['logo_image_id'];
        }
 
@@ -1769,7 +1777,7 @@ class Group extends Error {
                        db_rollback();
                        return false;
                }
- 
+
                for ($i=0; $i<db_numrows($res); $i++) {
                        $Forum = new 
Forum($news_group,db_result($res,$i,'forum_id'));
                        if (!$Forum->delete(1,1)) {
@@ -1777,7 +1785,7 @@ class Group extends Error {
                                return false;
                        }
                }
-      
+
      // Delete news forums in group itself
       for ($i = 0; $i < db_numrows($res); $i++) {
          $Forum = new Forum($this, db_result($res, $i, 'forum_id'));
diff --git a/src/common/widget/Widget_ProjectDescription.class.php 
b/src/common/widget/Widget_ProjectDescription.class.php
index 7b09713..f42fe59 100644
--- a/src/common/widget/Widget_ProjectDescription.class.php
+++ b/src/common/widget/Widget_ProjectDescription.class.php
@@ -1,6 +1,7 @@
 <?php
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
+ * Copyright 2015, Franck Villaume - TrivialDev
  *
  * This file is a part of Fusionforge.
  *
@@ -35,8 +36,9 @@ class Widget_ProjectDescription extends Widget {
        }
 
        public function getContent() {
+               global $HTML;
                $result = '';
-               
+
                $request =& HTTPRequest::instance();
                $group_id = $request->get('group_id');
                $pm = ProjectManager::instance();
@@ -47,12 +49,16 @@ class Widget_ProjectDescription extends Widget {
                        $project_description = $project->getDescription();
                        if ($project_description) {
                                // need to use a litteral version for content 
attribute since nl2br is for HTML
-                               $result .= "<p>"
-                                       .'<span property="doap:description" 
content="'. preg_quote($project_description,'"') .'">'
+                               $result .= "<p>";
+                               if (forge_get_config('use_project_multimedia')) 
{
+
+                                       $result .= '<span><img 
src="/dbimage.php?id='.$project->getLogoImageID().'" width="40" height="40" 
/></span>';
+                               }
+                               $result .= '<span property="doap:description" 
content="'. preg_quote($project_description,'"') .'">'
                                        . nl2br($project_description)
                                        .'</span></p>';
                        } else {
-                               $result .= "<p>" . _('This project has not yet 
submitted a description.') . '</p>';
+                               $result .= $HTML->information(_('This project 
has not yet submitted a description.'));
                        }
                }
 
diff --git a/src/db/20150914-db_images-logo.sql 
b/src/db/20150914-db_images-logo.sql
new file mode 100644
index 0000000..4289fd4
--- /dev/null
+++ b/src/db/20150914-db_images-logo.sql
@@ -0,0 +1 @@
+alter table db_images add column is_logo integer default 0;
diff --git a/src/www/project/admin/editimages.php 
b/src/www/project/admin/editimages.php
index f49eeee..663f2a5 100644
--- a/src/www/project/admin/editimages.php
+++ b/src/www/project/admin/editimages.php
@@ -30,12 +30,14 @@ require_once '../../env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfwww.'project/admin/project_admin_utils.php';
 
+global $HTML;
+
 if (!forge_get_config('use_project_multimedia')) {
        exit_disabled();
 }
 
 $group_id = getIntFromRequest('group_id');
-session_require_perm ('project_admin', $group_id) ;
+session_require_perm('project_admin', $group_id);
 
 function check_file_size($size) {
        global $error_msg;
@@ -44,12 +46,12 @@ function check_file_size($size) {
                return true;
        } else {
                //too big or small
-               $error_msg .= _('Error: file must be > 20 bytes and < 256000 
bytes in length').' <br />';
+               $error_msg .= _('Error')._(': ')._('file must be > 20 bytes and 
< 256000 bytes in length').' <br />';
                return false;
        }
 }
 
-function store_file($id, $input_file) {
+function store_file($id, $input_file, $is_logo) {
        global $group_id;
        global $description;
        global $feedback;
@@ -71,33 +73,33 @@ function store_file($id, $input_file) {
                $width = ((!$width) ? "0" : $width);
                $height = ((!$height) ? "0" : $height);
                if (!$id) {
-                       $res = db_query_params("INSERT INTO db_images
-                              (group_id,description,bin_data,
-                              filename, filesize, filetype,
-                              width,height,upload_date,version)
-                              VALUES
-                              ($1, $2, $3, $4, $5, $6, $7, $8, $9, 1)",
-                              array($group_id, $description, $data, 
$input_file['name'],
-                              $size, $input_file['type'], $width, $height, 
$curtime));
+                       $res = db_query_params('INSERT INTO db_images
+                               (group_id,description,bin_data,
+                               filename, filesize, filetype,
+                               width,height,upload_date,version,is_logo)
+                               VALUES
+                               ($1, $2, $3, $4, $5, $6, $7, $8, $9, 1, $10)',
+                               array($group_id, $description, $data, 
$input_file['name'],
+                               $size, $input_file['type'], $width, $height, 
$curtime, $is_logo));
                } else {
-                       $res = db_query_params("UPDATE db_images
-                                         SET description=$1,
-                                          bin_data=$2,
-                                          filename=$3,
-                                          filesize=$4,
-                                          filetype=$5,
-                                          width=$6,
-                                          height=$7,
-                                          upload_date=$8,
-                                          version=version+1
-                                         WHERE group_id=$9
-                                         AND id=$10",
-                                         array($description, $data, 
$input_file['name'], $size,
-                                         $input_file['type'], $width, $height, 
$curtime, $group_id, $id));
+                       $res = db_query_params('UPDATE db_images
+                                               SET description=$1,
+                                               bin_data=$2,
+                                               filename=$3,
+                                               filesize=$4,
+                                               filetype=$5,
+                                               width=$6,
+                                               height=$7,
+                                               upload_date=$8,
+                                               version=version+1
+                                               WHERE group_id=$9
+                                               AND id=$10',
+                                               array($description, $data, 
$input_file['name'], $size,
+                                               $input_file['type'], $width, 
$height, $curtime, $group_id, $id));
                }
 
                if (!$res || db_affected_rows($res) < 1) {
-                       $error_msg .= _('Error: Cannot store multimedia file: 
').db_error();
+                       $error_msg .= _('Error')._(': ')._('Cannot store 
multimedia file')._(':').db_error();
                } else {
                        $feedback .= _('Multimedia File Uploaded');
                }
@@ -109,8 +111,7 @@ if (getStringFromRequest('submit')) {
        $id = getIntFromRequest('id');
        $description = getStringFromRequest('description');
        $filetype = getStringFromRequest('filetype');
-
-
+       $is_logo = getIntFromRequest('is_logo');
 
        if (getStringFromRequest('add')) {
                if (!util_check_fileupload($input_file['tmp_name'])) {
@@ -122,7 +123,7 @@ if (getStringFromRequest('submit')) {
                        //see if they have too many data in the system
                        $res = db_query_params('SELECT sum(filesize) from 
db_images WHERE group_id=$1', array($group_id));
                        if (db_result($res, 0, 'sum') < $QUOTA) {
-                               store_file(0, $input_file);
+                               store_file(0, $input_file, $is_logo);
                        } else {
                                $error_msg .= ' Sorry - you are over your 
'.$QUOTA.' quota ';
                        }
@@ -143,20 +144,21 @@ if (getStringFromRequest('submit')) {
                } else {
                        if (!$input_file['tmp_name']) {
 
-                               // Just replace description/mime type
-
+                               // Just replace description/mime type/is_logo
                                $res = db_query_params ('UPDATE db_images
-                                                       SET description=$1,
-                                                       filetype=$2
-                                                       WHERE group_id=$3
-                                                       AND id=$4 ',
+                                                       SET description = $1,
+                                                       filetype = $2,
+                                                       is_logo = $3
+                                                       WHERE group_id = $4
+                                                       AND id = $5 ',
                                                        array($description,
                                                                $filetype,
+                                                               $is_logo,
                                                                $group_id,
                                                                $id));
 
                                if (!$res || db_affected_rows($res) < 1) {
-                                       $error_msg .= _('Error: Cannot update 
multimedia file').db_error();
+                                       $error_msg .= _('Error')._(': 
')._('Cannot update multimedia file')._(': ').db_error();
                                } else {
                                        $feedback .= _('Multimedia File 
Properties Updated');
                                }
@@ -200,7 +202,8 @@ echo '
 
 $mode = getStringFromGet("mode");
 if ($mode == "edit") {
-       $result=db_query_params ('      SELECT *
+       $id = getIntFromRequest('id');
+       $result = db_query_params ('    SELECT *
                                FROM db_images
                                WHERE group_id=$1
                                AND id=$2',
@@ -208,14 +211,14 @@ if ($mode == "edit") {
                                $id));
 
        if (!$result || db_numrows($result)!=1) {
-               $feedback .= "Cannot edit multimedia file<br />";
+               $feedback .= _('Cannot edit multimedia file');
                project_admin_footer();
                exit();
        }
 
-       echo '<h4>'._('Edit Multimedia Data').'</h4>
-       <form action="'. getStringFromServer('PHP_SELF') .'" method="post" 
enctype="multipart/form-data">
-       <input type="hidden" name="group_id" value="'.$group_id.'" />
+       echo '<h4>'._('Edit Multimedia Data').'</h4>';
+       echo $HTML->openForm(array('action' => getStringFromServer('PHP_SELF'), 
'method' => 'post', 'enctype' => 'multipart/form-data'));
+       echo '<input type="hidden" name="group_id" value="'.$group_id.'" />
        <input type="hidden" name="id" value="'.$id.'" />
 
        <strong>'._('Replace with new file (optional)')._(':').'</strong><br />
@@ -223,50 +226,53 @@ if ($mode == "edit") {
        <p>
 
        <strong>'._('Description')._(':').'</strong><br />
-       <input type="text" name="description" size="40" maxlength="255" 
value="'.db_result($result,$i,'description').'" />
+       <input type="text" name="description" size="40" maxlength="255" 
value="'.db_result($result, 0, 'description').'" />
        </p>
        <p>
        <strong>'._('MIME Type')._(':').'</strong><br />
-       <input type="text" name="filetype" size="40" maxlength="255" 
value="'.db_result($result,$i,'filetype').'" />
+       <input type="text" name="filetype" size="40" maxlength="255" 
value="'.db_result($result, 0, 'filetype').'" />
        </p>
+       <p>'._('Select as logo').'<input type="checkbox" name="is_logo" 
value="1" '.(db_result($result, 0, 'is_logo')? 'checked="checked"' : '').'" 
/></p>
        <input type="hidden" name="edit" value="1" />
 
        <input type="submit" value="'._('Submit').'" name="submit" />
-       <input type="reset" value="'._('Reset').'" /><br />
-       </form>
-       ';
+       <input type="reset" value="'._('Reset').'" /><br />';
+       echo $HTML->closeForm();
 } else {
-       $result=db_query_params ('      SELECT *
+       $result=db_query_params ('SELECT *
                                FROM db_images
                                WHERE group_id=$1
                                ORDER BY id',
-                       array($group_id));
+                               array($group_id));
 
-       echo '<h4>'._('Add Multimedia Data').'</h4>
-       <form action="'. getStringFromServer('PHP_SELF') .'" method="post" 
enctype="multipart/form-data">
-       <input type="hidden" name="group_id" value="'.$group_id.'" />
+       echo '<h4>'._('Add Multimedia Data').'</h4>';
+       echo $HTML->openForm(array('action' => getStringFromServer('PHP_SELF'), 
'method' => 'post', 'enctype' => 'multipart/form-data'));
+       echo '<input type="hidden" name="group_id" value="'.$group_id.'" />
        <strong>'._('Local 
filename').utils_requiredField()._(':').'</strong><br />
        <input type="file" required="required" name="input_file" />
        <p>
        <strong>'._('Description').utils_requiredField()._(':').'</strong><br />
-       <input type="text" required="required" name="description" size="40" 
maxlength="255" /></p><p>
+       <input type="text" required="required" name="description" size="40" 
maxlength="255" /></p>
+       <p>
+       '._('Select as logo').'<input type="checkbox" name="is_logo" value="1" 
/></p>
+       <p>
        <input type="hidden" name="add" value="1" />
-       <input type="submit" value="'._('Add File').'" name="submit" /></p>
-       </form>
-       ';
+       <input type="submit" value="'._('Add File').'" name="submit" /></p>';
+       echo $HTML->closeForm();
 }
 
 $arr=array();
-$arr[]=_('Edit');
-$arr[]=_('Id');
-$arr[]=_('Uploaded');
-$arr[]=_('Name');
-$arr[]=_('MIME Type');
-$arr[]=_('Size');
-$arr[]=_('Dims');
-$arr[]=_('Description');
-
-echo $GLOBALS['HTML']->listTableTop($arr);
+$arr[] = _('Edit');
+$arr[] = _('Id');
+$arr[] = _('Uploaded');
+$arr[] = _('Name');
+$arr[] = _('MIME Type');
+$arr[] = _('Size');
+$arr[] = _('Dims');
+$arr[] = _('Description');
+$arr[] = _('Used as Project Logo');
+
+echo $HTML->listTableTop($arr);
 
 $rows=db_numrows($result);
 for ($i=0; $i<$rows; $i++) {
@@ -281,29 +287,26 @@ for ($i=0; $i<$rows; $i++) {
        }
 
        echo '
-       <tr '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'>'
+       <tr '. $HTML->boxGetAltRowStyle($i) .'>'
        .'<td class="align-center">'
-        .'<a href="'. getStringFromServer('PHP_SELF') 
.'?submit=1&amp;group_id='.$group_id.'&amp;remove=1&amp;id='
-        .db_result($result,$i,'id').'">'
-        .'['._('Del').']'.'</a>'
-        .'<a href="'. getStringFromServer('PHP_SELF') 
.'?submit=1&amp;group_id='.$group_id.'&amp;mode=edit&amp;id='
-        .db_result($result,$i,'id').'"> '
-        .'['._('Edit').']'.'</a>'
+        
.util_make_link(getStringFromServer('PHP_SELF').'?submit=1&group_id='.$group_id.'&remove=1&id='.db_result($result,$i,'id'),
 '['._('Del').']')
+        
.util_make_link(getStringFromServer('PHP_SELF').'?&group_id='.$group_id.'&mode=edit&id='.db_result($result,$i,'id'),
 '['._('Edit').']')
        .'</td>'
 
        .'<td>'.db_result($result,$i,'id').'</td>'
 
        .'<td>'.date('Y-m-d', db_result($result, $i, 'upload_date')).'</td>'
 
-       .'<td>'.util_make_link ('/dbimage.php?id='.db_result($result,$i,'id'), 
db_result($result,$i,'filename')).'</td>'
+       .'<td>'.util_make_link('/dbimage.php?id='.db_result($result,$i,'id'), 
db_result($result,$i,'filename')).'</td>'
        .'<td>'.db_result($result,$i,'filetype').'</td>'
-       .'<td class="align-right">'.db_result($result,$i,'filesize').'</td>'
-       .'<td class="align-right">'.$dims.'</td>'
+       .'<td>'.db_result($result,$i,'filesize').'</td>'
+       .'<td>'.$dims.'</td>'
        .'<td>'.db_result($result,$i,'description').'</td>'
+       .'<td>'.(db_result($result,$i,'is_logo')? _('Yes'): '').'</td>'
        .'</tr>';
 }
 
-echo $GLOBALS['HTML']->listTableBottom();
+echo $HTML->listTableBottom();
 
 project_admin_footer();
 

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

commit fa372dd85176ac90b446a5fd1e4796f3b69c38b0
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 18 20:34:38 2015 +0200

    widget Project Public Area: fix commit 
a496f1c4a60f5ec548949d9dacd36145556e8326. html result overwritten by db_query

diff --git a/src/common/widget/Widget_ProjectPublicAreas.class.php 
b/src/common/widget/Widget_ProjectPublicAreas.class.php
index 543b52d..405cd35 100644
--- a/src/common/widget/Widget_ProjectPublicAreas.class.php
+++ b/src/common/widget/Widget_ProjectPublicAreas.class.php
@@ -37,7 +37,7 @@ class Widget_ProjectPublicAreas extends Widget {
 
        function getContent() {
                $result = '';
-               
+
                $request =& HTTPRequest::instance();
                $group_id = $request->get('group_id');
                $pm = ProjectManager::instance();
@@ -58,7 +58,7 @@ class Widget_ProjectPublicAreas extends Widget {
                        $link_content = $HTML->getFollowPic(_('Tracker')) . ' ' 
. _('Tracker');
                        $result .= util_make_link('/tracker/?group_id=' . 
$group_id, $link_content);
 
-                       $result=db_query_params ('SELECT 
agl.*,aca.count,aca.open_count
+                       $res = db_query_params ('SELECT 
agl.*,aca.count,aca.open_count
                                        FROM artifact_group_list agl
                                        LEFT JOIN artifact_counts_agg aca USING 
(group_artifact_id)
                                        WHERE agl.group_id=$1
@@ -66,7 +66,7 @@ class Widget_ProjectPublicAreas extends Widget {
                                        array($group_id));
 
                        $rows = array();
-                       while ($row = db_fetch_array($result)) {
+                       while ($row = db_fetch_array($res)) {
                                if 
(!forge_check_perm('tracker',$row['group_artifact_id'],'read')) {
                                        continue;
                                }

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

commit 265e4983a0aad79e7dec3008a7e8a9401a63c31a
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 18 19:44:56 2015 +0200

    use HTML helpers, remove PHP_SELF

diff --git a/src/www/news/admin/index.php b/src/www/news/admin/index.php
index 8a2a046..8c3546d 100644
--- a/src/www/news/admin/index.php
+++ b/src/www/news/admin/index.php
@@ -5,6 +5,7 @@
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2002-2004 (c) GForge Team
  * Copyright (C) 2010 Alain Peyrat - Alcatel-Lucent
+ * Copyright 2015, Franck Villaume
  * http://fusionforge.org/
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -117,15 +118,14 @@ if ($group_id && $group_id != 
forge_get_config('news_group')) {
                $group = group_get_object($group_id);
 
                echo notepad_func();
-               echo '
-               <form id="newsadminform" 
action="'.getStringFromServer('PHP_SELF').'" method="post">
-               <input type="hidden" name="group_id" 
value="'.db_result($result,0,'group_id').'" />
+               echo $HTML->openForm(array('id' => 'newsadminform', 'action' => 
'/news/admin/', 'method' => 'post'));
+               echo '<input type="hidden" name="group_id" 
value="'.db_result($result,0,'group_id').'" />
                <input type="hidden" name="id" 
value="'.db_result($result,0,'id').'" />';
 
                $user = user_get_object(db_result($result,0,'submitted_by'));
 
                echo '
-               <strong>'._('Submitted by')._(':').'</strong> 
'.$user->getRealName().'<br />
+               <strong>'._('Submitted by')._(': ').'</strong> 
'.$user->getRealName().'<br />
                <input type="hidden" name="approve" value="y" />
                <input type="hidden" name="post_changes" value="y" />
 
@@ -149,8 +149,8 @@ if ($group_id && $group_id != 
forge_get_config('news_group')) {
                echo $params['content'].'<br/>';
                echo '<p>
                <strong>'.sprintf(_('If this item is on the %s home page and 
you edit it, it will be removed from the home page.'), 
forge_get_config('forge_name')).'</strong></p>
-               <input type="submit" name="submit" value="'._('Submit').'" />
-               </form>';
+               <input type="submit" name="submit" value="'._('Submit').'" />';
+               echo $HTML->closeForm();
 
        } else {
                /*
diff --git a/src/www/news/admin/news_admin_utils.php 
b/src/www/news/admin/news_admin_utils.php
index 3cc5175..b3866a6 100644
--- a/src/www/news/admin/news_admin_utils.php
+++ b/src/www/news/admin/news_admin_utils.php
@@ -5,7 +5,7 @@
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2002-2004 (c) GForge Team
  * Copyright (C) 2012 Alain Peyrat - Alcatel-Lucent
- * Copyright 2012-2013, Franck Villaume - TrivialDev
+ * Copyright 2012-2013,2015 Franck Villaume - TrivialDev
  * http://fusionforge.org/
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -29,6 +29,8 @@ function show_news_approve_form($qpa_pending, $qpa_rejected, 
$qpa_approved) {
                Show list of waiting news items
        */
 
+       global $HTML;
+
        // function to show single news item
        // factored out because called 3 time below
        function show_news_item($row, $i, $approved, $selectable) {
@@ -42,9 +44,8 @@ function show_news_approve_form($qpa_pending, $qpa_rejected, 
$qpa_approved) {
                }
                echo date(_('Y-m-d'), $row['post_date']).'</td>
                <td width="45%">';
-               echo '
-               <a 
href="'.getStringFromServer('PHP_SELF').'?approve=1&amp;id='.$row['id'].'">'.$row['summary'].'</a>
-               </td>
+               echo util_make_link('/news/admin/?approve=1&id='.$row['id'], 
$row['summary']);
+               echo '</td>
 
                <td class="onethirdwidth">'
                .util_make_link_g ($row['unix_group_name'], $row['group_id'], 
$row['group_name'].' ('.$row['unix_group_name'].')')
@@ -71,23 +72,21 @@ function show_news_approve_form($qpa_pending, 
$qpa_rejected, $qpa_approved) {
        $rows = count($items);
 
        if ($rows < 1) {
-               echo '
-                       <h2>'._('No pending items found.').'</h2>';
+               echo html_e('h2', array(), _('No pending items found.'));
        } else {
-               echo '<form action="'. getStringFromServer('PHP_SELF') .'" 
method="post">';
+               echo $HTML->openForm(array('action' => '/news/admin/', 'method' 
=> 'post'));
                echo '<input type="hidden" name="mass_reject" value="1" />';
                echo '<input type="hidden" name="post_changes" value="y" />';
                echo '<h2>'.sprintf(_('These items need to be approved (total: 
%d)'), $rows).'</h2>';
-               echo $GLOBALS['HTML']->listTableTop($title_arr);
+               echo $HTML->listTableTop($title_arr);
                for ($i=0; $i < $rows; $i++) {
                        show_news_item($items[$i], $i, false,true);
                }
-               echo $GLOBALS['HTML']->listTableBottom();
+               echo $HTML->listTableBottom();
                echo '<br /><input type="submit" name="submit" 
value="'._('Reject Selected').'" />';
-               echo '</form>';
+               echo $HTML->closeForm();
        }
 
-
        /*
                Show list of rejected news items for this week
        */
@@ -102,15 +101,14 @@ function show_news_approve_form($qpa_pending, 
$qpa_rejected, $qpa_approved) {
        $rows = count($items);
 
        if ($rows < 1) {
-               echo '
-                       <h2>'._('No rejected items found for this 
week.').'</h2>';
+               echo html_e('h2', array(), _('No rejected items found for this 
week.'));
        } else {
                echo '<h2>'.sprintf(_('These items were rejected this past week 
or were not intended for front page (total: %d).'), $rows).'</h2>';
-               echo $GLOBALS['HTML']->listTableTop($title_arr);
+               echo $HTML->listTableTop($title_arr);
                for ($i=0; $i<$rows; $i++) {
                        show_news_item($items[$i], $i, false, false);
                }
-               echo $GLOBALS['HTML']->listTableBottom();
+               echo $HTML->listTableBottom();
        }
 
        /*
@@ -126,15 +124,14 @@ function show_news_approve_form($qpa_pending, 
$qpa_rejected, $qpa_approved) {
        }
        $rows = count($items);
        if ($rows < 1) {
-               echo '
-                       <h2>'._('No approved items found for this 
week.').'</h2>';
+               echo html_e('h2', array(), _('No approved items found for this 
week.'));
        } else {
                echo '<h2>'.sprintf(_('These items were approved this past week 
(total: %d).'), $rows).'</h2>';
-               echo $GLOBALS['HTML']->listTableTop($title_arr);
+               echo $HTML->listTableTop($title_arr);
                for ($i=0; $i < $rows; $i++) {
                        show_news_item($items[$i], $i, false, false);
                }
-               echo $GLOBALS['HTML']->listTableBottom();
+               echo $HTML->listTableBottom();
        }
 }
 
diff --git a/src/www/news/submit.php b/src/www/news/submit.php
index 80d10af..7a64f33 100644
--- a/src/www/news/submit.php
+++ b/src/www/news/submit.php
@@ -5,7 +5,7 @@
  * Copyright (C) 1999-2001 VA Linux Systems
  * Copyright (C) 2002-2004 GForge Team
  * Copyright (C) 2008-2010 Alcatel-Lucent
- * Copyright 2013, Franck Villaume - TrivialDev
+ * Copyright 2013, 2015, Franck Villaume - TrivialDev
  *
  * http://fusionforge.org/
  *
@@ -54,6 +54,8 @@ require_once $gfwww.'news/news_utils.php';
 require_once $gfcommon.'forum/Forum.class.php';
 require_once $gfcommon.'include/TextSanitizer.class.php'; // to make the HTML 
input by the user safe to store
 
+global $HTML;
+
 $group_id = getIntFromRequest('group_id');
 if (!$group_id) {
        exit_no_group();
@@ -104,7 +106,7 @@ if (session_loggedin()) {
                                if (!$result) {
                                        db_rollback();
                                        
form_release_key(getStringFromRequest('form_key'));
-                                       $error_msg = _('Error: insert failed.');
+                                       $error_msg = _('Error')._(': 
')._('insert failed.');
                                } else {
                                        db_commit();
                                        $feedback = _('News Added.');
@@ -112,7 +114,7 @@ if (session_loggedin()) {
                        }
                } else {
                        form_release_key(getStringFromRequest('form_key'));
-                       $error_msg = _('Error: both subject and body are 
required.');
+                       $error_msg = _('Error')._(': ')._('both subject and 
body are required.');
                }
        }
 
@@ -126,9 +128,7 @@ if (session_loggedin()) {
                Show the submit form
        */
        $group = group_get_object($group_id);
-       news_header(array('title'=>_('Submit News for Project: ').' 
'.$group->getPublicName()));
-
-       $jsfunc = notepad_func();
+       news_header(array('title'=>_('Submit News for Project')._(': 
').$group->getPublicName()));
 
        echo '<p>';
        echo _('You can post news about your project if you are an admin on 
your project. You may also post “help wanted” notes if your project needs 
help.');
@@ -142,10 +142,9 @@ if (session_loggedin()) {
        echo '<p>';
        echo _('URLs that start with http:// are made clickable.');
        echo '</p>';
-       echo $jsfunc .
-               '
-               <form id="newssubmitform" 
action="'.getStringFromServer('PHP_SELF').'" method="post">
-               <input type="hidden" name="group_id" value="'.$group_id.'" />
+       echo notepad_func();
+       echo $HTML->openForm(array('id' => 'newssubmitform', 'action' => 
'/news/submit.php', 'method' => 'post'));
+       echo '  <input type="hidden" name="group_id" value="'.$group_id.'" />
                <input type="hidden" name="post_changes" value="y" />
                <input type="hidden" name="form_key" value="'. 
form_generate_key() .'" />
                <p><strong>'._('For project')._(': 
').$group->getPublicName().'</strong></p>
@@ -166,7 +165,8 @@ if (session_loggedin()) {
 
        echo $params['content'].'<br />';
        echo '<div><input type="submit" name="submit" value="'._('Submit').'" />
-               </div></form>';
+               </div>'
+       echo $HTML->closeForm>();
 
        news_footer();
 
diff --git a/src/www/pm/browse_task.php b/src/www/pm/browse_task.php
index e0223eb..96262e8 100644
--- a/src/www/pm/browse_task.php
+++ b/src/www/pm/browse_task.php
@@ -137,42 +137,36 @@ $order_box = 
html_build_select_box_from_assoc($order_select_arr, '_order', $_ord
        Creating a custom sort box
 */
 
-$sort_title_arr=array();
-$sort_title_arr[]=_('Ascending');
-$sort_title_arr[]=_('Descending');
+$sort_select_arr=array();
+$sort_select_arr['ASC'] = _('Ascending');
+$sort_select_arr['DESC'] = _('Descending');
 
-$sort_col=array();
-$sort_col[]='ASC';
-$sort_col[]='DESC';
-
-$sort_box=html_build_select_box_from_arrays($sort_col,$sort_title_arr,'_sort_order',$_sort_order,false);
+$sort_box = html_build_select_box_from_assoc($sort_select_arr, '_sort_order', 
$_sort_order, false, false);
 /*
        Creating View array
 */
-$view_arr=array();
-$view_arr[]=_('Summary');
-$view_arr[]=_('Detailed');
-$order_col_arr=array();
-$view_col_arr[]='summary';
-$view_col_arr[]='detail';
-$view_box=html_build_select_box_from_arrays 
($view_col_arr,$view_arr,'_view',$_view,false);
-
-$rows=count($pt_arr);
+$view_select_arr = array();
+$view_select_arr['summary'] = _('Summary');
+$view_select_arr['detail'] = _('Detailed');
+$view_box = html_build_select_box_from_assoc($view_select_arr, '_view', 
$_view, false, false);
+
+$rows = count($pt_arr);
 $totalTasks = $pg->getCount($_status, $_category_id);
 
 if (session_loggedin()) {
        /* logged in users get configurable paging */
-       echo '<form action="'. getStringFromServer('PHP_SELF') 
.'?group_id='.$group_id.'&group_project_id='.$pg->getID().'&offset='.$offset.'" 
method="post">'."\n";
-
+       echo $HTML->openForm(array('action' => 
'/pm/task.php?group_id='.$group_id.'&group_project_id='.$pg->getID().'&offset='.$offset,
 'method' => 'post'));
 }
+
 printf('<p>' . _('Displaying results %1$s out of %2$d total.'),$rows ? 
($offset + 1).'-'.($offset + $rows) : '0', $totalTasks);
 
 if (session_loggedin()) {
        printf(' ' . _('Displaying %2$s results.') . "\n\t<input " .
                        'type="submit" name="setpaging" value="%1$s" />' .
-                       "\n</p>\n</form>\n", _('Change'),
+                       "\n</p>\n", _('Change'),
                        html_build_select_box_from_array(array(
                        '10', '25', '50', '100', '1000'), 'nres', $paging, 1));
+       echo $HTML->closeForm();
 } else {
        echo "</p>\n";
 }
@@ -180,8 +174,8 @@ if (session_loggedin()) {
 /*
        Show the new pop-up boxes to select assigned to and/or status
 */
-echo ' <form action="'. getStringFromServer('PHP_SELF') 
.'?group_id='.$group_id.'&group_project_id='.$group_project_id.'" method="post">
-       <input type="hidden" name="set" value="custom" />
+echo $HTML->openForm(array('action' => 
'/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id, 
'method' => 'post'));
+echo ' <input type="hidden" name="set" value="custom" />
        <table>
        <tr>
                <td>'._('Assignee')._(': ').'<br />'. $tech_box .'</td>
@@ -190,10 +184,9 @@ echo '     <form action="'. 
getStringFromServer('PHP_SELF') .'?group_id='.$group_id.
                <td>'._('Sort On')._(': ').'<br />'. $order_box . $sort_box 
.'</td>
                <td>'._('Detail View')._(': ').'<br />'. $view_box .'</td>
                <td><input type="submit" name="submit" value="'._('Browse').'" 
/></td>
-       </tr></table></form>';
-
+       </tr></table>';
+echo $HTML->closeForm();
 if ($rows < 1) {
-
        echo $HTML->information(_('No Matching Tasks found'));
        echo '<p class="important">'._('Add tasks using the link 
above')."</p>\n";
 
@@ -210,9 +203,8 @@ if ($rows < 1) {
        $IS_ADMIN = forge_check_perm ('pm', $pg->getID(), 'manager') ;
 
        if ($IS_ADMIN) {
-               echo '
-               <form name="taskList" action="'. 
getStringFromServer('PHP_SELF') 
.'?group_id='.$group_id.'&amp;group_project_id='.$pg->getID().'" method="post">
-               <input type="hidden" name="func" value="massupdate" />';
+               echo $HTML->openForm(array('name' => 'taskList', 'action' => 
'/pm/task.php?group_id='.$group_id.'&group_project_id='.$pg->getID(), 'method' 
=> 'post'));
+               echo '<input type="hidden" name="func" value="massupdate" />';
 
                $check_all = '
                <a href="javascript:checkAllTasks(1)">'._('Check all').'</a>
@@ -257,14 +249,14 @@ if ($rows < 1) {
 
        echo $HTML->listTableTop($title_arr);
 
-       $now=time();
+       $now = time();
 
        for ($i=0; $i < $rows; $i++) {
-               $url = 
getStringFromServer('PHP_SELF')."?func=detailtask&project_task_id=".$pt_arr[$i]->getID()."&group_id=".$group_id."&group_project_id=".$group_project_id;
+               $url = 
'/pm/task.php?func=detailtask&project_task_id='.$pt_arr[$i]->getID().'&group_id='.$group_id.'&group_project_id='.$group_project_id;
 
                echo '
                        <tr class="priority'.$pt_arr[$i]->getPriority().'"><td 
style="width:16px; background-color:#FFFFFF">' .
-                       util_make_link("/export/rssAboTask.php?tid=" .
+                       util_make_link('/export/rssAboTask.php?tid=' .
                            $pt_arr[$i]->getID(), html_image('ic/rss.png',
                            16, 16, array('border' => '0'))
                        ) . "</td>\n" .
@@ -315,7 +307,7 @@ if ($rows < 1) {
         Show extra rows for <-- Prev / Next -->
        */
        if ($offset > 0) {
-               echo util_make_link 
(getStringFromServer('PHP_SELF').'?func=browse&group_project_id='.$group_project_id.'&group_id='.$group_id.'&offset='.($offset-$paging),'<strong>←
 '._('previous').'</strong>');
+               echo 
util_make_link('/pm/task.php?func=browse&group_project_id='.$group_project_id.'&group_id='.$group_id.'&offset='.($offset-$paging),'<strong>←
 '._('previous').'</strong>');
                echo '&nbsp;&nbsp;';
        }
        $pages = $totalTasks / $paging;
@@ -337,7 +329,7 @@ if ($rows < 1) {
                        if ($j * $paging == $offset) {
                                echo '<strong>'.($j+1).'</strong>&nbsp;&nbsp;';
                        } else {
-                               echo util_make_link 
(getStringFromServer('PHP_SELF').'?func=browse&group_project_id='.$group_project_id.'&group_id='.$group_id.'&offset='.($j*$paging),'<strong>'.($j+1).'</strong>').'&nbsp;&nbsp;';
+                               echo 
util_make_link('/pm/task.php?func=browse&group_project_id='.$group_project_id.'&group_id='.$group_id.'&offset='.($j*$paging),'<strong>'.($j+1).'</strong>').'&nbsp;&nbsp;';
                        }
                }
        }
@@ -428,8 +420,8 @@ if ($rows < 1) {
 
                        </table>
                        </div>
-                       </fieldset>
-               </form>';
+                       </fieldset>';
+               echo $HTML->closeForm();
        }
 }
 

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

commit f6d6c1937f494159ff928131c9db95eb192c6aa4
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 18 19:43:38 2015 +0200

    plugin hudson: more HTML helpers

diff --git a/src/plugins/hudson/include/hudson_Widget_JobBuildHistory.class.php 
b/src/plugins/hudson/include/hudson_Widget_JobBuildHistory.class.php
index 11d880b..2fac7e3 100644
--- a/src/plugins/hudson/include/hudson_Widget_JobBuildHistory.class.php
+++ b/src/plugins/hudson/include/hudson_Widget_JobBuildHistory.class.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
- * Copyright 2014, Franck Villaume - TrivialDev
+ * Copyright 2014, 2015, Franck Villaume - TrivialDev
  *
  * This file is a part of Fusionforge.
  *
@@ -84,6 +84,7 @@ class hudson_Widget_JobBuildHistory extends HudsonJobWidget {
        }
 
        function getContent() {
+               global $HTML;
                $html = '';
                if ($this->job != null) {
                        $job = $this->job;
@@ -91,7 +92,7 @@ class hudson_Widget_JobBuildHistory extends HudsonJobWidget {
                        $buildHistoryRSSWidget->rss_url = 
$job->getUrl().'/rssAll';
                        $html .= $buildHistoryRSSWidget->getContent();
                } else {
-                       $html .= _("Job not found.");
+                       $html .= $HTML->information(_('Job not found.'));
                }
                return $html;
        }
diff --git a/src/plugins/hudson/include/hudson_Widget_JobLastBuilds.class.php 
b/src/plugins/hudson/include/hudson_Widget_JobLastBuilds.class.php
index 587a999..cef5390 100644
--- a/src/plugins/hudson/include/hudson_Widget_JobLastBuilds.class.php
+++ b/src/plugins/hudson/include/hudson_Widget_JobLastBuilds.class.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
- * Copyright 2014, Franck Villaume - TrivialDev
+ * Copyright 2014, 2015 Franck Villaume - TrivialDev
  *
  * This file is a part of Fusionforge.
  *
@@ -83,10 +83,11 @@ class hudson_Widget_JobLastBuilds extends HudsonJobWidget {
        }
 
        function getContent() {
+               global $HTML;
                $html = '';
                if ($this->job != null) {
                        $job = $this->job;
-                       $html .= '<table class="fullwidth">';
+                       $html .= $HTML->listTableTop();
                        $html .= ' <tr>';
                        $html .= '  <td>';
                        $html .= '   <ul>';
@@ -95,17 +96,17 @@ class hudson_Widget_JobLastBuilds extends HudsonJobWidget {
                                $html .= ' <li>'._("Last Success")._(": 
").util_make_link('/plugins/hudson/?action=view_build&group_id='.$this->group_id.'&job_id='.$this->job_id.'&build_id='.$job->getLastSuccessfulBuildNumber(),
 '# '.$job->getLastSuccessfulBuildNumber()).'</li>';
                                $html .= ' <li>'._("Last Failure")._(": 
").util_make_link('/plugins/hudson/?action=view_build&group_id='.$this->group_id.'&job_id='.$this->job_id.'&build_id='.$job->getLastFailedBuildNumber(),
 '# '.$job->getLastFailedBuildNumber()).'</li>';
                        } else {
-                               $html .= ' <li>'. _("No build found for this 
job.") . '</li>';
+                               $html .= ' <li>'. $HTML->information(_('No 
build found for this job.')) . '</li>';
                        }
                        $html .= '   </ul>';
                        $html .= '  </td>';
                        $html .= '  <td class="widget_lastbuilds_weather">';
-                       $html .= _("Weather Report:").'<img 
src="'.$job->getWeatherReportIcon().'" class="widget_lastbuilds_weather_img" 
/>';
+                       $html .= _('Weather Report')._(':').'<img 
src="'.$job->getWeatherReportIcon().'" class="widget_lastbuilds_weather_img" 
/>';
                        $html .= '  </td>';
                        $html .= ' </tr>';
-                       $html .= '</table>';
+                       $html .= $HTML->listTableBottom();
                } else {
-                       $html .= _("Job not found.");
+                       $html .= $HTML->information(_('Job not found.'));
                }
                return $html;
        }
diff --git a/src/plugins/hudson/include/hudson_Widget_JobTestResults.class.php 
b/src/plugins/hudson/include/hudson_Widget_JobTestResults.class.php
index 5222f2d..7b68650 100644
--- a/src/plugins/hudson/include/hudson_Widget_JobTestResults.class.php
+++ b/src/plugins/hudson/include/hudson_Widget_JobTestResults.class.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
- * Copyright 2014, Franck Villaume - TrivialDev
+ * Copyright 2014, 2015 Franck Villaume - TrivialDev
  *
  * This file is a part of Fusionforge.
  *
@@ -98,18 +98,18 @@ class hudson_Widget_JobTestResults extends HudsonJobWidget {
        }
 
        function getContent() {
+               global $HTML;
                $html = '';
                if ($this->job != null && $this->test_result != null) {
-                       $job = $this->job;
                        $test_result = $this->test_result;
                        $html .= '<div style="padding: 20px;">';
                        $html .= 
util_make_link('/plugins/hudson/?action=view_last_test_result&group_id='.$this->group_id.'&job_id='.$this->job_id,
 $test_result->getTestResultPieChart());
                        $html .= '</div>';
                } else {
                        if ($this->job != null) {
-                               $html .= _("No test found for this job.");
+                               $html .= $HTML->information(_('No test found 
for this job.'));
                        } else {
-                               $html .= _("Job not found.");
+                               $html .= $HTML->information(_('Job not 
found.'));
                        }
                }
                return $html;
diff --git a/src/plugins/hudson/include/hudson_Widget_JobTestTrend.class.php 
b/src/plugins/hudson/include/hudson_Widget_JobTestTrend.class.php
index c59a6d1..c9f990e 100644
--- a/src/plugins/hudson/include/hudson_Widget_JobTestTrend.class.php
+++ b/src/plugins/hudson/include/hudson_Widget_JobTestTrend.class.php
@@ -1,6 +1,7 @@
 <?php
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
+ * Copyright 2015, Franck Villaume - TrivialDev
  *
  * This file is a part of Fusionforge.
  *
@@ -91,19 +92,18 @@ class hudson_Widget_JobTestTrend extends HudsonJobWidget {
        }
 
        function getContent() {
+               global $HTML;
                $html = '';
                if ($this->job != null && $this->test_result != null) {
-                       $job = $this->job;
                        $html .= '<div style="padding: 20px;">';
-                       $html .= '<a 
href="/plugins/hudson/?action=view_test_trend&group_id='.$this->group_id.'&job_id='.$this->job_id.'">';
-                       $html .= '<img 
src="'.$job->getUrl().'/test/trend?width=320&height=240" alt="'.vsprintf(_("%s 
Test Result Trend"),  array($this->job->getName())).'" title="'.vsprintf(_("%s 
Test Result Trend"),  array($this->job->getName())).'" />';
-                       $html .= '</a>';
+                       $html .= 
util_make_link('/plugins/hudson/?action=view_test_trend&group_id='.$this->group_id.'&job_id='.$this->job_id,
+                                       '<img 
src="'.$this->job->getUrl().'/test/trend?width=320&height=240" 
alt="'.vsprintf(_("%s Test Result Trend"), array($this->job->getName())).'" 
title="'.vsprintf(_("%s Test Result Trend"), array($this->job->getName())).'" 
/>');
                        $html .= '</div>';
                } else {
                        if ($this->job != null) {
-                               $html .= _("No test found for this job.");
+                               $html .= $HTML->information(_('No test found 
for this job.'));
                        } else {
-                               $html .= _("Job not found.");
+                               $html .= $HTML->information(_('Job not 
found.'));
                        }
                }
                return $html;

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

commit 31365c20b5afcdf38b85f472b7e8df19e158b41b
Author: Franck Villaume <[email protected]>
Date:   Mon Sep 14 19:06:00 2015 +0200

    editimages: fix html syntax

diff --git a/src/www/project/admin/editimages.php 
b/src/www/project/admin/editimages.php
index bfcc43b..f49eeee 100644
--- a/src/www/project/admin/editimages.php
+++ b/src/www/project/admin/editimages.php
@@ -196,7 +196,6 @@ project_admin_header(array('title'=>_('Edit Multimedia 
Data')));
 
 echo '
        <p>'.sprintf(_('You can store up to %s MB of multimedia data (bitmap 
and vector graphics, sound clips, 3D models) in the database. Use this page to 
add/delete your project multimedia data.'), sprintf("%.2f", 
$QUOTA/(1024*1024))).'</p>
-       <p>
 ';
 
 $mode = getStringFromGet("mode");
@@ -214,8 +213,7 @@ if ($mode == "edit") {
                exit();
        }
 
-       echo '</p><h4>'._('Edit Multimedia Data').'</h4>
-       <p>
+       echo '<h4>'._('Edit Multimedia Data').'</h4>
        <form action="'. getStringFromServer('PHP_SELF') .'" method="post" 
enctype="multipart/form-data">
        <input type="hidden" name="group_id" value="'.$group_id.'" />
        <input type="hidden" name="id" value="'.$id.'" />
@@ -230,12 +228,12 @@ if ($mode == "edit") {
        <p>
        <strong>'._('MIME Type')._(':').'</strong><br />
        <input type="text" name="filetype" size="40" maxlength="255" 
value="'.db_result($result,$i,'filetype').'" />
-
+       </p>
        <input type="hidden" name="edit" value="1" />
 
        <input type="submit" value="'._('Submit').'" name="submit" />
        <input type="reset" value="'._('Reset').'" /><br />
-       </form></p>
+       </form>
        ';
 } else {
        $result=db_query_params ('      SELECT *
@@ -245,7 +243,6 @@ if ($mode == "edit") {
                        array($group_id));
 
        echo '<h4>'._('Add Multimedia Data').'</h4>
-       <p>
        <form action="'. getStringFromServer('PHP_SELF') .'" method="post" 
enctype="multipart/form-data">
        <input type="hidden" name="group_id" value="'.$group_id.'" />
        <strong>'._('Local 
filename').utils_requiredField()._(':').'</strong><br />
@@ -255,7 +252,7 @@ if ($mode == "edit") {
        <input type="text" required="required" name="description" size="40" 
maxlength="255" /></p><p>
        <input type="hidden" name="add" value="1" />
        <input type="submit" value="'._('Add File').'" name="submit" /></p>
-       </form></p>
+       </form>
        ';
 }
 

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

commit e7cd36827e505cd727e73c8d4d82a45cec5c8606
Author: Franck Villaume <[email protected]>
Date:   Mon Sep 14 18:48:07 2015 +0200

    editimages: initial global fix. aka make it work

diff --git a/src/www/project/admin/editimages.php 
b/src/www/project/admin/editimages.php
index 13f8690..bfcc43b 100644
--- a/src/www/project/admin/editimages.php
+++ b/src/www/project/admin/editimages.php
@@ -4,6 +4,7 @@
  *
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2002-2004 (c) GForge Team
+ * Copyright 2015, Franck Villaume - TrivialDev
  * http://fusionforge.org/
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -54,8 +55,8 @@ function store_file($id, $input_file) {
        global $feedback;
        global $error_msg;
 
-       if (!util_check_fileupload($input_file)) {
-               exit_error(_('Invalid file name.'),'admin');
+       if (!util_check_fileupload($input_file['tmp_name'])) {
+               exit_error(_('Invalid file name.'), 'admin');
        }
 
        $filename = $input_file['tmp_name'];
@@ -109,38 +110,35 @@ if (getStringFromRequest('submit')) {
        $description = getStringFromRequest('description');
        $filetype = getStringFromRequest('filetype');
 
-       if (!util_check_fileupload($input_file)) {
-               exit_error("Error","Invalid filename");
-       }
+
 
        if (getStringFromRequest('add')) {
+               if (!util_check_fileupload($input_file['tmp_name'])) {
+                       exit_error(_('Invalid filename'));
+               }
                if (!$input_file['tmp_name'] || $description == "") {
                        $error_msg .= _('Both file name and description are 
required');
                } else {
                        //see if they have too many data in the system
-                       $res=db_query_params ('SELECT sum(filesize) WHERE 
group_id=$1',
-                       array($group_id));
-                       if (db_result($res,0,'sum') < $QUOTA) {
+                       $res = db_query_params('SELECT sum(filesize) from 
db_images WHERE group_id=$1', array($group_id));
+                       if (db_result($res, 0, 'sum') < $QUOTA) {
                                store_file(0, $input_file);
                        } else {
                                $error_msg .= ' Sorry - you are over your 
'.$QUOTA.' quota ';
                        }
                }
-
        } elseif (getStringFromRequest('remove')) {
-
-               $res=db_query_params ('DELETE FROM db_images WHERE id=$1 AND 
group_id=$2',
-                       array($id,
-                               $group_id));
+               $res = db_query_params('DELETE FROM db_images WHERE id=$1 AND 
group_id=$2',
+                                       array($id, $group_id));
 
                if (!$res || db_affected_rows($res) < 1) {
-                       $error_msg .= _('Error: Cannot delete multimedia file: 
').db_error();
+                       $error_msg .= _('Error')._(': ')._('Cannot delete 
multimedia file')._(': ').db_error();
                } else {
                        $feedback .= _('Multimedia File Deleted');
                }
 
-       } elseif (getStringFromRequest("edit")) {
-               if ($description == "") {
+       } elseif (getStringFromRequest('edit')) {
+               if ($description == '') {
                        $error_msg .= _('File description is required');
                } else {
                        if (!$input_file['tmp_name']) {
@@ -148,14 +146,14 @@ if (getStringFromRequest('submit')) {
                                // Just replace description/mime type
 
                                $res = db_query_params ('UPDATE db_images
-                                               SET description=$1,
-                                                filetype=$2
-                                               WHERE group_id=$3
-                                               AND id=$4 ',
-                       array($description,
-                               $filetype,
-                               $group_id,
-                               $id));
+                                                       SET description=$1,
+                                                       filetype=$2
+                                                       WHERE group_id=$3
+                                                       AND id=$4 ',
+                                                       array($description,
+                                                               $filetype,
+                                                               $group_id,
+                                                               $id));
 
                                if (!$res || db_affected_rows($res) < 1) {
                                        $error_msg .= _('Error: Cannot update 
multimedia file').db_error();
@@ -164,17 +162,20 @@ if (getStringFromRequest('submit')) {
                                }
 
                        } else {
+                               if 
(!util_check_fileupload($input_file['tmp_name'])) {
+                                       exit_error(_('Invalid filename'));
+                               }
 
                                // new version of the file is uploaded
                                // use new description, but not user-input
                                // mime type
 
                                //see if they have too many data in the system
-                               $res=db_query_params (' SELECT sum(filesize)
-                                               WHERE group_id=$1
-                                               AND id<>$2',
-                       array($group_id,
-                               $id));
+                               $res = db_query_params('SELECT sum(filesize) 
from db_images
+                                                       WHERE group_id=$1
+                                                       AND id<>$2',
+                                                       array($group_id,
+                                                               $id));
 
                                $size = $input_file['size'];
                                if (db_result($res,0,'sum')+$size < $QUOTA) {
@@ -183,7 +184,7 @@ if (getStringFromRequest('submit')) {
 
                                } else {
 
-                                       $feedback .= ' Sorry - you are over 
your 1MB quota ';
+                                       $feedback .= _('.Sorry - you are over 
your 1MB quota.');
 
                                }
                        }

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

commit b85125593a617da004a230239402cc087ecf2199
Author: Franck Villaume <[email protected]>
Date:   Mon Sep 14 16:34:24 2015 +0200

    minimal check on dbimages

diff --git a/src/www/dbimage.php b/src/www/dbimage.php
index f3860dd..ea23065 100644
--- a/src/www/dbimage.php
+++ b/src/www/dbimage.php
@@ -3,6 +3,7 @@
  * Fetch a multimedia data from database
  *
  * Copyright 1999-2001 (c) VA Linux Systems
+ * Copyright 2015, Franck Villaume - TrivialDev
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -25,7 +26,12 @@ require_once $gfcommon.'include/pre.php';
 
 $id = getStringFromRequest('id');
 
-$res=db_query_params ('SELECT * FROM db_images WHERE id=$1',
+if (!$id) {
+       echo _('failed');
+       exit();
+}
+
+$res=db_query_params('SELECT * FROM db_images WHERE id=$1',
                        array($id)) ;
 
 $filename=db_result($res,0,'filename');

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

commit 14b6c687b26446e32f7405c78c21b4252d437b0c
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 11 21:08:29 2015 +0200

    more HTML helpers & better use of util html functions

diff --git a/src/www/pm/browse_task.php b/src/www/pm/browse_task.php
index 9e9ab50..e0223eb 100644
--- a/src/www/pm/browse_task.php
+++ b/src/www/pm/browse_task.php
@@ -6,7 +6,7 @@
  * Copyright 2002 GForge, LLC, Tim Perdue
  * Copyright 2010, FusionForge Team
  * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
- * Copyright 2014, Franck Villaume - TrivialDev
+ * Copyright 2014,2015, Franck Villaume - TrivialDev
  * Copyright 2014, Stéphane-Eymeric Bredthauer
  * Copyright 2015, nitendra tripathi
  * http://fusionforge.org
@@ -45,9 +45,9 @@ $max_rows = getIntFromRequest('max_rows');
 
 $ptf = new ProjectTaskFactory($pg);
 if (!$ptf || !is_object($ptf)) {
-       exit_error(_('Could Not Get ProjectTaskFactory'),'pm');
+       exit_error(_('Could Not Get ProjectTaskFactory'), 'pm');
 } elseif ($ptf->isError()) {
-       exit_error($ptf->getErrorMessage(),'pm');
+       exit_error($ptf->getErrorMessage(), 'pm');
 }
 
 $_order = getStringFromRequest('_order');
@@ -67,82 +67,71 @@ if (session_loggedin()) {
                if (!$paging) {
                        $paging = 25;
                }
-               $u->setPreference("paging", $paging);
+               $u->setPreference('paging', $paging);
        } else
-               $paging = $u->getPreference("paging");
+               $paging = $u->getPreference('paging');
 }
 if (!$paging) {
        $paging = 25;
 }
 
-$ptf->setup($offset,$_order,$paging,$set,$_assigned_to,$_status,$_category_id,$_view,$_sort_order);
+$ptf->setup($offset, $_order, $paging, $set, $_assigned_to, $_status, 
$_category_id, $_view, $_sort_order);
 if ($ptf->isError()) {
-       exit_error($ptf->getErrorMessage(),'pm');
+       exit_error($ptf->getErrorMessage(), 'pm');
 }
 $pt_arr =& $ptf->getTasks(true);
 if ($ptf->isError()) {
-       exit_error($ptf->getErrorMessage(),'pm');
+       exit_error($ptf->getErrorMessage(), 'pm');
 }
 
-$_assigned_to=$ptf->assigned_to;
-$_status=$ptf->status;
-$_order=$ptf->order;
-$_sort_order=$ptf->sort_order;
-$_category_id=$ptf->category;
-$_view=$ptf->view_type;
+$_assigned_to = $ptf->assigned_to;
+$_status = $ptf->status;
+$_order = $ptf->order;
+$_sort_order = $ptf->sort_order;
+$_category_id = $ptf->category;
+$_view = $ptf->view_type;
 
 html_use_coolfieldset();
 
-pm_header(array('title'=>_('Browse 
tasks'),'group_project_id'=>$group_project_id));
+pm_header(array('title' => _('Browse tasks'), 'group_project_id' => 
$group_project_id));
 
 /*
                creating a custom technician box which includes "any" and 
"unassigned"
 */
-$engine = RBACEngine::getInstance () ;
-$techs = $engine->getUsersByAllowedAction ('pm', $pg->getID(), 'tech') ;
+$engine = RBACEngine::getInstance();
+$techs = $engine->getUsersByAllowedAction('pm', $pg->getID(), 'tech');
 
-$tech_id_arr = array () ;
-$tech_name_arr = array () ;
+$tech_select_arr = array();
 
 foreach ($techs as $tech) {
-       $tech_id_arr[] = $tech->getID() ;
-       $tech_name_arr[] = $tech->getRealName() ;
+       $tech_select_arr[$tech->getID()] = $tech->getRealName() ;
 }
-$tech_id_arr[]='0';
-$tech_name_arr[]=_('Any');
+$tech_select_arr[0] = _('Any');
 
-$tech_box=html_build_select_box_from_arrays 
($tech_id_arr,$tech_name_arr,'_assigned_to',$_assigned_to,true,_('Unassigned'));
+$tech_box = html_build_select_box_from_assoc($tech_select_arr ,'_assigned_to', 
$_assigned_to, false, true, _('Unassigned'));
 
 /*
                creating a custom category box which includes "any" and "none"
 */
-$res_cat=$pg->getCategories();
-$cat_id_arr=util_result_column_to_array($res_cat,0);
-$cat_id_arr[]='0';  //this will be the 'any' row
-$cat_name_arr=util_result_column_to_array($res_cat,1);
-$cat_name_arr[]=_('Any');
-$cat_box=html_build_select_box_from_arrays 
($cat_id_arr,$cat_name_arr,'_category_id',$_category_id,true,'none');
+$res_cat = $pg->getCategories();
+$cat_id_arr = util_result_column_to_array($res_cat, 0);
+$cat_id_arr[] = '0';  //this will be the 'any' row
+$cat_name_arr = util_result_column_to_array($res_cat, 1);
+$cat_name_arr[] = _('Any');
+$cat_box = html_build_select_box_from_arrays($cat_id_arr, $cat_name_arr, 
'_category_id', $_category_id, true, 'none');
 
 /*
        Creating a custom order box
 */
-$order_title_arr=array();
-$order_title_arr[]=_('Task Id');
-$order_title_arr[]=_('Task Summary');
-$order_title_arr[]=_('Start Date');
-$order_title_arr[]=_('End Date');
-$order_title_arr[]=_('Percent Complete');
-$order_title_arr[]=_('Priority');
-
-$order_col_arr=array();
-$order_col_arr[]='project_task_id';
-$order_col_arr[]='summary';
-$order_col_arr[]='start_date';
-$order_col_arr[]='end_date';
-$order_col_arr[]='percent_complete';
-$order_col_arr[]='priority';
-
-$order_box=html_build_select_box_from_arrays 
($order_col_arr,$order_title_arr,'_order',$_order,false);
+$order_select_arr = array();
+$order_select_arr['project_task_id'] = _('Task Id');
+$order_select_arr['summary'] = _('Task Summary');
+$order_select_arr['start_date'] = _('Start Date');
+$order_select_arr['end_date'] = _('End Date');
+$order_select_arr['percent_complete'] = _('Percent Complete');
+$order_select_arr['priority'] = _('Priority');
+
+$order_box = html_build_select_box_from_assoc($order_select_arr, '_order', 
$_order, false, false);
 
 /*
        Creating a custom sort box
diff --git a/src/www/pm/csv.php b/src/www/pm/csv.php
index 94b60a0..1d64f2a 100644
--- a/src/www/pm/csv.php
+++ b/src/www/pm/csv.php
@@ -71,7 +71,7 @@ if (session_loggedin()) {
        }
 }
 
-$format = $full ? "Full CSV" : "Normal CSV";
+$format = $full ? 'Full CSV' : 'Normal CSV';
 $format .= $headers ? ' with headers' : ' without headers';
 $format .= " using '".htmlentities($sep)."' as separator.";
 
@@ -82,7 +82,7 @@ echo html_e('strong', array(), _('Selected CSV 
Format')._(':')).' '.$format.' '.
 echo html_e('p', array(), 
util_make_link('/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=downloadcsv&sep='.$sep.'&full='.$full.'&headers='.$headers,
 _('Export CSV file')));
 
 echo html_e('h2', array(), _('Import tasks using a CSV file'));
-echo $HTML->openForm(array('enctype' => 'multipart/form-data', 'method' => 
'post', 'action' => 
getStringFromServer('PHP_SELF').'?group_project_id='.$group_project_id.'&group_id='.$group_id.'&func=postuploadcsv'));
+echo $HTML->openForm(array('enctype' => 'multipart/form-data', 'method' => 
'post', 'action' => 
'/pm/task.php?group_project_id='.$group_project_id.'&group_id='.$group_id.'&func=postuploadcsv'));
 echo html_e('p', array(), _('Choose a file in the proper .csv format for 
uploading.'));
 echo html_e('input', array('type' => 'file', 'name' => 'userfile', 'required' 
=> 'required')).html_e('br');
 echo html_e('p', array(),
diff --git a/src/www/pm/deletetask.php b/src/www/pm/deletetask.php
index 209d02e..58e9ac7 100644
--- a/src/www/pm/deletetask.php
+++ b/src/www/pm/deletetask.php
@@ -29,7 +29,7 @@ global $HTML;
 pm_header(array('title'=>sprintf(_("Delete Task [T%s]"), $project_task_id),
                 'group_project_id'=>$group_project_id));
 
-echo $HTML->openForm(array('action' => 
getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_project_id='.$group_project_id,
 'method' => 'post'));
+echo $HTML->openForm(array('action' => 
'/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id, 
'method' => 'post'));
 ?>
 <input type="hidden" name="func" value="postdeletetask" />
 <input type="hidden" name="project_task_id" value="<?php echo 
$project_task_id; ?>" />
@@ -56,8 +56,6 @@ echo $HTML->openForm(array('action' => 
getStringFromServer('PHP_SELF').'?group_i
        </tr>
 
 </table>
-</form>
-
 <?php
 echo $HTML->closeForm();
 
diff --git a/src/www/pm/ganttpage.php b/src/www/pm/ganttpage.php
index 0005ddb..9f744de 100644
--- a/src/www/pm/ganttpage.php
+++ b/src/www/pm/ganttpage.php
@@ -6,7 +6,7 @@
  * Copyright 2002 GForge, LLC, Tim Perdue
  * Copyright 2010, FusionForge Team
  * Copyright (C) 2012 Alain Peyrat - Alcatel-Lucent
- * Copyright 2013-2014, Franck Villaume - TrivialDev
+ * Copyright 2013-2015, Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -178,15 +178,16 @@ $order_col_arr[] = 'end_date';
 $order_col_arr[] = 'percent_complete';
 $order_box = html_build_select_box_from_arrays($order_col_arr, $title_arr, 
'_order', $_order, false);
 
-echo ' <form action="'. getStringFromServer('PHP_SELF') 
.'?group_id='.$group_id.'&amp;group_project_id='.$group_project_id.'&amp;func=ganttpage"
 method="post">
-       <table width="10%" class="tableheading">
+echo $HTML->openForm(array('action' => 
'/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=ganttpage',
 'method' => 'post'));
+echo ' <table width="10%" class="tableheading">
        <tr>
                <td>'._('Assignee').'<br />'. $tech_box .'</td>
                <td>'._('Status').'<br />'. $status_box .'</td>
                <td>'._('Category').'<br />'. $cat_box .'</td>
                <td>'._('Sort On').'<br />'. $order_box .'</td>
                <td><input type="submit" name="submit" value="'._('Browse').'" 
/></td>
-       </tr></table></form>';
+       </tr></table>';
+echo $HTML->closeForm();
 echo '<div id="workSpace" style="padding:0; overflow-y:auto; 
overflow-x:hidden; border:1px solid #e5e5e5; position:relative; margin:0 
5px;"></div>';
 ?>
 <script type="text/javascript">

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

commit e46751b4758150644c4b91645e37ea6d2a0db895
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 11 20:41:45 2015 +0200

    pm ganttpage: fix commit 0d4039f9f9ed34c3beb78c339b2095f7556a9109

diff --git a/src/www/pm/ganttpage.php b/src/www/pm/ganttpage.php
index 5e1094b..0005ddb 100644
--- a/src/www/pm/ganttpage.php
+++ b/src/www/pm/ganttpage.php
@@ -29,7 +29,8 @@ require_once $gfcommon.'pm/ProjectTaskFactory.class.php';
 require_once $gfwww.'include/unicode.php';
 require_once $gfwww.'include/html.php';
 
-$HTML->Theme();
+global $HTML;
+
 html_use_jqueryteamworkgantt();
 html_generic_fileheader(_('Gantt Chart'));
 echo $HTML->getJavascripts();

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

commit b0621ee14a25c1099f8be74b5649cb0c95c99e09
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 11 20:06:01 2015 +0200

    more HTML helpers & remove PHP_SELF

diff --git a/src/www/pm/deletetask.php b/src/www/pm/deletetask.php
index 126300e..209d02e 100644
--- a/src/www/pm/deletetask.php
+++ b/src/www/pm/deletetask.php
@@ -5,6 +5,7 @@
  * Copyright 1999/2000, Sourceforge.net Tim Perdue
  * Copyright 2002 GForge, LLC, Tim Perdue
  * Copyright 2010, FusionForge Team
+ * Copyright 2015, Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -23,11 +24,13 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+global $HTML;
+
 pm_header(array('title'=>sprintf(_("Delete Task [T%s]"), $project_task_id),
                 'group_project_id'=>$group_project_id));
-?>
 
-<form action="<?php echo 
getStringFromServer('PHP_SELF')."?group_id=$group_id&amp;group_project_id=$group_project_id";
 ?>" method="post">
+echo $HTML->openForm(array('action' => 
getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_project_id='.$group_project_id,
 'method' => 'post'));
+?>
 <input type="hidden" name="func" value="postdeletetask" />
 <input type="hidden" name="project_task_id" value="<?php echo 
$project_task_id; ?>" />
 
@@ -56,6 +59,7 @@ pm_header(array('title'=>sprintf(_("Delete Task [T%s]"), 
$project_task_id),
 </form>
 
 <?php
+echo $HTML->closeForm();
 
 pm_footer();
 
diff --git a/src/www/pm/detail_task.php b/src/www/pm/detail_task.php
index 5d79c4c..0735e5f 100644
--- a/src/www/pm/detail_task.php
+++ b/src/www/pm/detail_task.php
@@ -5,7 +5,7 @@
  * Copyright 1999/2000, Sourceforge.net Tim Perdue
  * Copyright 2002 GForge, LLC, Tim Perdue
  * Copyright 2010, FusionForge Team
- * Copyright 2013, Franck Villaume - TrivialDev
+ * Copyright 2013, 2015 Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -115,7 +115,7 @@ $cells = array();
 $cells[] = array($pt->showRelatedArtifacts(), 'colspan' => 3);
 echo $HTML->multiTableRow(array(), $cells);
 $cells = array();
-$cells[] = array($pt->showMessages($sort_comments_chronologically, 
"/pm/task.php?func=detailtask&amp;project_task_id=$project_task_id&amp;group_id=$group_id&amp;group_project_id=$group_project_id"),
 'colspan' => 3);
+$cells[] = array($pt->showMessages($sort_comments_chronologically, 
'/pm/task.php?func=detailtask&project_task_id='.$project_task_id.'&group_id='.$group_id.'&group_project_id='.$group_project_id),
 'colspan' => 3);
 echo $HTML->multiTableRow(array(), $cells);
 $hookParams['task_id'] = $project_task_id;
 $hookParams['group_id'] = $group_id;
diff --git a/src/www/pm/include/ProjectTaskHTML.class.php 
b/src/www/pm/include/ProjectTaskHTML.class.php
index ce46ba6..19e38b5 100644
--- a/src/www/pm/include/ProjectTaskHTML.class.php
+++ b/src/www/pm/include/ProjectTaskHTML.class.php
@@ -5,7 +5,7 @@
  * Copyright 1999/2000, Tim Perdue - Sourceforge
  * Copyright 2002 GForge, LLC
  * Copyright 2010, FusionForge Team
- * Copyright 2014, Franck Villaume - TrivialDev
+ * Copyright 2014, 2015 Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -66,7 +66,7 @@ class ProjectTaskHTML extends ProjectTask {
                        array($this->getID() ));
                $rows=db_numrows($result);
                if ($rows > 0) {
-                       echo '<h3>'._('Tasks That Depend on This Task').'</h3>';
+                       echo html_e('h3', array(), _('Tasks That Depend on This 
Task'));
 
                        $title_arr=array();
                        $title_arr[]=_('Task Id');
@@ -82,7 +82,7 @@ class ProjectTaskHTML extends ProjectTask {
                        }
                        echo $HTML->listTableBottom();
                } else {
-                       echo '<p>'._('No Tasks are Dependent on This 
Task').'</p>';
+                       echo html_e('p', array(), _('No Tasks are Dependent on 
This Task'));
                }
        }
 
@@ -98,7 +98,7 @@ class ProjectTaskHTML extends ProjectTask {
                                $is_admin=true;
                        }
 
-                       echo '<h3>'._('Related Tracker Items').'</h3>';
+                       echo html_e('h3', array(), _('Related Tracker Items'));
 
                        $title_arr=array();
                        $title_arr[]=_('Artifact Summary');
@@ -122,7 +122,7 @@ class ProjectTaskHTML extends ProjectTask {
                        }
                        echo $HTML->listTableBottom();
                } else {
-                       echo '<p>'._('No Related Tracker Items Have Been 
Added').'</p>';
+                       echo html_e('p', array(), _('No Related Tracker Items 
Have Been Added'));
                }
        }
 
@@ -135,14 +135,14 @@ class ProjectTaskHTML extends ProjectTask {
                $rows=db_numrows($result);
 
                if ($rows > 0) {
-                       echo '<h3>'._('Comments')._(': ');
+                       $title = _('Comments')._(': ');
 
                        if ($asc) {
-                               echo 
util_make_link($whereto.'&commentsort=anti', _('Sort comments 
antichronologically'));
+                               $title .= 
util_make_link($whereto.'&commentsort=anti', _('Sort comments 
antichronologically'));
                        } else {
-                               echo 
util_make_link($whereto.'&commentsort=chrono', _('Sort comments 
chronologically'));
+                               $title .= 
util_make_link($whereto.'&commentsort=chrono', _('Sort comments 
chronologically'));
                        }
-                       echo "</h3>\n";
+                       echo html_e('h3', array(), $title);
 
                        $title_arr = array();
                        $title_arr[] = _('Comment');
@@ -166,7 +166,7 @@ class ProjectTaskHTML extends ProjectTask {
                        }
                        echo $HTML->listTableBottom();
                } else {
-                       echo '<p>'._('No Comments Have Been Posted').'</p>';
+                       echo html_e('p', array(), _('No Comments Have Been 
Posted'));
                }
        }
 
@@ -181,7 +181,7 @@ class ProjectTaskHTML extends ProjectTask {
 
                if ($rows > 0) {
 
-                       echo '<h3>'._('Task Change History').'</h3>';
+                       echo html_e('h3', array(), _('Task Change History'));
 
                        $title_arr=array();
                        $title_arr[]=_('Field');
@@ -216,7 +216,7 @@ class ProjectTaskHTML extends ProjectTask {
                        }
                        echo $HTML->listTableBottom();
                } else {
-                       echo '<p>'._('No Changes Have Been Made').'</p>';
+                       echo html_e('p', array(), _('No Changes Have Been 
Made'));
                }
        }
 }
diff --git a/src/www/pm/mod_task.php b/src/www/pm/mod_task.php
index abcee41..1e49eea 100644
--- a/src/www/pm/mod_task.php
+++ b/src/www/pm/mod_task.php
@@ -6,6 +6,7 @@
  * Copyright 2002 GForge, LLC, Tim Perdue
  * Copyright 2010, FusionForge Team
  * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
+ * Copyright 2015, Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -28,19 +29,21 @@ require_once $gfwww.'include/note.php';
 require_once $gfcommon.'reporting/report_utils.php';
 require_once $gfcommon.'reporting/Report.class.php';
 
+global $HTML;
+
 if (getStringFromRequest('commentsort') == 'anti') {
        $sort_comments_chronologically = false;
 } else {
        $sort_comments_chronologically = true;
 }
 
-pm_header(array('title'=>_('Modify 
Task'),'pagename'=>'pm_modtask','group_project_id'=>$group_project_id));
+pm_header(array('title' => _('Modify Task'), 'pagename' => 'pm_modtask', 
'group_project_id' => $group_project_id));
 
 echo notepad_func();
 
+echo $HTML->openForm(array('action' => 
'/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id, 'id' 
=> 'modtaskform', 'method' => 'post'));
 ?>
 
-<form id="modtaskform" action="<?php echo 
getStringFromServer('PHP_SELF')."?group_id=$group_id&amp;group_project_id=$group_project_id";
 ?>" method="post">
 <input type="hidden" name="func" value="postmodtask" />
 <input type="hidden" name="project_task_id" value="<?php echo 
$project_task_id; ?>" />
 <input type="hidden" name="duration" value="<?php echo $pt->getDuration(); ?>" 
/>
@@ -69,7 +72,7 @@ echo notepad_func();
                </td>
 
                <td>
-                       <strong><a href="<?php echo 
util_make_url("/pm/t_follow.php/" . $project_task_id); 
?>">Permalink</a>:</strong><br />
+                       <strong><?php echo 
util_make_link('/pm/t_follow.php/'.$project_task_id, _('Permalink'))._(':'); 
?></strong><br />
                        <?php echo util_make_url("/pm/t_follow.php/" . 
$project_task_id); ?>
                </td>
        </tr>
@@ -86,10 +89,10 @@ echo notepad_func();
                </td>
 
                <td>
-               <strong>Task Detail Information (JSON):</strong><br />
-               <a href="<?php echo util_make_url("/pm/t_lookup.php?tid=" . 
$project_task_id); ?>">application/json</a>
-               or
-               <a href="<?php echo 
util_make_url("/pm/t_lookup.php?text=1&amp;tid=" . $project_task_id); 
?>">text/plain</a>
+               <strong><? echo _('Task Detail Information (JSON)')._(': '); 
?></strong><br />
+               <?php echo 
util_make_link('/pm/t_lookup.php?tid='.$project_task_id, 'application/json').
+               _(' or ').
+               util_make_link('/pm/t_lookup.php?text=1&tid='.$project_task_id, 
'text/plain') ?>
                </td>
        </tr>
 
@@ -99,13 +102,11 @@ echo notepad_func();
                <input type="text" name="summary" size="65" maxlength="65" 
value="<?php echo $pt->getSummary(); ?>" />
                </td>
                <td colspan="2">
-               <a href="<?php echo 
getStringFromServer('PHP_SELF')."?func=deletetask&amp;project_task_id=$project_task_id&amp;group_id=$group_id&amp;group_project_id=$group_project_id";
 ?>"><?php echo _('Delete this task') ?></a>
+               <?php echo 
util_make_link('/pm/task.php?func=deletetask&project_task_id='.$project_task_id.'&group_id='.$group_id.'&group_project_id='.$group_project_id,
 $HTML->getDeletePic(_('Delete this task'), _('Delete this task')).' 
'._('Delete this task')); ?>
                </td>
                <td>
-               <?php echo util_make_link("/export/rssAboTask.php?tid=" .
-                   $project_task_id, html_image('ic/rss.png',
-                   16, 16, array('border' => '0')) . " " .
-                   _('Subscribe to task'));
+               <?php echo 
util_make_link('/export/rssAboTask.php?tid='.$project_task_id,
+                                               html_image('ic/rss.png', 16, 
16, array('border' => '0')).' '._('Subscribe to task'));
                ?>
                </td>
        </tr>
@@ -152,7 +153,7 @@ unset($GLOBALS['editor_was_set_up']);
                $pg->showHourBox ('start_hour',date('G', $pt->getStartDate()));
                $pg->showMinuteBox 
('start_minute',date('i',$pt->getStartDate()));
                ?><br /><?php echo _('The system will modify your start/end 
dates if you attempt to create a start date earlier than the end date of any 
tasks you depend on.') ?>
-               <br /><a href="calendar.php?group_id=<?php echo $group_id; 
?>&amp;group_project_id=<?php echo $group_project_id; ?>" target="_blank"><?php 
echo _('View Calendar') ?></a>
+               <br /><?php 
util_make_link('/pm/calendar.php?group_id='.$group_id.'&group_project_id='.$group_project_id,
 _('View Calendar'), array('target' => '_blank')) ?>
                </td>
        </tr>
 
@@ -206,22 +207,7 @@ unset($GLOBALS['editor_was_set_up']);
                ?>
                </td>
        </tr>
-<!--
-//will add duration and parent selection boxes
-       <tr>
-               <td>
-               <strong><?php echo _('Estimated Hours') . _(': '); 
?></strong><br />
-               <input type="number" name="hours" size="5" value="<?php echo 
$pt->getHours(); ?>" />
-               </td>
 
-               <td colspan="2">
-               <strong><?php echo _('Status') ?></strong><br />
-               <?php
-//             echo $pg->statusBox('status_id', $pt->getStatusID(), false );
-               ?>
-               </td>
-       </tr>
--->
        <tr>
                <td colspan="3">
                        <?php $pt->showDependentTasks(); ?>
@@ -236,7 +222,7 @@ unset($GLOBALS['editor_was_set_up']);
 
        <tr>
                <td colspan="3">
-                       <?php $pt->showMessages($sort_comments_chronologically, 
"/pm/task.php?func=detailtask&amp;project_task_id=$project_task_id&amp;group_id=$group_id&amp;group_project_id=$group_project_id");
 ?>
+                       <?php $pt->showMessages($sort_comments_chronologically, 
'/pm/task.php?func=detailtask&project_task_id='.$project_task_id.'&group_id='.$group_id.'&group_project_id='.$group_project_id);
 ?>
                </td>
        </tr>
        <?php
@@ -257,11 +243,10 @@ unset($GLOBALS['editor_was_set_up']);
        </tr>
 
 </table>
-</form>
-
-<h2><?php echo _('Time tracking'); ?></h2>
-
 <?php
+echo $HTML->closeForm();
+echo html_e('h2', array(), _('Time tracking'));
+
 $title_arr = array();
 $title_arr[]=_('Week');
 $title_arr[]=_('Day');
@@ -274,12 +259,12 @@ $xi = 0;
 
 $report=new Report();
 if ($report->isError()) {
-       exit_error($report->getErrorMessage(),'pm');
+       exit_error($report->getErrorMessage(), 'pm');
 }
 $report->setStartDate($pt->ProjectGroup->Group->getStartDate());
 
-echo '<form id="time-tracking" action="/reporting/timeadd.php" method="post">
-       <input type="hidden" name="project_task_id" 
value="'.$project_task_id.'" />
+echo $HTML->openForm(array('array' => '/reporting/timeadd.php', 'id' => 
'time-tracking', 'method' => 'post'));
+echo '<input type="hidden" name="project_task_id" value="'.$project_task_id.'" 
/>
        <input type="hidden" name="submit" value="1" />';
 echo $HTML->listTableTop ($title_arr);
 echo '<tr '.$HTML->boxGetAltRowStyle($xi++).'>
@@ -331,7 +316,7 @@ echo '
 </tr>';
 
 echo $HTML->listTableBottom();
-echo "</form>\n";
+echo $HTML->closeForm();
 
 pm_footer();
 
diff --git a/src/www/pm/t_follow.php b/src/www/pm/t_follow.php
index 80fc624..bcf1f76 100644
--- a/src/www/pm/t_follow.php
+++ b/src/www/pm/t_follow.php
@@ -39,7 +39,7 @@ if (!$tid) {
 $tinfo = getGroupProjectIdGroupId($tid);
 
 if (!$tinfo) {
-    exit_error(_('No Task with ID: ').$tid,'pm');
+    exit_error(_('No Task with ID')._(': ').$tid,'pm');
 }
 
 
session_redirect('/pm/task.php?func=detailtask&project_task_id='.$tinfo['project_task_id'].'&group_id='.$tinfo['group_id'].'&group_project_id='.$tinfo['group_project_id']);
diff --git a/src/www/pm/t_lookup.php b/src/www/pm/t_lookup.php
index f520a8c..0102881 100644
--- a/src/www/pm/t_lookup.php
+++ b/src/www/pm/t_lookup.php
@@ -38,15 +38,15 @@ if (!$tid) {
 $tinfo = getGroupProjectIdGroupId($tid);
 
 if (!$tinfo) {
-    exit_error(_('No Task with ID: ').$tid,'pm');
+    exit_error(_('No Task with ID')._(': ').$tid,'pm');
 }
 
 $asuser = getStringFromRequest('asuser');
 
 if (getIntFromRequest('text'))
-       $asformat = "text/plain; charset=\"UTF-8\"";
+       $asformat = 'text/plain; charset="UTF-8"';
 else
-       $asformat = "application/json; charset=\"UTF-8\"";
+       $asformat = 'application/json; charset="UTF-8"';
 
 $islogin = session_loggedin();
 $isadmin = forge_check_global_perm ('forge_admin');
diff --git a/src/www/tracker/reporting/index.php 
b/src/www/tracker/reporting/index.php
index 4e9bc69..1898692 100644
--- a/src/www/tracker/reporting/index.php
+++ b/src/www/tracker/reporting/index.php
@@ -5,7 +5,7 @@
  * Copyright 2003, Tim Perdue, [email protected]
  * Copyright 2004 (c) GForge LLC
  * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
- * Copyright 2013-2014, Franck Villaume - TrivialDev
+ * Copyright 2013-2015, Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -118,9 +118,8 @@ html_use_jqueryjqplotplugindateAxisRenderer();
 html_use_jqueryjqplotpluginBar();
 
 $h->header(array('title' => _('Tracker Activity Reporting')));
-
+echo $HTML->openForm(array('action' => 
'/tracker/reporting/?group_id='.$group_id, 'method' => 'get'));
 ?>
-<form action="<?php echo getStringFromServer('PHP_SELF'); ?>" method="get">
 <table class="centered">
 <tr>
 <td>
@@ -138,8 +137,8 @@ $h->header(array('title' => _('Tracker Activity 
Reporting')));
 <td><input type="submit" name="submit" value="<?php echo _("Refresh") ?>" 
/></td>
 </tr>
 </table>
-</form>
 <?php
+echo $HTML->closeForm();
 if ($start == $end) {
        echo $HTML->error_msg(_('Start and end dates must be different'));
 } else {
diff --git a/src/www/tracker/roadmap.php b/src/www/tracker/roadmap.php
index 3b3e99f..dcde05d 100644
--- a/src/www/tracker/roadmap.php
+++ b/src/www/tracker/roadmap.php
@@ -3,7 +3,7 @@
  * FusionForge trackers
  *
  * Copyright 2011, Alcatel-Lucent
- * Copyright 2012,2014, Franck Villaume - TrivialDev
+ * Copyright 2012,2015, Franck Villaume - TrivialDev
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -384,8 +384,7 @@ if (!$at_arr || count($at_arr) < 1) {
 
                                        // Artifact id
                                        
$rmap[$release_value_id][$artifact_type_name] .= 
sprintf($templates[$template]['ticket_id'],
-                                                       
dirname(getStringFromServer('PHP_SELF')).'/?func=detail&amp;aid='.$artifact_id .
-                                                               
'&amp;group_id='. $group_id .'&amp;atid='.$ath->getID(),
+                                                       
util_make_uri('/tracker/?func=detail&aid='.$artifact_id.'&group_id='.$group_id.'&atid='.$ath->getID()),
                                                        $artifact_id);
 
                                        // Summary
@@ -413,15 +412,18 @@ if (!$at_arr || count($at_arr) < 1) {
                // Start selection tools box
                echo '<div id="div_options">';
                echo '<fieldset><legend>'._('Display options').'</legend>';
-               echo '<form 
action="'.getStringFromServer('PHP_SELF').'?group_id='.$group_id.'" 
method="post">'."\n";
-               echo '<table class="fullwidth"><tr>'."\n";
+               echo $HTML->openForm(array('action' => 
'/tracker/roadmap.php?group_id='.$group_id, 'method' => 'post'));
+               echo $HTML->listTableTop();
+               echo '<tr>'."\n";
 
                if (! empty($roadmaps) && ! $selected_release) {
-                       echo '<td class="align-center">' . _("Roadmap") . _(": 
") . '<select name="roadmap" id="roadmap">'."\n";
+                       echo '<td class="align-center">' . _('Roadmap')._(': ');
                        foreach ($roadmaps as $roadmap) {
-                               echo '<option 
value="'.$roadmap->getID().'"'.($roadmap->getID() == $roadmap_id ? ' 
selected="selected"' : '').' >'.$roadmap->getName().'</option>'."\n";
+                               $roadmap_select[$roadmap->getID()] = 
$roadmap->getName();
                        }
-                       echo '</select></td>'."\n";
+                       $roadmap_html_params['id'] = 'roadmap';
+                       echo html_build_select_box_from_assoc($roadmap_select, 
'roadmap', $roadmap_id, false, '', false, '', false, $roadmap_html_params);
+                       echo '</td>'."\n";
                }
 
                if (! $selected_release) {
@@ -434,21 +436,29 @@ if (!$at_arr || count($at_arr) < 1) {
                        echo '</select></td>';
                }
                else {
-                       echo sprintf('<td><a href="%s" >'._('Return to last 
release(s)').'</a></td>'."\n",
-                                       
getStringFromServer('PHP_SELF').'?group_id='.$group_id.($roadmap_id ? 
'&amp;roadmap_id='.$roadmap_id : ''));
+                       echo html_e('td', array(),
+                               
util_make_link('/tracker/roadmap.php?group_id='.$group_id.($roadmap_id ? 
'&roadmap_id='.$roadmap_id : ''), _('Return to last release(s)')));
                }
 
-               echo '<td class="align-center">' . _("Display graphs") . _(": 
") . '<select name="display_graph" id="display_graph">'."\n";
+               echo '<td class="align-center">' . _('Display graphs')._(': ');
                if (! $selected_release) {
-                       echo '<option value="2"'.($display_graph == 2 ? ' 
selected="selected"' : '').' >'._('Only last').'</option>'."\n";
+                       $display_graph_values[] = _('Only last');
+                       $display_graph_ids[] = 2;
                }
-               echo '<option value="1"'.($display_graph == 1 ? ' 
selected="selected"' : '').' >'._('All').'</option>'."\n";
-               echo '<option value="0"'.($display_graph == 0 ? ' 
selected="selected"' : '').' >'._('None').'</option>'."\n";
-               echo '</select></td>'."\n";
+               $display_graph_values[] = _('All');
+               $display_graph_ids[] = 1;
+               $display_graph_values[] = _('None');
+               $display_graph_ids[] = 0;
+               $display_graph_html_params['id'] = 'display_graph';
+               echo html_build_select_box_from_arrays($display_graph_ids, 
$display_graph_values, 'display_graph', $display_graph, false, '', false, '', 
false, $display_graph_html_params);
+               echo '</td>'."\n";
 
                // End selection tools box
                echo '<td id="noscript" class="align-center"><input 
type="submit" name="submit" value="'._('Submit').'" /></td>';
-               echo '</tr></table></form></fieldset></div>'."\n";
+               echo '</tr>';
+               echo $HTML->listTableBottom();
+               echo $HTML->closeForm();
+               echo '</fieldset></div>'."\n";
                echo '<br/>';
        }
 
@@ -472,7 +482,7 @@ if (!$at_arr || count($at_arr) < 1) {
                echo '<div id="release_'.$i.'" >'."\n";
                echo sprintf($templates[$template]['begin_release'],
                                $roadmap_name._(': '),
-                               
getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&amp;roadmap_id='.$roadmap_id.'&amp;release='.urlencode($release_value),
+                               
util_make_uri('/tracker/roadmap.php?group_id='.$group_id.'&amp;roadmap_id='.$roadmap_id.'&amp;release='.urlencode($release_value)),
                                $release_value,
                                ' 
'.html_image("ic/file-txt.png",'','',array("title"=>_('Display as text'), 
"onclick"=>"getReleaseTxt('".addslashes($release_value)."')")));
 
@@ -490,32 +500,30 @@ if (!$at_arr || count($at_arr) < 1) {
                                        }
                                }
                        }
-                       if ($graph){
-                               ?>
-                               <div class="graph<?php echo $graph_class ?>" 
<?php echo ($graph_class && $display_graph == 2 ? 'style="display: none"' : '') 
?>>
-                               <table class="fullwidth">
-                               <tr>
+                       if ($graph) {
+                               echo '<div class="graph'.$graph_class.'"'. 
($graph_class && $display_graph == 2 ? 'style="display: none" >' : '>');
+                               echo $HTML->listTableTop();
+                               echo '<tr>
                                        <td class="align-center">
                                        <table class="progress halfwidth">
                                        <tbody>
-                                               <tr><?php echo $graph; ?></tr>
+                                               <tr>'. $graph .'</tr>
                                        </tbody>
                                        </table>
                                        <table class="halfwidth">
-                                               <tr class="align-center"><?php 
echo $legend ?></tr>
+                                               <tr class="align-center">' 
.$legend. '</tr>
                                        </table>
                                        </td>
-                               </tr>
-                               </table>
-                               </div>
-                               <?php
+                               </tr>';
+                               echo $HTML->listTableBottom();
+                               echo '</div>';
                        }
                }
 
                echo ''."\n";
 
                if (! array_key_exists($release_value, $rmap)) {
-                       echo '<p>'._('No data for this release').'</p>'."\n";
+                       echo html_e('p', array(), _('No data for this 
release'));
                }
                else {
                        foreach ($rmap[$release_value] as $artifact_type_name 
=> $ticket_list) {
@@ -594,6 +602,7 @@ if (!$at_arr || count($at_arr) < 1) {
                                jQuery('#nb_release').change(function() {
                                        updatePage();
                                });
+
                        <?php
                        }
 
@@ -603,20 +612,20 @@ if (!$at_arr || count($at_arr) < 1) {
                                var divs = document.getElementsByTagName('div');
                                for (var i = 0; i < divs.length; i++) {
                                        if (divs[i].className == 'graph0') {
-                                         if (select_val == 1 || select_val == 
2) {
-                                                 divs[i].style.display = 
'inline';
-                                         }
-                                         else {
-                                                 divs[i].style.display = 
'none';
-                                         }
+                                               if (select_val == 1 || 
select_val == 2) {
+                                                       divs[i].style.display = 
'inline';
+                                               }
+                                               else {
+                                                       divs[i].style.display = 
'none';
+                                               }
                                        }
                                        if (divs[i].className == 'graph1') {
-                                         if (select_val == 1) {
-                                                 divs[i].style.display = 
'inline';
-                                         }
-                                         else {
-                                                 divs[i].style.display = 
'none';
-                                         }
+                                               if (select_val == 1) {
+                                                       divs[i].style.display = 
'inline';
+                                               }
+                                               else {
+                                                       divs[i].style.display = 
'none';
+                                               }
                                        }
                                }
                        });
@@ -640,15 +649,15 @@ if (!$at_arr || count($at_arr) < 1) {
                        }
 
                        function getReleaseTxt(release) {
-                               var selected_roadmap = $('#roadmap').val();
-                               var selected_nb_release = 
$('#nb_release').val();
-                               var selected_display_graph = 
$('#display_graph').val();
+                               var selected_roadmap = jQuery('#roadmap').val();
+                               var selected_nb_release = 
jQuery('#nb_release').val();
+                               var selected_display_graph = 
jQuery('#display_graph').val();
                                jQuery.ajax({
                                        type: 'POST',
                                        url: 'roadmap.php',
                                        data: '<?php echo 
'group_id='.$group_id.'&roadmap_id='.$roadmap_id 
?>&ajax=1&template=1&release='+release,
                                        success: function(rep) {
-                                               
jQuery('#div_options').empty().append('<a href="<?php echo 
getStringFromServer('PHP_SELF').'?group_id='.$group_id 
?>&roadmap_id='+selected_roadmap+'&nb_release='+selected_nb_release+'&display_graph='+selected_display_graph+'"
 ><?php echo _('Return to last release(s)') ?></a>');
+                                               
jQuery('#div_options').empty().append('<a href="<?php echo 
'/tracker/roadmap.php?group_id='.$group_id 
?>&roadmap_id='+selected_roadmap+'&nb_release='+selected_nb_release+'&display_graph='+selected_display_graph+'"
 ><?php echo _('Return to last release(s)') ?></a>');
                                                
jQuery('#div_roadmap').empty().append(rep);
                                        }
                                });

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

commit 62af65ec0e683dd2a184a9c91fc233a44f0c3abb
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 11 20:03:09 2015 +0200

    html utils. fix compatibility in functions html_build_select_box_from_assoc 
& html_build_select_box_from_arrays

diff --git a/src/www/include/html.php b/src/www/include/html.php
index 3320850..a66a041 100644
--- a/src/www/include/html.php
+++ b/src/www/include/html.php
@@ -240,16 +240,19 @@ function html_get_timezone_popup($title = 'timezone', 
$selected = 'xzxz') {
 /**
  * html_build_select_box_from_assoc() - Takes one assoc array and returns a 
pop-up box.
  *
- * @param      array   $arr            An array of items to use.
- * @param      string  $select_name    The name you want assigned to this form 
element.
- * @param      string  $checked_val    The value of the item that should be 
checked.
- * @param      bool    $swap           Whether we should swap the keys / names.
- * @param      bool    $show_100       Whether or not to show the '100 row'.
- * @param      string  $text_100       What to call the '100 row' defaults to 
none.
- * @param      array   $html_params    Array of other html param for an element
+ * @param      array           $arr            An array of items to use.
+ * @param      string          $select_name    The name you want assigned to 
this form element.
+ * @param      string          $checked_val    The value of the item that 
should be checked.
+ * @param      bool            $swap           Whether we should swap the keys 
/ names.
+ * @param      bool            $show_100       Whether or not to show the '100 
row'.
+ * @param      string          $text_100       What to call the '100 row' 
defaults to none.
+ * @param      bool            $show_any       Whether or not to show the 'Any 
row'.
+ * @param      string          $text_any       What to call the 'Any row' 
defaults to any.
+ * @param      bool|array      $allowed        Array of all allowed values 
from the full list.
+ * @param      array           $html_params    Array of other html param for 
an element.
  * @return     string
  */
-function html_build_select_box_from_assoc($arr, $select_name, $checked_val = 
'xzxz', $swap = false, $show_100 = false, $text_100 = 'None', $html_params = 
array()) {
+function html_build_select_box_from_assoc($arr, $select_name, $checked_val = 
'xzxz', $swap = false, $show_100 = false, $text_100 = 'None', $show_any = 
false, $text_any = 'any', $allowed = false, $html_params = array()) {
        if ($swap) {
                $keys = array_values($arr);
                $vals = array_keys($arr);
@@ -257,7 +260,7 @@ function html_build_select_box_from_assoc($arr, 
$select_name, $checked_val = 'xz
                $vals = array_values($arr);
                $keys = array_keys($arr);
        }
-       return html_build_select_box_from_arrays($keys, $vals, $select_name, 
$checked_val, $show_100, $text_100, $html_params);
+       return html_build_select_box_from_arrays($keys, $vals, $select_name, 
$checked_val, $show_100, $text_100, $show_any, $text_any, $allowed, 
$html_params);
 }
 
 /**

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

commit 0fef2ed80879207d42a355f3c98ad4c2a1514185
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 11 19:50:49 2015 +0200

    html utils. Add html_params to functions html_build_select_box_from_assoc & 
html_build_select_box_from_arrays to handle more html params in select element

diff --git a/src/www/include/html.php b/src/www/include/html.php
index 9a5e499..3320850 100644
--- a/src/www/include/html.php
+++ b/src/www/include/html.php
@@ -246,9 +246,10 @@ function html_get_timezone_popup($title = 'timezone', 
$selected = 'xzxz') {
  * @param      bool    $swap           Whether we should swap the keys / names.
  * @param      bool    $show_100       Whether or not to show the '100 row'.
  * @param      string  $text_100       What to call the '100 row' defaults to 
none.
+ * @param      array   $html_params    Array of other html param for an element
  * @return     string
  */
-function html_build_select_box_from_assoc($arr, $select_name, $checked_val = 
'xzxz', $swap = false, $show_100 = false, $text_100 = 'None') {
+function html_build_select_box_from_assoc($arr, $select_name, $checked_val = 
'xzxz', $swap = false, $show_100 = false, $text_100 = 'None', $html_params = 
array()) {
        if ($swap) {
                $keys = array_values($arr);
                $vals = array_keys($arr);
@@ -256,7 +257,7 @@ function html_build_select_box_from_assoc($arr, 
$select_name, $checked_val = 'xz
                $vals = array_values($arr);
                $keys = array_keys($arr);
        }
-       return html_build_select_box_from_arrays($keys, $vals, $select_name, 
$checked_val, $show_100, $text_100);
+       return html_build_select_box_from_arrays($keys, $vals, $select_name, 
$checked_val, $show_100, $text_100, $html_params);
 }
 
 /**
@@ -551,11 +552,12 @@ function html_use_jquerybrowser() {
  * @param      bool            $show_any       Whether or not to show the 'Any 
row'
  * @param      string          $text_any       What to call the 'Any row' 
defaults to any
  * @param      bool|array      $allowed        Array of all allowed values 
from the full list.
+ * @param      array           $html_params    Array of other html param for 
an element
  * @return     string
  */
 function html_build_select_box_from_arrays($vals, $texts, $select_name, 
$checked_val = 'xzxz',
                                           $show_100 = true, $text_100 = 'none',
-                                          $show_any = false, $text_any = 
'any', $allowed = false) {
+                                          $show_any = false, $text_any = 
'any', $allowed = false, $html_params = array()) {
        $have_a_subelement = false;
        $return = '';
 
@@ -566,7 +568,11 @@ function html_build_select_box_from_arrays($vals, $texts, 
$select_name, $checked
 
        //TODO: remove this ugly ack to get something more generic...
        $title = html_get_tooltip_description($select_name);
-       $id = '';
+       if (isset($html_params['id'])) {
+               $id = $html_params['id'];
+       } else {
+               $id = '';
+       }
        if ($title) {
                $id = 'tracker-'.$select_name.'"';
                if (preg_match('/\[\]/', $id)) {

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

commit 0242ab86d1fe0a530e5fcb2b24dfc8923b11c1b6
Author: Franck Villaume <[email protected]>
Date:   Fri Sep 11 19:28:53 2015 +0200

    indent

diff --git a/src/common/tracker/RoadmapFactory.class.php 
b/src/common/tracker/RoadmapFactory.class.php
index 23e3ea0..043f41a 100644
--- a/src/common/tracker/RoadmapFactory.class.php
+++ b/src/common/tracker/RoadmapFactory.class.php
@@ -66,7 +66,7 @@ class RoadmapFactory extends Error {
                        return;
                }
                $this->group =& $group;
-      $this->group_id = $group->getID();
+               $this->group_id = $group->getID();
        }
 
        public function getRoadmaps($enable_only=false) {

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

Summary of changes:
 src/common/include/Group.class.php                 |  16 +-
 src/common/tracker/RoadmapFactory.class.php        |   2 +-
 .../widget/Widget_ProjectDescription.class.php     |  14 +-
 .../widget/Widget_ProjectPublicAreas.class.php     |   6 +-
 src/db/20150914-db_images-logo.sql                 |   1 +
 .../hudson_Widget_JobBuildHistory.class.php        |   5 +-
 .../include/hudson_Widget_JobLastBuilds.class.php  |  13 +-
 .../include/hudson_Widget_JobTestResults.class.php |   8 +-
 .../include/hudson_Widget_JobTestTrend.class.php   |  12 +-
 src/www/dbimage.php                                |   8 +-
 src/www/include/html.php                           |  29 ++-
 src/www/news/admin/index.php                       |  12 +-
 src/www/news/admin/news_admin_utils.php            |  35 ++--
 src/www/news/submit.php                            |  22 +--
 src/www/pm/browse_task.php                         | 145 ++++++--------
 src/www/pm/csv.php                                 |   4 +-
 src/www/pm/deletetask.php                          |  10 +-
 src/www/pm/detail_task.php                         |   4 +-
 src/www/pm/ganttpage.php                           |  12 +-
 src/www/pm/include/ProjectTaskHTML.class.php       |  24 +--
 src/www/pm/mod_task.php                            |  59 +++---
 src/www/pm/t_follow.php                            |   2 +-
 src/www/pm/t_lookup.php                            |   6 +-
 src/www/project/admin/editimages.php               | 211 +++++++++++----------
 src/www/tracker/reporting/index.php                |   7 +-
 src/www/tracker/roadmap.php                        |  99 +++++-----
 26 files changed, 387 insertions(+), 379 deletions(-)
 create mode 100644 src/db/20150914-db_images-logo.sql


hooks/post-receive
-- 
FusionForge

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

Reply via email to