1
|
|
|
<?php |
2
|
|
|
require_once('pre.php'); |
3
|
|
|
require_once('common/widget/WidgetLayoutManager.class.php'); |
4
|
|
|
require_once('common/widget/Widget.class.php'); |
5
|
|
|
|
6
|
|
|
$request = HTTPRequest::instance(); |
7
|
|
|
|
8
|
|
|
$lm = new WidgetLayoutManager(); |
9
|
|
|
$good = false; |
10
|
|
|
$redirect = '/'; |
11
|
|
|
$owner = $request->get('owner'); |
12
|
|
|
|
13
|
|
|
if ($owner) { |
14
|
|
|
$owner_id = (int)substr($owner, 1); |
15
|
|
|
$owner_type = substr($owner, 0, 1); |
16
|
|
|
switch($owner_type) { |
17
|
|
|
case WidgetLayoutManager::OWNER_TYPE_USER: |
18
|
|
|
$owner_id = user_getid(); |
19
|
|
|
$layout_id =(int)$request->get('layout_id'); |
20
|
|
|
$redirect = '/my/'; |
21
|
|
|
$good = true; |
22
|
|
|
break; |
23
|
|
|
case WidgetLayoutManager::OWNER_TYPE_GROUP: |
24
|
|
|
$pm = ProjectManager::instance(); |
25
|
|
|
if ($project = $pm->getProject($owner_id)) { |
26
|
|
|
$group_id = $owner_id; |
27
|
|
|
$_REQUEST['group_id'] = $_GET['group_id'] = $group_id; |
28
|
|
|
$request->params['group_id'] = $group_id; //bad! |
29
|
|
|
$redirect = '/projects/'. $project->getUnixName().'/'; |
30
|
|
|
if (!user_ismember($group_id, 'A') && !user_is_super_user()) { |
31
|
|
|
$GLOBALS['Response']->redirect($redirect); |
32
|
|
|
} |
33
|
|
|
$good = true; |
34
|
|
|
} |
35
|
|
|
break; |
36
|
|
|
default: |
37
|
|
|
break; |
38
|
|
|
} |
39
|
|
|
if ($good) { |
40
|
|
|
if (!$request->exist('layout_id')) { |
41
|
|
|
//Search the default one |
42
|
|
|
$layout_id = $lm->getDefaultLayoutId($owner_id, $owner_type); |
43
|
|
|
} else { |
44
|
|
|
$layout_id = (int)$request->get('layout_id'); |
45
|
|
|
} |
46
|
|
|
if ($layout_id || $request->get('action') == 'preferences') { |
47
|
|
|
$name = null; |
48
|
|
|
if ($request->exist('name')) { |
49
|
|
|
$param = $request->get('name'); |
50
|
|
|
$name = array_pop(array_keys($param)); |
|
|
|
|
51
|
|
|
$instance_id = (int)$param[$name]; |
52
|
|
|
} |
53
|
|
|
switch($request->get('action')) { |
54
|
|
|
case 'widget': |
55
|
|
|
if ($name && $layout_id) { |
56
|
|
|
if ($widget = Widget::getInstance($name)) { |
57
|
|
|
if ($widget->isAvailable()) { |
58
|
|
|
$action = array_pop(array_keys($param[$name])); |
|
|
|
|
59
|
|
|
switch($action) { |
60
|
|
|
case 'remove': |
61
|
|
|
$instance_id = (int)$param[$name][$action]; |
62
|
|
|
$lm->removeWidget($owner_id, $owner_type, $layout_id, $name, $instance_id, $widget); |
63
|
|
|
break; |
64
|
|
|
case 'add': |
65
|
|
|
default: |
66
|
|
|
$lm->addWidget($owner_id, $owner_type, $layout_id, $name, $widget, $request); |
67
|
|
|
break; |
68
|
|
|
} |
69
|
|
|
} |
70
|
|
|
} |
71
|
|
|
} |
72
|
|
|
break; |
73
|
|
|
case 'minimize': |
74
|
|
|
if ($name) { |
75
|
|
|
$lm->mimizeWidget($owner_id, $owner_type, $layout_id, $name, $instance_id); |
76
|
|
|
} |
77
|
|
|
break; |
78
|
|
|
case 'maximize': |
79
|
|
|
if ($name) { |
80
|
|
|
$lm->maximizeWidget($owner_id, $owner_type, $layout_id, $name, $instance_id); |
81
|
|
|
} |
82
|
|
|
break; |
83
|
|
|
case 'preferences': |
84
|
|
|
if ($name) { |
85
|
|
|
$lm->displayWidgetPreferences($owner_id, $owner_type, $layout_id, $name, $instance_id); |
86
|
|
|
} |
87
|
|
|
break; |
88
|
|
|
case 'layout': |
89
|
|
|
$lm->updateLayout($owner_id, $owner_type, $request->get('layout_id'), $request->get('new_layout')); |
90
|
|
|
break; |
91
|
|
|
default: |
92
|
|
|
$lm->reorderLayout($owner_id, $owner_type, $layout_id, $request); |
93
|
|
|
break; |
94
|
|
|
} |
95
|
|
|
} |
96
|
|
|
} |
97
|
|
|
} |
98
|
|
|
if (!$request->isAjax()) { |
99
|
|
|
$GLOBALS['Response']->redirect($redirect); |
100
|
|
|
} |
101
|
|
|
?> |
102
|
|
|
|