aboutsummaryrefslogtreecommitdiff
path: root/actions/widgets/save.php
diff options
context:
space:
mode:
Diffstat (limited to 'actions/widgets/save.php')
-rw-r--r--actions/widgets/save.php54
1 files changed, 33 insertions, 21 deletions
diff --git a/actions/widgets/save.php b/actions/widgets/save.php
index 01459f660..e15deab77 100644
--- a/actions/widgets/save.php
+++ b/actions/widgets/save.php
@@ -1,32 +1,44 @@
<?php
/**
- * Elgg widget save action
+ * Elgg save widget settings action
+ *
+ * @package Elgg.Core
+ * @subpackage Widgets.Management
+ *
+ * @uses int $_REQUEST['guid'] The guid of the widget to save
+ * @uses array $_REQUEST['params'] An array of params to set on the widget.
+ * @uses int $_REQUEST['default_widgets'] Flag for if these settings are for default wigets.
+ * @uses string $_REQUEST['context'] An optional context of the widget. Used to return
+ * the correct output if widget content changes
+ * depending on context.
*
- * @package Elgg
- * @subpackage Core
- * @author Curverider Ltd
- * @link http://elgg.org/
*/
-$guid = get_input('guid');
-$params = $_REQUEST['params'];
-$pageurl = get_input('pageurl');
-$noforward = get_input('noforward',false);
-
-$result = false;
+elgg_set_context('widgets');
-if (!empty($guid)) {
- $result = save_widget_info($guid,$params);
-}
-
-if ($noforward) {
- exit;
-}
+$guid = get_input('guid');
+$params = get_input('params');
+$default_widgets = get_input('default_widgets', 0);
+$context = get_input('context');
-if ($result) {
- system_message(elgg_echo('widgets:save:success'));
+$widget = get_entity($guid);
+if ($widget && $widget->saveSettings($params)) {
+ elgg_set_page_owner_guid($widget->getContainerGUID());
+ if ($context) {
+ elgg_push_context($context);
+ }
+
+ if (!$default_widgets) {
+ if (elgg_view_exists("widgets/$widget->handler/content")) {
+ $view = "widgets/$widget->handler/content";
+ } else {
+ elgg_deprecated_notice("widgets use content as the display view", 1.8);
+ $view = "widgets/$widget->handler/view";
+ }
+ echo elgg_view($view, array('entity' => $widget));
+ }
} else {
register_error(elgg_echo('widgets:save:failure'));
}
-forward($_SERVER['HTTP_REFERER']); \ No newline at end of file
+forward(REFERER); \ No newline at end of file