From f42382e0bff1692e2ddcd1c8eb316836e3020f1e Mon Sep 17 00:00:00 2001 From: cash Date: Fri, 19 Nov 2010 19:11:03 +0000 Subject: users can delete widgets from layout git-svn-id: http://code.elgg.org/elgg/trunk@7349 36083f99-b078-4883-b0ff-0f9b5a30f544 --- actions/widgets/delete.php | 19 +++++++++++++++++++ engine/classes/ElggWidget.php | 4 ++++ engine/lib/widgets.php | 1 + js/lib/ui.widgets.js | 16 ++++++++++++++++ languages/en.php | 1 + views/default/css.php | 18 ++++++++++++++---- views/default/widgets/controls.php | 32 ++++++++++++++++++++++++++++++++ views/default/widgets/wrapper.php | 13 ++++++++++--- 8 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 actions/widgets/delete.php create mode 100644 views/default/widgets/controls.php diff --git a/actions/widgets/delete.php b/actions/widgets/delete.php new file mode 100644 index 000000000..167324b0c --- /dev/null +++ b/actions/widgets/delete.php @@ -0,0 +1,19 @@ +canEdit() && $widget->delete()) { + forward(REFERER); +} + +register_error(elgg_echo('widgets:remove:failure')); +forward(REFERER); diff --git a/engine/classes/ElggWidget.php b/engine/classes/ElggWidget.php index 21ad8c5dd..0a0eb9b1c 100644 --- a/engine/classes/ElggWidget.php +++ b/engine/classes/ElggWidget.php @@ -142,4 +142,8 @@ class ElggWidget extends ElggObject { } $this->column = $column; } + + public function canEdit($user_guid = 0) { + return true; + } } \ No newline at end of file diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php index 9c6e68b53..92d022913 100644 --- a/engine/lib/widgets.php +++ b/engine/lib/widgets.php @@ -601,6 +601,7 @@ function widgets_init() { register_action('widgets/save'); register_action('widgets/add'); register_action('widgets/move'); + register_action('widgets/delete'); // Now run this stuff, but only once run_function_once("widget_run_once"); diff --git a/js/lib/ui.widgets.js b/js/lib/ui.widgets.js index 32de71871..59cafd7ad 100644 --- a/js/lib/ui.widgets.js +++ b/js/lib/ui.widgets.js @@ -39,14 +39,30 @@ elgg.ui.widgets.init = function() { event.preventDefault(); }); + $('a.widget_delete').bind('click', elgg.ui.widgets.remove); + elgg.ui.widgets.equalHeight(".widget_column"); }; // insert a widget into the layout elgg.ui.widgets.insert = function(html) { $('#widget_col_1').prepend(html); + $('#widget_col_1').children(":first").find('a.widget_delete').bind('click', elgg.ui.widgets.remove); +} + +// remove a widget from the layout +elgg.ui.widgets.remove = function(event) { + $(this).parent().parent().parent().parent().remove(); + elgg.action('widgets/delete', { + data: { + // widget_delete_ + guid: $(this).attr('id').substring(14) + } + }); + event.preventDefault(); } + elgg.ui.widgets.equalHeight = function(selector) { var maxHeight = 0; $(selector).each(function() { diff --git a/languages/en.php b/languages/en.php index a7185b0c5..3d6885e8a 100644 --- a/languages/en.php +++ b/languages/en.php @@ -248,6 +248,7 @@ $english = array( 'widgets:add:success' => "The widget was successfully added.", 'widgets:add:failure' => "We could not add your widget.", 'widgets:move:failure' => "We could not store the new widget position.", + 'widgets:remove:failure' => "Unable to remove this widget", 'widgets:handlernotfound' => 'This widget is either broken or has been disabled by the site administrator.', /** diff --git a/views/default/css.php b/views/default/css.php index 36c5c60ec..c78e7ebd2 100644 --- a/views/default/css.php +++ b/views/default/css.php @@ -861,7 +861,7 @@ li.navigation_more ul li { *************************************** */ .widget_column { float: right; - min-height: 15px; + min-height: 30px; } .widget_1_columns { width: 100%; @@ -879,11 +879,11 @@ li.navigation_more ul li { padding: 0px; text-align: right; margin-bottom: 15px; + margin-right: 5px; } .widgets_add { - width: 96%; - padding: 2%; - margin-bottom: 15px; + padding: 10px; + margin: 0 5px 15px; background: #dedede; } .widgets_add ul { @@ -911,8 +911,18 @@ li.navigation_more ul li { line-height: 30px; } .widget_title h3 { + float: left; padding: 0 5px; } +.widget_title ul, .widget_title li { + float: right; + margin: 0; + padding: 0; + list-style: none; +} +.widget_title li { + margin: 0 4px; +} .widget_content { background-color: #ffffff; padding: 10px; diff --git a/views/default/widgets/controls.php b/views/default/widgets/controls.php new file mode 100644 index 000000000..881057969 --- /dev/null +++ b/views/default/widgets/controls.php @@ -0,0 +1,32 @@ + 'delete', + 'href' => '#', //elgg_get_site_url() . "action/widgets/delete?guid=$widget->guid", + 'is_action' => true, + 'class' => 'widget_delete', + 'internalid' => "widget_delete_$widget->guid" +); +$delete_link = elgg_view('output/url', $params); + +$params = array( + 'text' => 'edit', + 'href' => elgg_get_site_url() . "#", + 'is_action' => true, +); +$edit_link = elgg_view('output/url', $params); + +echo <<<___END + +___END; diff --git a/views/default/widgets/wrapper.php b/views/default/widgets/wrapper.php index fd849bdee..55cdd18b6 100644 --- a/views/default/widgets/wrapper.php +++ b/views/default/widgets/wrapper.php @@ -21,15 +21,22 @@ if ($vars['entity'] instanceof ElggObject && $vars['entity']->getSubtype() == 'w $title = elgg_echo("error"); } +$title = "Widget Title"; + $display_view = "widgets/$handler/view"; $edit_view = "widgets/$handler/edit"; ?>
-

Widget Title

-
-
+

+ canEdit()) { + echo elgg_view('widgets/controls', array('widget' => $widget)); + } + ?> +
+

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

-- cgit v1.2.3