aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/widgets/delete.php19
-rw-r--r--engine/classes/ElggWidget.php4
-rw-r--r--engine/lib/widgets.php1
-rw-r--r--js/lib/ui.widgets.js16
-rw-r--r--languages/en.php1
-rw-r--r--views/default/css.php18
-rw-r--r--views/default/widgets/controls.php32
-rw-r--r--views/default/widgets/wrapper.php13
8 files changed, 97 insertions, 7 deletions
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 @@
+<?php
+/**
+ * Elgg widget delete action
+ *
+ * @package Elgg.Core
+ * @subpackage Widgets.Management
+ */
+
+$guid = get_input('guid');
+
+$user = get_loggedin_user();
+
+$widget = get_entity($guid);
+if ($widget && $user->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>
+ 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 @@
+<?php
+/**
+ * Elgg widget controls
+ *
+ * @package Elgg
+ * @subpackage Core
+ */
+
+$widget = $vars['widget'];
+
+$params = array(
+ 'text' => '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
+<ul>
+ <li>$delete_link</li>
+ <li>$edit_link</li>
+</ul>
+___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";
?>
<div class="widget draggable" id="widget_<?php echo $widget->guid; ?>">
<div class="widget_title drag_handle">
- <h3>Widget Title</h3>
- </div>
- <div class="widget_content">
+ <h3><?php echo $title; ?></h3>
+ <?php
+ if ($widget->canEdit()) {
+ echo elgg_view('widgets/controls', array('widget' => $widget));
+ }
+ ?>
+ </div>
+ <div class="widget_content">
<?php echo elgg_view($display_view, $vars); ?>
<p>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.</p>
</div>