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  d6d296411e6ce4709b8b4854a8b736e3e06938f9 (commit)
      from  2cfe8459a576c0ba6aa687ff3fbf68d39af8bc25 (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=d6d296411e6ce4709b8b4854a8b736e3e06938f9

commit d6d296411e6ce4709b8b4854a8b736e3e06938f9
Author: Franck Villaume <franck.villa...@trivialdev.com>
Date:   Mon Nov 5 21:23:59 2018 +0100

    /users/<nickname> improvement: be able to add/remove widgets to build the 
public page of the user

diff --git a/src/common/widget/Widget.class.php 
b/src/common/widget/Widget.class.php
index 6c910ff..e8c1808 100644
--- a/src/common/widget/Widget.class.php
+++ b/src/common/widget/Widget.class.php
@@ -339,7 +339,7 @@ require_once 
$gfcommon.'widget/Widget_UserhomeActivity.class.php';
         * @param unknown_type $owner_type
         * @return mixed
         */
-       static function getCodendiWidgets($owner_type) {
+       static function getCodendiWidgets($owner_type, $owner_id = null) {
                switch ($owner_type) {
                        case WidgetLayoutManager::OWNER_TYPE_USER:
                                $widgets = array('myadmin', 'mysurveys', 
'myprojects', 'mybookmarks',
diff --git a/src/common/widget/WidgetLayoutManager.class.php 
b/src/common/widget/WidgetLayoutManager.class.php
index a959ac7..e201e96 100644
--- a/src/common/widget/WidgetLayoutManager.class.php
+++ b/src/common/widget/WidgetLayoutManager.class.php
@@ -2,7 +2,7 @@
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
  * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
- * Copyright 2013-2017, Franck Villaume - TrivialDev
+ * Copyright 2013-2018, Franck Villaume - TrivialDev
  *
  * This file is a part of Fusionforge.
  *
@@ -560,7 +560,7 @@ class WidgetLayoutManager {
                        AND owner_id = $2
                        AND layout_id = $3
                        AND content_id = 0 AND column_id <> 0";
-               $res = db_query_params($sql,array($owner_type, $owner_id, 
$layout_id));
+               $res = db_query_params($sql, array($owner_type, $owner_id, 
$layout_id));
                while($data = db_fetch_array($res)) {
                        $used_widgets[] = $data['name'];
                }
@@ -616,7 +616,7 @@ class WidgetLayoutManager {
                        //]]></script>
                        <?php
                        $sql = "SELECT * FROM layouts WHERE scope='S' ORDER BY 
id ";
-                       $req_layouts = db_query_params($sql,array());
+                       $req_layouts = db_query_params($sql, array());
                        echo $HTML->listTableTop();
                        $is_custom = true;
                        while ($data = db_fetch_array($req_layouts)) {
@@ -676,7 +676,7 @@ class WidgetLayoutManager {
                                <tbody>
                                <tr class="top">
                                <td>';
-                       $after .= 
$this->_displayWidgetsSelectionForm(sprintf(_("%s Widgets"),  
forge_get_config('forge_name')), Widget::getCodendiWidgets($owner_type), 
$used_widgets);
+                       $after .= 
$this->_displayWidgetsSelectionForm(Widget::getCodendiWidgets($owner_type), 
$used_widgets, $owner_id);
                        echo '</td>
                                <td id="widget-content-categ">'. $after .'</td>
                                </tr>
@@ -806,16 +806,16 @@ class WidgetLayoutManager {
        /**
         * _displayWidgetsSelectionForm - displays a widget selection form
         *
-        * @param       string  $title                  title
-        * @param       array   $widgets                widgets
+        * @param       array   $widgets        widgets
         * @param       array   $used_widgets   used widgets
+        * @param       int     $owner_id
         * @return      string
         */
-       function _displayWidgetsSelectionForm($title, $widgets, $used_widgets) {
+       function _displayWidgetsSelectionForm($widgets, $used_widgets, 
$owner_id = null) {
                $hp = Codendi_HTMLPurifier::instance();
                $additionnal_html = '';
                if (count($widgets)) {
-                       $categs = $this->getCategories($widgets);
+                       $categs = $this->getCategories($widgets, $owner_id);
                        $widget_rows = array();
                        if (count($categs)) {
                                // display the categories selector in left panel
@@ -861,12 +861,13 @@ class WidgetLayoutManager {
         * getCategories - sort the widgets in their different categories
         *
         * @param       array   $widgets
+        * @param       int     $owner_id
         * @return      array   (category => widgets)
         */
-       function getCategories($widgets) {
+       function getCategories($widgets, $owner_id = null) {
                $categ = array();
                foreach($widgets as $widget_name) {
-                       if ($widget = Widget::getInstance($widget_name)) {
+                       if ($widget = Widget::getInstance($widget_name, 
$owner_id)) {
                                if ($widget->isAvailable()) {
                                        $category = str_replace(' ', '_', 
$widget->getCategory());
                                        $cs = explode(',', $category);
diff --git a/src/www/users b/src/www/users
index ddbcb30..4f1590a 100644
--- a/src/www/users
+++ b/src/www/users
@@ -5,6 +5,7 @@
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2002-2004 (c) GForge Team
  * Copyright 2010-2011, Franck Villaume - Capgemini
+ * Copyright 2018, Franck Villaume - TrivialDev
  * http://fusionforge.org/
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -90,6 +91,26 @@ if (!$user || !is_object($user) || $user->isError() || 
!$user->isActive()) {
                if (!forge_get_config('user_home_widget')) {
                        include $gfwww.'include/user_home.php';
                } else {
+                       $sql = "SELECT l.*
+                                       FROM layouts AS l INNER JOIN 
owner_layouts AS o ON(l.id = o.layout_id)
+                                       WHERE o.owner_type = $1
+                                       AND o.owner_id = $2
+                                       AND o.is_default = 1
+                                       ";
+                       $res = 
db_query_params($sql,array(WidgetLayoutManager::OWNER_TYPE_USERHOME, 
$user->getID()));
+                       $layout_id = db_result($res, 0 , 'id');
+                       if (!$layout_id) {
+                               $layout_id = 1;
+                       }
+                       $ap = html_ap();
+                       echo html_ao('ul', array('class' => 'widget_toolbar'));
+                       $url = 
'/widgets/widgets.php?owner='.WidgetLayoutManager::OWNER_TYPE_USERHOME.$user->getID().'&layout_id='.$layout_id;
+                       $labels = array(_('Add widgets'), _('Customize 
Layout'));
+                       $urls = array($url, $url.'&update=layout');
+                       for ($i = 0; $i < count($urls); $i++) {
+                               echo html_e('li', array(), 
util_make_link($urls[$i], $labels[$i]));
+                       }
+                       echo html_ac($ap);
                        $lm = new WidgetLayoutManager();
                        $lm->displayLayout($user->getID(), 
WidgetLayoutManager::OWNER_TYPE_USERHOME);
                }
diff --git a/src/www/widgets/updatelayout.php b/src/www/widgets/updatelayout.php
index 7b0ab12..f3ce031 100644
--- a/src/www/widgets/updatelayout.php
+++ b/src/www/widgets/updatelayout.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * Copyright (c) Xerox Corporation, Codendi Team, 2001-2009. All rights 
reserved
- * Copyright 2016, Franck Villaume - TrivialDev
+ * Copyright 2016,2018, Franck Villaume - TrivialDev
  * http://fusionforge.org
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -39,10 +39,11 @@ if ($owner) {
        $owner_type = substr($owner, 0, 1);
        switch($owner_type) {
                case WidgetLayoutManager::OWNER_TYPE_USER:
-                       $owner_id = user_getid();
-                       $layout_id =(int)$request->get('layout_id');
-                       $redirect = '/my/';
-                       $good = true;
+                       if ($owner_id ==  user_getid()) {
+                               $layout_id =(int)$request->get('layout_id');
+                               $redirect = '/my/';
+                               $good = true;
+                       }
                        break;
                case WidgetLayoutManager::OWNER_TYPE_GROUP:
                        $pm = ProjectManager::instance();
@@ -82,6 +83,14 @@ if ($owner) {
                                $good = true;
                        }
                        break;
+               case WidgetLayoutManager::OWNER_TYPE_USERHOME:
+                       if ($owner_id == user_getid()) {
+                               $user = user_get_object(user_getid());
+                               $layout_id =(int)$request->get('layout_id');
+                               $redirect = '/users/'.$user->getUnixName();
+                               $good = true;
+                       }
+                       break;
                default:
                        break;
        }
diff --git a/src/www/widgets/widget.php b/src/www/widgets/widget.php
index fb03bf6..eed6a2d 100644
--- a/src/www/widgets/widget.php
+++ b/src/www/widgets/widget.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * http://fusionforge.org
- * Copyright 2016, Franck Villaume - TrivialDev
+ * Copyright 2016,2018, 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
@@ -40,9 +40,10 @@ if ($request->valid($vOwner)) {
        $owner_type = substr($owner, 0, 1);
        switch($owner_type) {
                case WidgetLayoutManager::OWNER_TYPE_USER:
-                       $owner_id = user_getid();
-                       $redirect = '/my/';
-                       $good = true;
+                       if ($owner_id == user_getid()) {
+                               $redirect = '/my/';
+                               $good = true;
+                       }
                        break;
                case WidgetLayoutManager::OWNER_TYPE_GROUP:
                        $pm = ProjectManager::instance();
@@ -74,6 +75,12 @@ if ($request->valid($vOwner)) {
                                $good = true;
                        }
                        break;
+               case WidgetLayoutManager::OWNER_TYPE_USERHOME:
+                       if ($owner_id == user_getid()) {
+                               $user = user_get_object(user_getid());
+                               $redirect = '/users/'.$user->getUnixName();
+                               $good = true;
+                       }
                default:
                        break;
        }
diff --git a/src/www/widgets/widgets.php b/src/www/widgets/widgets.php
index 7d49ff8..9206a4f 100644
--- a/src/www/widgets/widgets.php
+++ b/src/www/widgets/widgets.php
@@ -107,6 +107,15 @@ if (session_loggedin()) {
                                                }
                                        }
                                        break;
+                               case WidgetLayoutManager::OWNER_TYPE_USERHOME:
+                                       if ($owner_id == user_getid()) {;
+                                               $userm = 
UserManager::instance();
+                                               $current = 
$userm->getCurrentUser();
+                                               
site_header(array('title'=>sprintf(_('Profile Page for %s'), user_getname())));
+                                               
$lm->displayAvailableWidgets(user_getid(), 
WidgetLayoutManager::OWNER_TYPE_USERHOME, $layout_id);
+                                               site_footer();
+                                       }
+                                       break;
                                default:
                                        break;
                        }

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

Summary of changes:
 src/common/widget/Widget.class.php              |  2 +-
 src/common/widget/WidgetLayoutManager.class.php | 21 +++++++++++----------
 src/www/users                                   | 21 +++++++++++++++++++++
 src/www/widgets/updatelayout.php                | 19 ++++++++++++++-----
 src/www/widgets/widget.php                      | 15 +++++++++++----
 src/www/widgets/widgets.php                     |  9 +++++++++
 6 files changed, 67 insertions(+), 20 deletions(-)


hooks/post-receive
-- 
FusionForge

_______________________________________________
Fusionforge-commits mailing list
Fusionforge-commits@lists.fusionforge.org
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits

Reply via email to