Put overflow hidden and a fixed width on profile widgets to stop large img coming...
[elgg.git] / mod / widget / manage_widgets.php
blob91124c4141b9eb01c5f9e2e89cbb17b7e7e4253b
1 <?php
3 /*
5 Elgg Widgets
6 http://elgg.org/
8 */
10 // Load Elgg framework
11 @require_once("../../includes.php");
13 // We need to be logged on for this!
15 if (isloggedin()) {
17 // Define context
18 define("context","widget");
19 $top_bit_template = <<<END
21 <script type="text/javascript" src="{$CFG->wwwroot}mod/yui/build/yahoo/yahoo.js" ></script>
22 <script type="text/javascript" src="{$CFG->wwwroot}mod/yui/build/event/event.js" ></script>
23 <script type="text/javascript" src="{$CFG->wwwroot}mod/yui/build/dom/dom.js"></script>
25 <script type="text/javascript" src="{$CFG->wwwroot}mod/yui/build/dragdrop/dragdrop-min.js" ></script>
26 <script type="text/javascript" src="{$CFG->wwwroot}mod/yui/build/connection/connection.js" ></script>
28 <script type="text/javascript" src="js/DDList_kj.js" ></script>
30 <script type="text/javascript">
31 var user_id = {$_SESSION['userid']};
32 var wwwroot = '$CFG->wwwroot';
34 YAHOO.example.DDApp = function() {
35 return {
36 init: function() {
40 new YAHOO.example.DDListBoundary("hidden1");
41 new YAHOO.example.DDListBoundary("hidden2");
42 new YAHOO.example.DDListBoundary("hidden3");
43 new YAHOO.example.DDListBoundary("garbage");
45 YAHOO.util.DDM.getElement('hidden2').column = 0;
46 //YAHOO.util.DDM.getElement('hidden2').did = 100000;
47 YAHOO.util.DDM.getElement('hidden3').column = 1;
48 // YAHOO.util.DDM.getElement('hidden3').did = 100000;
51 } ();
53 YAHOO.util.Event.addListener(window, "load", YAHOO.example.DDApp.init);
54 // YAHOO.util.DDM.useCache = false;
56 function handle_widget_start_edit(el) {
57 id = el.id.substring(4);
58 if (current_el) {
59 current_el.className = 'sortList';
61 el.className = 'sortListCurrent';
62 current_el = el;
63 YAHOO.util.Connect.asyncRequest('GET', wwwroot+'mod/widget/ajax_start_edit_widget.php?id='+id, { success:start_edit_successHandler, failure:start_edit_failureHandler });
64 return false;
67 function start_edit_successHandler(o) {
68 var root = o.responseXML.documentElement;
69 var oForm = root.getElementsByTagName('edit_form')[0].firstChild.nodeValue;
71 YAHOO.util.DDM.getElement('formarea').innerHTML = '<p>'+ oForm + "</p>";
74 function start_edit_failureHandler(o){
75 YAHOO.util.DDM.getElement('formarea').innerHTML = "Cannot get edit form: "+o.status + " " + o.statusText;
78 function handle_widget_edit() {
79 YAHOO.util.Connect.setForm('widget_edit_form');
80 YAHOO.util.Connect.asyncRequest('POST', wwwroot+'mod/widget/edit.php', { success:edit_successHandler, failure:edit_failureHandler });
81 return false;
84 function edit_successHandler(o) {
85 var root = o.responseXML.documentElement;
86 //var oResult = root.getElementsByTagName('result')[0].firstChild.nodeValue;
87 YAHOO.util.DDM.getElement('formarea').innerHTML = '<p>Saved widget.</p>';
90 function edit_failureHandler(o){
91 YAHOO.util.DDM.getElement('formarea').innerHTML = o.status + " " + o.statusText;
94 function handle_widget_move(id,id_before,new_column) {
95 if (id_before[0] == 'h') {
96 extra = '&where=end';
97 } else {
98 extra = '&where=before&id2='+id_before.substring(4);
101 YAHOO.util.Connect.asyncRequest('GET', wwwroot+'mod/widget/ajax_move_widget.php?id='+id.substring(4)+'&column='+new_column+extra, { success:move_successHandler, failure:move_failureHandler });
102 return false;
105 function move_successHandler(o) {
106 // no need to do anything
109 function move_failureHandler(o){
110 YAHOO.util.DDM.getElement('formarea').innerHTML = "Move failed: "+o.status + " " + o.statusText;
113 function handle_widget_delete(el) {
114 if (current_el == el) {
115 current_el = '';
118 id = el.id;
119 p = el.parentNode;
120 p.removeChild(el);
122 YAHOO.util.Connect.asyncRequest('GET', wwwroot+'mod/widget/ajax_delete_widget.php?id='+id.substring(4), { success:delete_successHandler, failure:delete_failureHandler });
123 return false;
126 function delete_successHandler(o) {
127 YAHOO.util.DDM.getElement('formarea').innerHTML = '<p>Deleted widget.</p>';
130 function delete_failureHandler(o){
131 YAHOO.util.DDM.getElement('formarea').innerHTML = "Delete failed: "+o.status + " " + o.statusText;
134 </script>
136 <style type="text/css">
138 .sortList {
139 cursor:move;
140 margin:0 0 6px 0;
141 padding: 2px 2px;
142 border: 1px solid #ccc;
143 background-color: #eee;
146 .sortListHidden { height:10px; font-size:14px; visibility:hidden; }
148 .sortListWorking { cursor:move; font-size:14px; background-color: #FFFF00;}
150 .sortListCurrent {
151 cursor:move;
152 margin-bottom: 4px;
153 padding: 2px 2px;
154 border: 1px solid #ccc;
155 background-color: #ccc;
156 font-weight:bold;
159 .listGroup1 li {
160 list-style-type: none;
163 .listGroup1 {
164 list-style-type: none;
165 padding: 4px 4px 10px 4px;
166 margin: 0px;
167 width: 10em;
168 font-size: 13px;
169 font-family: Arial, sans-serif;
170 border: 1px solid #ccc;
171 width:200px;
174 #manage-widgets h2 {
175 background:#fff;
176 display:block;
177 border:none;
178 font-size:1em;
179 padding:0;
180 margin:2px;
183 #formarea {
184 margin:10px 40px 10px 40px;
185 background:#efefef;
186 padding:5px;
187 border:1px solid #ccc;
190 </style>
192 END;
193 $explanation = "<p style=\"height:156px;\"><img src=\"{$CFG->wwwroot}mod/template/images/widgets.gif\" alt=\"widgets layout\" align=\"right\">" .__gettext("Hover your mouse over the name of each widget to find out more about it. Drag widgets from the widgets column into either profile column. You can also move widgets around within the profile columns. Edit any widget by clicking on it.")."</p>";
194 $widget_template = <<<END
195 $explanation
196 <form name="dragDropForm" action="javscript:;">
197 <div id="manage-widgets">
198 <table border="0">
199 <tr>
200 <td><h2>Available widgets</h2></td>
201 <td>&nbsp;</td>
202 <td><h2>Your left column</h2></td>
203 <td>&nbsp;</td>
204 <td><h2>Your right column</h2></td>
205 </tr>
206 <tr>
207 <td valign="top">
208 <ul class="listGroup1">
209 <li id="hidden6" class="sortListHidden">Hidden</li>
211 <li id="hidden1" class="sortListHidden">Hidden</li>
213 </ul>
214 </td>
216 <td>&nbsp;</td>
217 <td valign="top">
218 <ul class="listGroup1">
219 <li id="hidden5" class="sortListHidden">Hidden</li>
221 <li id="hidden2" class="sortListHidden">Hidden</li>
222 </ul><br />
223 <ul class="listGroup1">
224 <li id="garbage"><img src="{$CFG->wwwroot}mod/widget/images/delete.gif" width="16" height="16"></li>
225 </ul>
226 </td>
228 <td>&nbsp;</td>
229 <td valign="top">
230 <ul class="listGroup1">
231 <li id="hidden4" class="sortListHidden">Hidden</li>
233 <li id="hidden3" class="sortListHidden">Hidden</li>
234 </ul>
235 </td>
236 </tr>
237 </table>
238 </div>
239 </form>
240 <div id="dyn"></div>
241 <div id="formarea"></div>
242 END;
244 $widget_list_element_template = '<li alt="%s" title="%s" id="wli_%s" class="sortList">%s</li>';
245 $column_list_element_template = '<li alt="%s" title="%s" id="eli_%s" class="sortList">%s</li>';
246 $widget_list = '';
247 $do_init = '';
249 if (is_array($CFG->widgets->list) && !empty($CFG->widgets->list)) {
250 foreach($CFG->widgets->list as $widget) {
251 if (!$widget['type']) {
252 $widget['type'] = $widget['id'];
254 $widget_list .= sprintf($widget_list_element_template,$widget['description'],$widget['description'],$widget['type'],$widget['name']);
255 $do_init .= 'new YAHOO.example.DDList("wli_'.$widget['type'].'");'."\n";
259 $first_column_list = '';
261 if ($widgets = widget_for_user($_SESSION['userid'],'profile',0,0)) {
262 foreach($widgets as $widget) {
263 $name = 'Unknown';
264 $description = '';
265 foreach($CFG->widgets->list as $widget_class) {
266 if ($widget_class['type'] == $widget->type) {
267 $name = $widget_class['name'];
268 $description = $widget_class['description'];
269 break;
272 $first_column_list .= sprintf($column_list_element_template,$description,$description,$widget->ident,$name);
273 $do_init .= 'new YAHOO.example.DDList("eli_'.$widget->ident.'");'."\n";
274 //$do_init .= 'YAHOO.util.DDM.getElement("eli_'.$widget->ident.'").did='.$widget->display_order.';'."\n";
275 $do_init .= 'YAHOO.util.DDM.getElement("eli_'.$widget->ident.'").column=0;'."\n";
279 $second_column_list = '';
281 if ($widgets = widget_for_user($_SESSION['userid'],'profile',0,1)) {
282 foreach($widgets as $widget) {
283 $name = 'Unknown';
284 $description = '';
285 foreach($CFG->widgets->list as $widget_class) {
286 if ($widget_class['type'] == $widget->type) {
287 $name = $widget_class['name'];
288 $description = $widget_class['description'];
289 break;
292 $second_column_list .= sprintf($column_list_element_template,$description,$description,$widget->ident,$name);
293 $do_init .= 'new YAHOO.example.DDList("eli_'.$widget->ident.'");'."\n";
294 //$do_init .= 'YAHOO.util.DDM.getElement("eli_'.$widget->ident.'").did='.$widget->display_order.';'."\n";
295 $do_init .= 'YAHOO.util.DDM.getElement("eli_'.$widget->ident.'").column=1;'."\n";
299 $title = __gettext("Manage Widgets");
300 $body = sprintf($top_bit_template,$do_init).sprintf($widget_template,$widget_list,$first_column_list,$second_column_list);
302 } else {
303 $body = __gettext("You must be logged-in to manage your widgets");
306 // Output to the screen
307 $body = templates_draw(array(
308 'context' => 'contentholder',
309 'title' => $title,
310 'body' => $body
314 echo templates_page_draw( array(
315 $title, $body