]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #472 not allowing widgets to be added if only single instance allowed
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 20 Nov 2010 15:35:14 +0000 (15:35 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 20 Nov 2010 15:35:14 +0000 (15:35 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@7384 36083f99-b078-4883-b0ff-0f9b5a30f544

js/lib/ui.widgets.js
languages/en.php
mod/friends/start.php
views/default/css.php
views/default/layouts/widgets.php
views/default/widgets/add_panel.php

index ebece5a592d2114d57771b792385e3fc60ba4064..73b7f46cc2704c3c678eeb968f10d11b4aec120e 100644 (file)
@@ -33,7 +33,7 @@ elgg.ui.widgets.init = function() {
                event.preventDefault();\r
        });\r
 \r
-       $('.widgets_add_panel a').bind('click', function(event) {\r
+       $('.widgets_add_panel li.widget_available').bind('click', function(event) {\r
                elgg.action('widgets/add', {\r
                        data: {\r
                                handler: $(this).attr('id'),\r
index 3d6885e8aa26b02baab75ce461505ea3ae0d0a00..9ca58e7368bc23894b3184691ecc0103d0edf513 100644 (file)
@@ -230,6 +230,7 @@ $english = array(
        'widgets:add' => 'Add widgets',
        'widgets:add:description' => "Click on any widget button below to add it to your page.",
        'widgets:position:fixed' => '(Fixed position on page)',
+       'widget:unavailable' => 'You have already added this widget',
 
        'widgets' => "Widgets",
        'widget' => "Widget",
index fe6a40c756511f7c4723bf12f7bc7b093c6d9a34..0da095b969211f73031f29328f6d86ab52ab435c 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 function friends_init() {
-       add_widget_type('friends', elgg_echo("friends"), elgg_echo('friends:widget:description'));
+       add_widget_type('friends', elgg_echo("friends"), elgg_echo('friends:widget:description'), 'profile');
 }
 
 elgg_register_event_handler('init', 'system', 'friends_init');
index 286beeece506820bb0a1e8bf1d4315ec5e52a37c..e0be90b2b0c40e03c2147186f5b59ee321a45278 100644 (file)
@@ -894,13 +894,19 @@ li.navigation_more ul li {
        float: left;
        margin: 2px 10px;
        list-style: none;
-}
-.widgets_add_panel li a {
-       display: block;
        width: 200px;
        padding: 4px;
        background-color: #cccccc;
 }
+.widgets_add_panel li a {
+       display: block;
+}
+.widget_available {
+       cursor: pointer;
+}
+.widget_unavailable {
+       color: #888888;
+}
 .widget {
        background-color: #dedede;
        padding: 2px;
index 149e3d327bff88dccc74317d46fb2f16f61d48ca..4b097dcf6139adbb7ff22b58596d375f33c978c2 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @uses $vars['box'] Optional display box at the top of layout
  * @uses $vars['num_columns'] Number of widget columns for this layout
- * @uses $vars['show_add_widgets'] Display the add widgets button
+ * @uses $vars['show_add_widgets'] Display the add widgets button and panel
  */
 
 $box = elgg_get_array_value('box', $vars, '');
@@ -28,8 +28,6 @@ if (elgg_can_edit_widget_layout($context)) {
        echo elgg_view('widgets/add_panel', $params);
 }
 
-echo '<div class="widget_layout">';
-
 echo $vars['box'];
 
 $widget_class = "widget_{$num_columns}_columns";
@@ -45,7 +43,4 @@ for ($column_index = 1; $column_index <= $num_columns; $column_index++) {
        echo '</div>';
 }
 
-echo '<div class="clearfloat"></div>';
-echo '</div>';
-
 elgg_pop_context();
\ No newline at end of file
index 70d80f41c486b56c30e88d60abb6833d9b092324..09511487c1906f70f8d7de78e8dd1f4f82fc7a29 100644 (file)
@@ -1,10 +1,17 @@
 <?php
 
 $widgets = $vars['widgets'];
-$widget_types = elgg_get_widget_types();
-
 $context = $vars['context'];
 
+$widget_types = elgg_get_widget_types($context);
+
+$current_handlers = array();
+foreach ($widgets as $column_widgets) {
+       foreach ($column_widgets as $widget) {
+               $current_handlers[] = $widget->handler;
+       }
+}
+
 ?>
 <div class="widgets_add_panel hidden">
        <p>
@@ -12,14 +19,17 @@ $context = $vars['context'];
        </p>
        <ul>
 <?php
-               foreach ($widget_types as $handler => $widget_type) {
-                       $options = array(
-                               'text' => $widget_type->name,
-                               'href' => '#',
-                               'internalid' => $handler,
-                       );
-                       $link = elgg_view('output/url', $options);
-                       echo "<li>$link</li>";
+               foreach ($widget_types as $handler => $widget_type) {                   
+                       // check if widget added and only one instance allowed
+                       if ($widget_type->multiple == false && in_array($handler, $current_handlers)) {
+                               $class = 'widget_unavailable';
+                               $tooltip = elgg_echo('widget:unavailable');
+                       } else {
+                               $class = 'widget_available';
+                               $tooltip = $widget_type->description;
+                       }
+
+                       echo "<li title=\"$tooltip\" id=\"$handler\" class=\"$class\">$widget_type->name</li>";
                }
 ?>
        </ul>