From 561c160ed8db7f418cc5ae34e04b959be5066442 Mon Sep 17 00:00:00 2001 From: cash Date: Tue, 25 Jan 2011 12:12:54 +0000 Subject: converted widgets to modules git-svn-id: http://code.elgg.org/elgg/trunk@7928 36083f99-b078-4883-b0ff-0f9b5a30f544 --- js/lib/ui.widgets.js | 17 +++--- pages/dashboard.php | 1 + views/default/admin/dashboard.php | 1 + views/default/css/admin.php | 29 +++++----- views/default/css/elements/core.php | 35 +++++------- views/default/layout/objects/widget.php | 63 ++++++++++++++-------- views/default/layout/objects/widget/controls.php | 27 +++++----- views/default/layout/objects/widget/settings.php | 24 +++++---- views/default/layout/shells/widgets.php | 6 ++- views/default/layout/shells/widgets/add_button.php | 6 ++- views/default/layout/shells/widgets/add_panel.php | 4 +- 11 files changed, 114 insertions(+), 99 deletions(-) diff --git a/js/lib/ui.widgets.js b/js/lib/ui.widgets.js index bcace608f..b99570d04 100644 --- a/js/lib/ui.widgets.js +++ b/js/lib/ui.widgets.js @@ -13,9 +13,9 @@ elgg.ui.widgets.init = function() { } $(".elgg-widgets").sortable({ - items: 'div.elgg-widget', + items: 'div.elgg-module-widget.elgg-state-draggable', connectWith: '.elgg-widgets', - handle: 'div.drag-handle', + handle: 'div.elgg-head', forcePlaceholderSize: true, placeholder: 'elgg-widget-placeholder', opacity: 0.8, @@ -23,7 +23,7 @@ elgg.ui.widgets.init = function() { stop: elgg.ui.widgets.move }); - $('.elgg-widgets-add-panel li.elgg-widget-available').click(elgg.ui.widgets.add); + $('.elgg-widgets-add-panel li.elgg-state-available').click(elgg.ui.widgets.add); $('a.elgg-widget-delete-button').live('click', elgg.ui.widgets.remove); $('.elgg-widget-edit > form ').live('submit', elgg.ui.widgets.saveSettings); @@ -48,8 +48,8 @@ elgg.ui.widgets.add = function(event) { // if multiple instances not allow, disable this widget type add button var multiple = $(this).attr('class').indexOf('elgg-widget-multiple') != -1; if (multiple == false) { - $(this).addClass('elgg-widget-unavailable'); - $(this).removeClass('elgg-widget-available'); + $(this).addClass('elgg-state-unavailable'); + $(this).removeClass('elgg-state-available'); $(this).unbind('click', elgg.ui.widgets.add); } @@ -61,7 +61,6 @@ elgg.ui.widgets.add = function(event) { }, success: function(json) { $('#elgg-widget-col-1').prepend(json.output); - var $widget = $('#elgg-widget-col-1').children(":first"); } }); event.preventDefault(); @@ -116,8 +115,8 @@ elgg.ui.widgets.remove = function(event) { $button = $('#elgg-widget-type-' + type); var multiple = $button.attr('class').indexOf('elgg-widget-multiple') != -1; if (multiple == false) { - $button.addClass('elgg-widget-available'); - $button.removeClass('elgg-widget-unavailable'); + $button.addClass('elgg-state-available'); + $button.removeClass('elgg-state-unavailable'); $button.unbind('click', elgg.ui.widgets.add); // make sure we don't bind twice $button.click(elgg.ui.widgets.add); } @@ -144,7 +143,7 @@ elgg.ui.widgets.remove = function(event) { */ elgg.ui.widgets.collapseToggle = function(event) { $(this).toggleClass('elgg-widget-collapsed'); - $(this).parent().parent().find('.elgg-widget-container').slideToggle('medium'); + $(this).parent().parent().parent().find('.elgg-body').slideToggle('medium'); event.preventDefault(); } diff --git a/pages/dashboard.php b/pages/dashboard.php index 6cd19e1cf..1deefed97 100644 --- a/pages/dashboard.php +++ b/pages/dashboard.php @@ -20,6 +20,7 @@ $intro_message = elgg_view('core/dashboard/blurb'); $params = array( 'box' => $intro_message, 'num_columns' => 3, + 'show_access' => false, ); $widgets = elgg_view_layout('widgets', $params); diff --git a/views/default/admin/dashboard.php b/views/default/admin/dashboard.php index 57e15308d..1b042f14b 100644 --- a/views/default/admin/dashboard.php +++ b/views/default/admin/dashboard.php @@ -5,6 +5,7 @@ elgg_set_page_owner_guid(get_loggedin_userid()); $params = array( 'num_columns' => 2, 'exact_match' => true, + 'show_access' => false, ); $widgets = elgg_view_layout('widgets', $params); diff --git a/views/default/css/admin.php b/views/default/css/admin.php index 9735de87f..930ee2fe3 100644 --- a/views/default/css/admin.php +++ b/views/default/css/admin.php @@ -482,40 +482,37 @@ input[type="submit"]:hover, .elgg-submit-button:hover, .elgg-action-button:hover .elgg-widgets-add-panel li a { display: block; } - - -.elgg-widget-available { +.elgg-state-available { color: #333333; cursor: pointer; } -.elgg-widget-available:hover { +.elgg-state-available:hover { border-color: #aaaaaa; } -.elgg-widget-unavailable { +.elgg-state-unavailable { color: #888888; } - -.elgg-widget { +.elgg-module-widget { background-color: #dedede; padding: 1px; margin: 0 5px 15px; position: relative; } -.elgg-widget:hover { +.elgg-module-widget:hover { background-color: #cccccc; } -.elgg-widget-title { +.elgg-module-widget > .elgg-head { background-color: #f5f5f5; height: 30px; line-height: 30px; overflow: hidden; } -.elgg-widget-title h3 { +.elgg-module-widget > .elgg-head h3 { float: left; padding: 0 45px 0 20px; color: #333333; } -.elgg-widget-controls a { +.elgg-module-widget > .elgg-head a { position: absolute; top: 5px; display: block; @@ -523,11 +520,14 @@ input[type="submit"]:hover, .elgg-submit-button:hover, .elgg-action-button:hover height: 18px; border: 1px solid transparent; } +.elgg-state-draggable > .elgg-head { + cursor: move; +} a.elgg-widget-collapse-button { left: 5px; background:transparent url(_graphics/elgg_sprites.png) no-repeat 0px -385px; } -.elgg-widget-controls a.elgg-widget-collapsed { +a.elgg-widget-collapsed { background-position: 0px -365px; } a.elgg-widget-delete-button { @@ -541,7 +541,7 @@ a.elgg-widget-edit-button { a.elgg-widget-edit-button:hover, a.elgg-widget-delete-button:hover { border: 1px solid #cccccc; } -.elgg-widget-container { +.elgg-module-widget > .elgg-body { border-top: 1px solid #dedede; background-color: white; width: 100%; @@ -556,9 +556,6 @@ a.elgg-widget-edit-button:hover, a.elgg-widget-delete-button:hover { .elgg-widget-content { padding: 10px; } -.drag-handle { - cursor: move; -} .elgg-widget-placeholder { border: 2px dashed #dedede; margin-bottom: 15px; diff --git a/views/default/css/elements/core.php b/views/default/css/elements/core.php index 06bbb97c4..319fd4c5b 100644 --- a/views/default/css/elements/core.php +++ b/views/default/css/elements/core.php @@ -139,14 +139,9 @@ } -.elgg-widgets-add-panel ul { - padding: 0; - margin: 0; -} .elgg-widgets-add-panel li { float: left; margin: 2px 10px; - list-style: none; width: 200px; padding: 4px; background-color: #cccccc; @@ -156,41 +151,42 @@ .elgg-widgets-add-panel li a { display: block; } - - -.elgg-widget-available { +.elgg-widgets-add-panel .elgg-state-available { color: #333333; cursor: pointer; } -.elgg-widget-available:hover { +.elgg-widgets-add-panel .elgg-state-available:hover { background-color: #bcbcbc; } -.elgg-widget-unavailable { +.elgg-widgets-add-panel .elgg-state-unavailable { color: #888888; } - -.elgg-widget { + +.elgg-module-widget { background-color: #dedede; padding: 2px; margin: 0 5px 15px; position: relative; } -.elgg-widget:hover { +.elgg-module-widget:hover { background-color: #cccccc; } -.elgg-widget-title { +.elgg-module-widget > .elgg-head { background-color: #dedede; height: 30px; line-height: 30px; overflow: hidden; } -.elgg-widget-title h3 { +.elgg-module-widget > .elgg-head h3 { float: left; padding: 0 45px 0 20px; color: #333333; } -.elgg-widget-controls a { +.elgg-module-widget.elgg-state-draggable > .elgg-head { + cursor: move; +} +.elgg-module-widget > .elgg-head a { position: absolute; top: 5px; display: block; @@ -202,7 +198,7 @@ a.elgg-widget-collapse-button { left: 5px; background:transparent url(_graphics/elgg_sprites.png) no-repeat 0px -385px; } -.elgg-widget-controls a.elgg-widget-collapsed { +a.elgg-widget-collapsed { background-position: 0px -365px; } a.elgg-widget-delete-button { @@ -216,7 +212,7 @@ a.elgg-widget-edit-button { a.elgg-widget-edit-button:hover, a.elgg-widget-delete-button:hover { border: 1px solid #cccccc; } -.elgg-widget-container { +.elgg-module-widget > .elgg-body { background-color: white; width: 100%; overflow: hidden; @@ -230,9 +226,6 @@ a.elgg-widget-edit-button:hover, a.elgg-widget-delete-button:hover { .elgg-widget-content { padding: 10px; } -.drag-handle { - cursor: move; -} .elgg-widget-placeholder { border: 2px dashed #dedede; margin-bottom: 15px; diff --git a/views/default/layout/objects/widget.php b/views/default/layout/objects/widget.php index d9a0681af..727b04533 100644 --- a/views/default/layout/objects/widget.php +++ b/views/default/layout/objects/widget.php @@ -2,7 +2,8 @@ /** * Widget object * - * @uses $vars['entity'] + * @uses $vars['entity'] ElggWidget + * @uses $vars['show_access'] Show the access control in edit area? (true) */ $widget = $vars['entity']; @@ -10,41 +11,57 @@ if (!elgg_instanceof($widget, 'object', 'widget')) { return true; } +$show_access = elgg_get_array_value('show_access', $vars, true); + // @todo catch for disabled plugins -$widgettypes = elgg_get_widget_types('all'); +$widget_types = elgg_get_widget_types('all'); $handler = $widget->handler; $title = $widget->getTitle(); +$edit_area = ''; $can_edit = $widget->canEdit(); +if ($can_edit) { + $edit_area = elgg_view('layout/objects/widget/settings', array( + 'widget' => $widget, + 'show_access' => $show_access, + )); +} +$controls = elgg_view('layout/objects/widget/controls', array( + 'widget' => $widget, + 'show_edit' => $edit_area != '', +)); + + +if (elgg_view_exists("widgets/$handler/content")) { + $content = elgg_view("widgets/$handler/content", $vars); +} else { + elgg_deprecated_notice("widgets use content as the display view", 1.8); + $content = elgg_view("widgets/$handler/view", $vars); +} + $widget_id = "elgg-widget-$widget->guid"; $widget_instance = "elgg-widget-instance-$handler"; +$widget_class = "elgg-module elgg-module-widget"; +if ($can_edit) { + $widget_class .= " elgg-state-draggable $widget_instance"; +} else { + $widget_class .= " elgg-state-fixed $widget_instance"; +} -?> -
-
-

+echo << +
+

$title

+ $controls
- $widget)); - ?> -
- $widget)); - } - ?> +
+ $edit_area
- + $content
+HTML; diff --git a/views/default/layout/objects/widget/controls.php b/views/default/layout/objects/widget/controls.php index 9693ba42f..bd1e96ea7 100644 --- a/views/default/layout/objects/widget/controls.php +++ b/views/default/layout/objects/widget/controls.php @@ -2,18 +2,17 @@ /** * Elgg widget controls * - * @package Elgg - * @subpackage Core + * @uses $vars['widget'] + * @uses $vars['show_edit'] Whether to show the edit button (true) */ $widget = $vars['widget']; +$show_edit = elgg_get_array_value('show_edit', $vars, true); $params = array( 'text' => ' ', 'href' => "#", 'class' => 'elgg-widget-collapse-button', -// 'internalid' => "elgg-toggler-widget-$widget->guid" -// 'internalid' => "elgg-widget-collapse-button-$widget->guid" ); $collapse_link = elgg_view('output/url', $params); @@ -29,20 +28,20 @@ if ($widget->canEdit()) { ); $delete_link = elgg_view('output/url', $params); - $params = array( - 'text' => ' ', - 'title' => elgg_echo('widget:edit'), - 'href' => "#", - 'class' => 'elgg-widget-edit-button elgg-toggle', - 'internalid' => "elgg-toggler-widget-$widget->guid" - ); - $edit_link = elgg_view('output/url', $params); + if ($show_edit) { + $params = array( + 'text' => ' ', + 'title' => elgg_echo('widget:edit'), + 'href' => "#", + 'class' => 'elgg-widget-edit-button elgg-toggle', + 'internalid' => "elgg-toggler-widget-$widget->guid" + ); + $edit_link = elgg_view('output/url', $params); + } } echo <<<___END -
$collapse_link $delete_link $edit_link -
___END; diff --git a/views/default/layout/objects/widget/settings.php b/views/default/layout/objects/widget/settings.php index 8020983c6..c53ea8fc6 100644 --- a/views/default/layout/objects/widget/settings.php +++ b/views/default/layout/objects/widget/settings.php @@ -2,27 +2,31 @@ /** * Elgg widget edit settings * - * @package Elgg - * @subpackage Core + * @uses $vars['widget'] + * @uses $vars['show_access'] */ $widget = $vars['widget']; +$show_access = elgg_get_array_value('show_access', $vars, true); $edit_view = "widgets/$widget->handler/edit"; $custom_form_section = elgg_view($edit_view, array('entity' => $widget)); -$access_label = elgg_echo('access'); -$access = elgg_view('input/access', array('internalname' => 'params[access_id]','value' => $widget->access_id)); -$access_html = "

$access

"; +$access = ''; +if ($show_access) { + $access = elgg_view('input/access', array( + 'internalname' => 'params[access_id]', + 'value' => $widget->access_id, + )); +} + +if (!$custom_form_section && !$access) { + return true; +} $hidden = elgg_view('input/hidden', array('internalname' => 'guid', 'value' => $widget->guid)); $submit = elgg_view('input/submit', array('value' => elgg_echo('save'))); -// dashboard widgets do not get access controls -if (elgg_in_context('dashboard')) { - $access = ''; -} - $body = <<<___END $custom_form_section $access diff --git a/views/default/layout/shells/widgets.php b/views/default/layout/shells/widgets.php index 656a0e4c3..f47c90f03 100644 --- a/views/default/layout/shells/widgets.php +++ b/views/default/layout/shells/widgets.php @@ -6,12 +6,14 @@ * @uses $vars['num_columns'] Number of widget columns for this layout (3) * @uses $vars['show_add_widgets'] Display the add widgets button and panel (true) * @uses $vars['exact_match'] Widgets must match the current context (false) + * @uses $vars['show_access'] Show the access control (true) */ $box = elgg_get_array_value('box', $vars, ''); $num_columns = elgg_get_array_value('num_columns', $vars, 3); $show_add_widgets = elgg_get_array_value('show_add_widgets', $vars, true); $exact_match = elgg_get_array_value('exact_match', $vars, false); +$show_access = elgg_get_array_value('show_access', $vars, true); $owner = elgg_get_page_owner(); $context = elgg_get_context(); @@ -40,7 +42,7 @@ for ($column_index = 1; $column_index <= $num_columns; $column_index++) { echo "
"; if (is_array($column_widgets) && sizeof($column_widgets) > 0) { foreach ($column_widgets as $widget) { - echo elgg_view_entity($widget); + echo elgg_view_entity($widget, array('show_access' => $show_access)); } } echo '
'; @@ -48,4 +50,4 @@ for ($column_index = 1; $column_index <= $num_columns; $column_index++) { elgg_pop_context(); -echo elgg_view('graphics/ajax_loader', array('internalid' => 'elgg-widget-loader')); \ No newline at end of file +echo elgg_view('graphics/ajax_loader', array('internalid' => 'elgg-widget-loader')); diff --git a/views/default/layout/shells/widgets/add_button.php b/views/default/layout/shells/widgets/add_button.php index 492f0f6fc..51b03edbb 100644 --- a/views/default/layout/shells/widgets/add_button.php +++ b/views/default/layout/shells/widgets/add_button.php @@ -3,6 +3,8 @@ * Button area for showing the add widgets panel */ ?> -
- + diff --git a/views/default/layout/shells/widgets/add_panel.php b/views/default/layout/shells/widgets/add_panel.php index 2d2a05a08..ff789cbd3 100644 --- a/views/default/layout/shells/widgets/add_panel.php +++ b/views/default/layout/shells/widgets/add_panel.php @@ -31,10 +31,10 @@ foreach ($widgets as $column_widgets) { $id = "elgg-widget-type-$handler"; // check if widget added and only one instance allowed if ($widget_type->multiple == false && in_array($handler, $current_handlers)) { - $class = 'elgg-widget-unavailable'; + $class = 'elgg-state-unavailable'; $tooltip = elgg_echo('widget:unavailable'); } else { - $class = 'elgg-widget-available'; + $class = 'elgg-state-available'; $tooltip = $widget_type->description; } -- cgit v1.2.3