]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
users can delete widgets from layout
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 19 Nov 2010 19:11:03 +0000 (19:11 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 19 Nov 2010 19:11:03 +0000 (19:11 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@7349 36083f99-b078-4883-b0ff-0f9b5a30f544

actions/widgets/delete.php [new file with mode: 0644]
engine/classes/ElggWidget.php
engine/lib/widgets.php
js/lib/ui.widgets.js
languages/en.php
views/default/css.php
views/default/widgets/controls.php [new file with mode: 0644]
views/default/widgets/wrapper.php

diff --git a/actions/widgets/delete.php b/actions/widgets/delete.php
new file mode 100644 (file)
index 0000000..167324b
--- /dev/null
@@ -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);
index 21ad8c5dd44665ce87ca20e756572e7e1439a24d..0a0eb9b1cb05db02d77e17e84aa4fa89d5b0a3a8 100644 (file)
@@ -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
index 9c6e68b53f643119c68b007b0cb8af355d23d9e3..92d022913d14abc48dbca7d5e27bbf7ac2f5874d 100644 (file)
@@ -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");
index 32de71871053b19310b1f9e74ab24947c6c68c4f..59cafd7ad25d32918048edcc72d98c9a4ba5a084 100644 (file)
@@ -39,14 +39,30 @@ elgg.ui.widgets.init = function() {
                event.preventDefault();\r
        });\r
 \r
+       $('a.widget_delete').bind('click', elgg.ui.widgets.remove);\r
+\r
        elgg.ui.widgets.equalHeight(".widget_column");\r
 };\r
 \r
 // insert a widget into the layout\r
 elgg.ui.widgets.insert = function(html) {\r
        $('#widget_col_1').prepend(html);\r
+       $('#widget_col_1').children(":first").find('a.widget_delete').bind('click', elgg.ui.widgets.remove);\r
+}\r
+\r
+// remove a widget from the layout\r
+elgg.ui.widgets.remove = function(event) {\r
+       $(this).parent().parent().parent().parent().remove();\r
+       elgg.action('widgets/delete', {\r
+               data: {\r
+                       // widget_delete_<guid>\r
+                       guid: $(this).attr('id').substring(14)\r
+               }\r
+       });\r
+       event.preventDefault();\r
 }\r
 \r
+\r
 elgg.ui.widgets.equalHeight = function(selector) {\r
        var maxHeight = 0;\r
        $(selector).each(function() {\r
index a7185b0c5c2c803464e1834ba686e0de89586265..3d6885e8aa26b02baab75ce461505ea3ae0d0a00 100644 (file)
@@ -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.',
 
 /**
index 36c5c60ec7090275f6ff2b408038a0c441342ffe..c78e7ebd22e9d77de1d57db6461e6c96aefd270e 100644 (file)
@@ -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 (file)
index 0000000..8810579
--- /dev/null
@@ -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;
index fd849bdeee617341185dd02c08e3a2fddcab5a6a..55cdd18b66890af2663c4031801b8f18d349456a 100644 (file)
@@ -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>