summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2010-08-01 10:35:15 -0700
committerBharat Mediratta <bharat@menalto.com>2010-08-01 10:35:15 -0700
commit3b187d7fe9acbe46e38ae824b6374dd3bfd0cfb0 (patch)
tree81af4ec2993f740fb632c9f5ea4572bb2d1efa23
parent563afbe6ddf4b4debea87a0cb0b8758c8826f80c (diff)
parentbf7115cf5a732cea2d498971ec94d2ade3b2fcdd (diff)
Merge branch 'dialog'
-rw-r--r--lib/gallery.dialog.js76
-rw-r--r--lib/gallery.panel.js42
-rw-r--r--modules/comment/controllers/admin_manage_comments.php8
-rw-r--r--modules/comment/controllers/comments.php9
-rw-r--r--modules/exif/controllers/exif.php2
-rw-r--r--modules/gallery/controllers/admin.php5
-rw-r--r--modules/gallery/controllers/admin_advanced_settings.php4
-rw-r--r--modules/gallery/controllers/admin_languages.php2
-rw-r--r--modules/gallery/controllers/admin_maintenance.php28
-rw-r--r--modules/gallery/controllers/admin_modules.php2
-rw-r--r--modules/gallery/controllers/admin_sidebar.php2
-rw-r--r--modules/gallery/controllers/admin_themes.php2
-rw-r--r--modules/gallery/controllers/albums.php14
-rw-r--r--modules/gallery/controllers/l10n_client.php2
-rw-r--r--modules/gallery/controllers/login.php9
-rw-r--r--modules/gallery/controllers/move.php6
-rw-r--r--modules/gallery/controllers/movies.php8
-rw-r--r--modules/gallery/controllers/permissions.php2
-rw-r--r--modules/gallery/controllers/photos.php8
-rw-r--r--modules/gallery/controllers/quick.php15
-rw-r--r--modules/gallery/controllers/reauthenticate.php21
-rw-r--r--modules/gallery/controllers/uploader.php5
-rw-r--r--modules/gallery/controllers/user_profile.php6
-rw-r--r--modules/gallery/helpers/json.php33
-rw-r--r--modules/organize/controllers/organize.php10
-rw-r--r--modules/rest/helpers/rest.php3
-rw-r--r--modules/server_add/controllers/server_add.php10
-rw-r--r--modules/tag/controllers/admin_tags.php15
-rw-r--r--modules/tag/controllers/tags.php6
-rw-r--r--modules/user/controllers/admin_users.php40
-rw-r--r--modules/user/controllers/password.php6
-rw-r--r--modules/user/controllers/users.php29
-rw-r--r--modules/watermark/controllers/admin_watermarks.php25
33 files changed, 276 insertions, 179 deletions
diff --git a/lib/gallery.dialog.js b/lib/gallery.dialog.js
index cc35f5cd..f1d146ab 100644
--- a/lib/gallery.dialog.js
+++ b/lib/gallery.dialog.js
@@ -27,19 +27,42 @@
$("#g-dialog").gallery_show_loading();
- $.getJSON(sHref, function(data) {
- $("#g-dialog").html(unescape(data.form)).gallery_show_loading();
+ $.ajax({
+ url: sHref,
+ type: "GET",
+ beforeSend: function(xhr) {
+ // Until we convert to jquery 1.4, we need to save the XMLHttpRequest object so that we
+ // can detect the mime type of the reply
+ this.xhrData = xhr;
+ },
+ success: function(data, textStatus, xhr) {
+ // Pre jquery 1.4, get the saved XMLHttpRequest object
+ if (xhr == undefined) {
+ xhr = this.xhrData;
+ }
+ var mimeType = /^(\w+\/\w+)\;?/.exec(xhr.getResponseHeader("Content-Type"));
+
+ var content = "";
+ if (mimeType[1] == "application/json") {
+ data = JSON.parse(data);
+ content = unescape(data.form);
+ } else {
+ content = data;
+ }
- if ($("#g-dialog form").length) {
- self.form_loaded(null, $("#g-dialog form"));
- }
- self._layout();
+ $("#g-dialog").html(content).gallery_show_loading();
+
+ if ($("#g-dialog form").length) {
+ self.form_loaded(null, $("#g-dialog form"));
+ }
+ self._layout();
- $("#g-dialog").dialog("open");
- self._set_title();
+ $("#g-dialog").dialog("open");
+ self._set_title();
- if ($("#g-dialog form").length) {
- self._ajaxify_dialog();
+ if ($("#g-dialog form").length) {
+ self._ajaxify_dialog();
+ }
}
});
$("#g-dialog").dialog("option", "self", self);
@@ -99,17 +122,42 @@
_ajaxify_dialog: function() {
var self = this;
$("#g-dialog form").ajaxForm({
- dataType: "json",
beforeSubmit: function(formData, form, options) {
form.find(":submit")
.addClass("ui-state-disabled")
.attr("disabled", "disabled");
return true;
},
+ beforeSend: function(xhr) {
+ // Until we convert to jquery 1.4, we need to save the XMLHttpRequest object so that we
+ // can detect the mime type of the reply
+ this.xhrData = xhr;
+ },
success: function(data) {
- if (data.form) {
- var formData = unescape(data.form);
- $("#g-dialog form").replaceWith(formData);
+ // Pre jquery 1.4, get the saved XMLHttpRequest object
+ xhr = this.xhrData;
+ if (xhr) {
+ var mimeType = /^(\w+\/\w+)\;?/.exec(xhr.getResponseHeader("Content-Type"));
+
+ var content = "";
+ if (mimeType[1] == "application/json") {
+ data = JSON.parse(data);
+ } else {
+ data = {"html": escape(data)};
+ }
+ } else {
+ // Uploading files (eg: watermark) uses a fake xhr in jquery.form.js so
+ // all we have is in the data field, which should be some very simple JSON.
+ // Weirdly enough in Chrome the result gets wrapped in a <pre> element and
+ // looks like this:
+ // <pre style="word-wrap: break-word; white-space: pre-wrap;">{"result":"success",
+ // "location":"\/~bharat\/gallery3\/index.php\/admin\/watermarks"}</pre>
+ // bizarre. Strip that off before parsing.
+ data = JSON.parse(data.match("({.*})")[0]);
+ }
+
+ if (data.html) {
+ $("#g-dialog").html(unescape(data.html));
$("#g-dialog").dialog("option", "position", "center");
$("#g-dialog form :submit").removeClass("ui-state-disabled")
.attr("disabled", null);
diff --git a/lib/gallery.panel.js b/lib/gallery.panel.js
index b94df223..e0605ca3 100644
--- a/lib/gallery.panel.js
+++ b/lib/gallery.panel.js
@@ -31,15 +31,37 @@
if (should_open) {
$(parent).after(ePanel);
$("#g-panel td").html(sHref);
- $.getJSON(sHref, function(data) {
- $("#g-panel td").html(unescape(data.form));
- self._ajaxify_panel();
- if ($(element).attr("open_text")) {
- $(element).attr("orig_text", $(element).children(".g-button-text").text());
- $(element).children(".g-button-text").text($(element).attr("open_text"));
+ $.ajax({
+ url: sHref,
+ type: "GET",
+ beforeSend: function(xhr) {
+ // Until we convert to jquery 1.4, we need to save the
+ // XMLHttpRequest object
+ this.xhrData = xhr;
+ },
+ success: function(data, textStatus, xhr) {
+ // Pre jquery 1.4, get the saved XMLHttpRequest object
+ if (xhr == undefined) {
+ xhr = this.xhrData;
+ }
+ var mimeType = /^(\w+\/\w+)\;?/.exec(xhr.getResponseHeader("Content-Type"));
+ var content = "";
+ if (mimeType[1] == "application/json") {
+ data = JSON.parse(data);
+ content = unescape(data.html);
+ } else {
+ content = data;
+ }
+
+ $("#g-panel td").html(content);
+ self._ajaxify_panel();
+ if ($(element).attr("open_text")) {
+ $(element).attr("orig_text", $(element).children(".g-button-text").text());
+ $(element).children(".g-button-text").text($(element).attr("open_text"));
+ }
+ $("#g-panel").addClass(parentClass).show().slideDown("slow");
}
- $("#g-panel").addClass(parentClass).show().slideDown("slow");
- });
+ });
}
return false;
@@ -57,8 +79,8 @@
return true;
},
success: function(data) {
- if (data.form) {
- $("#g-panel td form").replaceWith(data.form);
+ if (data.html) {
+ $("#g-panel td").html(data.html);
self._ajaxify_panel();
}
if (data.result == "success") {
diff --git a/modules/comment/controllers/admin_manage_comments.php b/modules/comment/controllers/admin_manage_comments.php
index bc1c9e64..e451791f 100644
--- a/modules/comment/controllers/admin_manage_comments.php
+++ b/modules/comment/controllers/admin_manage_comments.php
@@ -34,10 +34,10 @@ class Admin_Manage_Comments_Controller extends Admin_Controller {
public function menu_labels() {
$menu = $this->_menu($this->_counts());
- print json_encode(array((string) $menu->get("unpublished")->label,
- (string) $menu->get("published")->label,
- (string) $menu->get("spam")->label,
- (string) $menu->get("deleted")->label));
+ json::reply(array((string) $menu->get("unpublished")->label,
+ (string) $menu->get("published")->label,
+ (string) $menu->get("spam")->label,
+ (string) $menu->get("deleted")->label));
}
public function queue($state) {
diff --git a/modules/comment/controllers/comments.php b/modules/comment/controllers/comments.php
index c42ad24e..6ec4132b 100644
--- a/modules/comment/controllers/comments.php
+++ b/modules/comment/controllers/comments.php
@@ -56,13 +56,12 @@ class Comments_Controller extends Controller {
$view = new Theme_View("comment.html", "other", "comment-fragment");
$view->comment = $comment;
- print json_encode(
- array("result" => "success",
- "view" => (string) $view,
- "form" => (string) comment::get_add_form($item)));
+ json::reply(array("result" => "success",
+ "view" => (string)$view,
+ "form" => (string)comment::get_add_form($item)));
} else {
$form = comment::prefill_add_form($form);
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "form" => (string)$form));
}
}
diff --git a/modules/exif/controllers/exif.php b/modules/exif/controllers/exif.php
index fe5b2ff4..2fe875e3 100644
--- a/modules/exif/controllers/exif.php
+++ b/modules/exif/controllers/exif.php
@@ -28,6 +28,6 @@ class Exif_Controller extends Controller {
$view = new View("exif_dialog.html");
$view->details = exif::get($item);
- print json_encode(array("form" => (string) $view));
+ print $view;
}
}
diff --git a/modules/gallery/controllers/admin.php b/modules/gallery/controllers/admin.php
index eacacb28..8fc5432d 100644
--- a/modules/gallery/controllers/admin.php
+++ b/modules/gallery/controllers/admin.php
@@ -78,7 +78,7 @@ class Admin_Controller extends Controller {
$result->location = url::abs_site("");
}
- print json_encode($result);
+ json::reply($result);
}
private static function _prompt_for_reauth($controller_name, $args) {
@@ -86,7 +86,8 @@ class Admin_Controller extends Controller {
// Avoid anti-phishing protection by passing the url as session variable.
Session::instance()->set("continue_url", url::abs_current(true));
}
-
+ // Save the is_ajax value as we lose it, if set, when we redirect
+ Session::instance()->set("is_ajax_request", request::is_ajax());
url::redirect("reauthenticate");
}
}
diff --git a/modules/gallery/controllers/admin_advanced_settings.php b/modules/gallery/controllers/admin_advanced_settings.php
index 2bbbdf50..cf197743 100644
--- a/modules/gallery/controllers/admin_advanced_settings.php
+++ b/modules/gallery/controllers/admin_advanced_settings.php
@@ -39,7 +39,7 @@ class Admin_Advanced_Settings_Controller extends Admin_Controller {
$group->input("var_name")->label(t("Setting"))->value($var_name)->disabled(1);
$group->textarea("value")->label(t("Value"))->value($value);
$group->submit("")->value(t("Save"));
- print json_encode(array("form" => (string) $form));
+ print $form;
}
public function save($module_name, $var_name) {
@@ -50,6 +50,6 @@ class Admin_Advanced_Settings_Controller extends Admin_Controller {
t("Saved value for %var (%module_name)",
array("var" => $var_name, "module_name" => $module_name)));
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
}
diff --git a/modules/gallery/controllers/admin_languages.php b/modules/gallery/controllers/admin_languages.php
index 2e993816..573ededf 100644
--- a/modules/gallery/controllers/admin_languages.php
+++ b/modules/gallery/controllers/admin_languages.php
@@ -51,7 +51,7 @@ class Admin_Languages_Controller extends Admin_Controller {
}
module::set_var("gallery", "default_locale", $new_default_locale);
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
public function share() {
diff --git a/modules/gallery/controllers/admin_maintenance.php b/modules/gallery/controllers/admin_maintenance.php
index 489f5d54..3567b4f0 100644
--- a/modules/gallery/controllers/admin_maintenance.php
+++ b/modules/gallery/controllers/admin_maintenance.php
@@ -64,7 +64,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
log::info("tasks", t("Task %task_name started (task id %task_id)",
array("task_name" => $task->name, "task_id" => $task->id)),
html::anchor("admin/maintenance", t("maintenance")));
- print json_encode(array("form" => (string) $view));
+ print $view;
}
/**
@@ -86,7 +86,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
log::info("tasks", t("Task %task_name resumed (task id %task_id)",
array("task_name" => $task->name, "task_id" => $task->id)),
html::anchor("admin/maintenance", t("maintenance")));
- print json_encode(array("form" => (string) $view));
+ print $view;
}
/**
@@ -103,7 +103,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
$view = new View("admin_maintenance_show_log.html");
$view->task = $task;
- print json_encode(array("form" => (string) $view));
+ print $view;
}
/**
@@ -211,19 +211,19 @@ class Admin_Maintenance_Controller extends Admin_Controller {
break;
}
// Using sprintf("%F") to avoid comma as decimal separator.
- print json_encode(array("result" => "success",
- "task" => array(
- "percent_complete" => sprintf("%F", $task->percent_complete),
- "status" => (string) $task->status,
- "done" => (bool) $task->done),
- "location" => url::site("admin/maintenance")));
+ json::reply(array("result" => "success",
+ "task" => array(
+ "percent_complete" => sprintf("%F", $task->percent_complete),
+ "status" => (string) $task->status,
+ "done" => (bool) $task->done),
+ "location" => url::site("admin/maintenance")));
} else {
- print json_encode(array("result" => "in_progress",
- "task" => array(
- "percent_complete" => sprintf("%F", $task->percent_complete),
- "status" => (string) $task->status,
- "done" => (bool) $task->done)));
+ json::reply(array("result" => "in_progress",
+ "task" => array(
+ "percent_complete" => sprintf("%F", $task->percent_complete),
+ "status" => (string) $task->status,
+ "done" => (bool) $task->done)));
}
}
}
diff --git a/modules/gallery/controllers/admin_modules.php b/modules/gallery/controllers/admin_modules.php
index bf638a37..f5af9a5a 100644
--- a/modules/gallery/controllers/admin_modules.php
+++ b/modules/gallery/controllers/admin_modules.php
@@ -57,7 +57,7 @@ class Admin_Modules_Controller extends Admin_Controller {
$result["dialog"] = (string)$v;
$result["allow_continue"] = empty($messages["error"]);
}
- print json_encode($result);
+ json::reply($result);
}
public function save() {
diff --git a/modules/gallery/controllers/admin_sidebar.php b/modules/gallery/controllers/admin_sidebar.php
index fb857e4e..2e49097a 100644
--- a/modules/gallery/controllers/admin_sidebar.php
+++ b/modules/gallery/controllers/admin_sidebar.php
@@ -50,7 +50,7 @@ class Admin_Sidebar_Controller extends Admin_Controller {
$result["active"] = $v->render();
$message = t("Updated sidebar blocks");
$result["message"] = (string) $message;
- print json_encode($result);
+ json::reply($result);
}
private function _get_blocks() {
diff --git a/modules/gallery/controllers/admin_themes.php b/modules/gallery/controllers/admin_themes.php
index b1bd438f..e59eadaf 100644
--- a/modules/gallery/controllers/admin_themes.php
+++ b/modules/gallery/controllers/admin_themes.php
@@ -52,7 +52,7 @@ class Admin_Themes_Controller extends Admin_Controller {
} else {
$view->url = item::root()->url("theme=$theme_name");
}
- print json_encode(array("form" => (string) $view));
+ print $view;
}
public function choose($type, $theme_name) {
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index 8aed1341..f3f5dee3 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -113,9 +113,9 @@ class Albums_Controller extends Items_Controller {
message::success(t("Created album %album_title",
array("album_title" => html::purify($album->title))));
- print json_encode(array("result" => "success", "location" => $album->url()));
+ json::reply(array("result" => "success", "location" => $album->url()));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ print $form;
}
}
@@ -153,13 +153,13 @@ class Albums_Controller extends Items_Controller {
if ($form->from_id->value == $album->id) {
// Use the new url; it might have changed.
- print json_encode(array("result" => "success", "location" => $album->url()));
+ json::reply(array("result" => "success", "location" => $album->url()));
} else {
// Stay on the same page
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
@@ -168,7 +168,7 @@ class Albums_Controller extends Items_Controller {
access::required("view", $album);
access::required("add", $album);
- print json_encode(array("form" => (string) album::get_add_form($album)));
+ print album::get_add_form($album);
}
public function form_edit($album_id) {
@@ -176,6 +176,6 @@ class Albums_Controller extends Items_Controller {
access::required("view", $album);
access::required("edit", $album);
- print json_encode(array("form" => (string) album::get_edit_form($album)));
+ print album::get_edit_form($album);
}
}
diff --git a/modules/gallery/controllers/l10n_client.php b/modules/gallery/controllers/l10n_client.php
index d5b322ef..6833a9ae 100644
--- a/modules/gallery/controllers/l10n_client.php
+++ b/modules/gallery/controllers/l10n_client.php
@@ -91,7 +91,7 @@ class L10n_Client_Controller extends Controller {
Gallery_I18n::clear_cache($locale);
- print json_encode(new stdClass());
+ json::reply(new stdClass());
}
public function toggle_l10n_mode() {
diff --git a/modules/gallery/controllers/login.php b/modules/gallery/controllers/login.php
index b823504b..62d33345 100644
--- a/modules/gallery/controllers/login.php
+++ b/modules/gallery/controllers/login.php
@@ -22,7 +22,7 @@ class Login_Controller extends Controller {
public function ajax() {
$view = new View("login_ajax.html");
$view->form = auth::get_login_form("login/auth_ajax");
- print json_encode(array("form" => (string) $view));
+ print $view;
}
public function auth_ajax() {
@@ -30,10 +30,11 @@ class Login_Controller extends Controller {
list ($valid, $form) = $this->_auth("login/auth_ajax");
if ($valid) {
- print json_encode(
- array("result" => "success"));
+ json::reply(array("result" => "success"));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ $view = new View("login_ajax.html");
+ $view->form = $form;
+ json::reply(array("result" => "error", "html" => (string)$view));
}
}
diff --git a/modules/gallery/controllers/move.php b/modules/gallery/controllers/move.php
index a99ef341..7b2d6165 100644
--- a/modules/gallery/controllers/move.php
+++ b/modules/gallery/controllers/move.php
@@ -26,7 +26,7 @@ class Move_Controller extends Controller {
$view = new View("move_browse.html");
$view->source = $source;
$view->tree = $this->_get_tree_html($source, ORM::factory("item", 1));
- print json_encode(array("form" => (string) $view));
+ print $view;
}
public function save($source_id) {
@@ -41,9 +41,7 @@ class Move_Controller extends Controller {
item::move($source, $target);
- print json_encode(
- array("result" => "success",
- "location" => $target->url()));
+ json::reply(array("result" => "success", "location" => $target->url()));
}
public function show_sub_tree($source_id, $target_id) {
diff --git a/modules/gallery/controllers/movies.php b/modules/gallery/controllers/movies.php
index c18dbcde..02d2a497 100644
--- a/modules/gallery/controllers/movies.php
+++ b/modules/gallery/controllers/movies.php
@@ -87,13 +87,13 @@ class Movies_Controller extends Items_Controller {
if ($form->from_id->value == $movie->id) {
// Use the new url; it might have changed.
- print json_encode(array("result" => "success", "location" => $movie->url()));
+ json::reply(array("result" => "success", "location" => $movie->url()));
} else {
// Stay on the same page
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string) $form));
}
}
@@ -102,6 +102,6 @@ class Movies_Controller extends Items_Controller {
access::required("view", $movie);
access::required("edit", $movie);
- print json_encode(array("form" => (string) movie::get_edit_form($movie)));
+ print movie::get_edit_form($movie);
}
}
diff --git a/modules/gallery/controllers/permissions.php b/modules/gallery/controllers/permissions.php
index 8fdda7b2..fc06cb44 100644
--- a/modules/gallery/controllers/permissions.php
+++ b/modules/gallery/controllers/permissions.php
@@ -33,7 +33,7 @@ class Permissions_Controller extends Controller {
$view->parents = $item->parents();
$view->form = $this->_get_form($item);
- print json_encode(array("form" => (string) $view));
+ print $view;
}
function form($id) {
diff --git a/modules/gallery/controllers/photos.php b/modules/gallery/controllers/photos.php
index 9f17cebb..8377e6c7 100644
--- a/modules/gallery/controllers/photos.php
+++ b/modules/gallery/controllers/photos.php
@@ -87,13 +87,13 @@ class Photos_Controller extends Items_Controller {
if ($form->from_id->value == $photo->id) {
// Use the new url; it might have changed.
- print json_encode(array("result" => "success", "location" => $photo->url()));
+ json::reply(array("result" => "success", "location" => $photo->url()));
} else {
// Stay on the same page
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
@@ -102,6 +102,6 @@ class Photos_Controller extends Items_Controller {
access::required("view", $photo);
access::required("edit", $photo);
- print json_encode(array("form" => (string) photo::get_edit_form($photo)));
+ print photo::get_edit_form($photo);
}
}
diff --git a/modules/gallery/controllers/quick.php b/modules/gallery/controllers/quick.php
index 253a279b..fee601d9 100644
--- a/modules/gallery/controllers/quick.php
+++ b/modules/gallery/controllers/quick.php
@@ -58,12 +58,12 @@ class Quick_Controller extends Controller {
}
if (Input::instance()->get("page_type") == "collection") {
- print json_encode(
+ json::reply(
array("src" => $item->thumb_url(),
"width" => $item->thumb_width,
"height" => $item->thumb_height));
} else {
- print json_encode(
+ json::reply(
array("src" => $item->resize_url(),
"width" => $item->resize_width,
"height" => $item->resize_height));
@@ -83,7 +83,7 @@ class Quick_Controller extends Controller {
item::make_album_cover($item);
message::success($msg);
- print json_encode(array("result" => "success", "reload" => 1));
+ json::reply(array("result" => "success", "reload" => 1));
}
public function form_delete($id) {
@@ -94,7 +94,7 @@ class Quick_Controller extends Controller {
$v = new View("quick_delete_confirm.html");
$v->item = $item;
$v->form = item::get_delete_form($item);
- print json_encode(array("form" => (string) $v));
+ print $v;
}
public function delete($id) {
@@ -125,10 +125,9 @@ class Quick_Controller extends Controller {
$from_id = Input::instance()->get("from_id");
if (Input::instance()->get("page_type") == "collection" &&
$from_id != $id /* deleted the item we were viewing */) {
- print json_encode(array("result" => "success", "reload" => 1));
+ json::reply(array("result" => "success", "reload" => 1));
} else {
- print json_encode(array("result" => "success",
- "location" => $parent->url()));
+ json::reply(array("result" => "success", "location" => $parent->url()));
}
}
@@ -154,6 +153,6 @@ class Quick_Controller extends Controller {
// Pass on the source item where this form was generated, so we have an idea where to return to.
$form->hidden("from_id")->value((int)Input::instance()->get("from_id", 0));
- print json_encode(array("form" => (string) $form));
+ print $form;
}
}
diff --git a/modules/gallery/controllers/reauthenticate.php b/modules/gallery/controllers/reauthenticate.php
index 3cff2b6a..0486c0fe 100644
--- a/modules/gallery/controllers/reauthenticate.php
+++ b/modules/gallery/controllers/reauthenticate.php
@@ -18,12 +18,18 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Reauthenticate_Controller extends Controller {
- public function index($share_translations_form=null) {
+ public function index() {
if (!identity::active_user()->admin) {
access::forbidden();
}
- if (request::is_ajax()) {
- print json_encode(array("form" => (string) self::_form()));
+ // On redirects from the admin controller, the ajax request indicator is lost,
+ // so we store it in the session.
+ $is_ajax = Session::instance()->get_once("is_ajax_request", request::is_ajax());
+ if ($is_ajax) {
+ $v = new View("reauthenticate.html");
+ $v->form = self::_form();
+ $v->user_name = identity::active_user()->name;
+ print $v;
} else {
self::_show_form(self::_form());
}
@@ -48,10 +54,13 @@ class Reauthenticate_Controller extends Controller {
$name = $user->name;
log::warning("user", t("Failed re-authentication for %name", array("name" => $name)));
module::event("user_auth_failed", $name);
- if (empty($reauthenticate["in_dialog"])) {
- self::_show_form($form);
+ if (request::is_ajax()) {
+ $v = new View("reauthenticate.html");
+ $v->form = $form;
+ $v->user_name = identity::active_user()->name;
+ json::reply(array("html" => (string)$v));
} else {
- print json_encode(array("form" => (string) $form));
+ self::_show_form($form);
}
}
}
diff --git a/modules/gallery/controllers/uploader.php b/modules/gallery/controllers/uploader.php
index 38e22cee..87520032 100644
--- a/modules/gallery/controllers/uploader.php
+++ b/modules/gallery/controllers/uploader.php
@@ -26,8 +26,7 @@ class Uploader_Controller extends Controller {
$item = $item->parent();
}
- print json_encode(array("form" => (string)$this->_get_add_form($item)));
- //print $this->_get_add_form($item);
+ print $this->_get_add_form($item);
}
public function start() {
@@ -106,7 +105,7 @@ class Uploader_Controller extends Controller {
access::verify_csrf();
batch::stop();
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
private function _get_add_form($album) {
diff --git a/modules/gallery/controllers/user_profile.php b/modules/gallery/controllers/user_profile.php
index 431918ff..726d3e51 100644
--- a/modules/gallery/controllers/user_profile.php
+++ b/modules/gallery/controllers/user_profile.php
@@ -44,7 +44,7 @@ class User_Profile_Controller extends Controller {
public function contact($id) {
$user = identity::lookup_user($id);
- print json_encode(array("form" => (string) user_profile::get_contact_form($user)));
+ print user_profile::get_contact_form($user);
}
public function send($id) {
@@ -61,9 +61,9 @@ class User_Profile_Controller extends Controller {
->message(html::purify($form->message->message->value))
->send();
message::success(t("Sent message to %user_name", array("user_name" => $user->display_name())));
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
} else {
- print json_encode(array("result" => "error", "form" => (string)$form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
}
diff --git a/modules/gallery/helpers/json.php b/modules/gallery/helpers/json.php
new file mode 100644
index 00000000..a39db27a
--- /dev/null
+++ b/modules/gallery/helpers/json.php
@@ -0,0 +1,33 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2010 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class json_Core {
+ /**
+ * JSON Encode a reply to the browser and set the content type to specify that it's a JSON
+ * payload.
+ *
+ * @param mixed $message string or object to json encode and print
+ */
+ static function reply($message) {
+ if (!headers_sent()) {
+ header("Content-Type: application/json; charset=" . Kohana::CHARSET);
+ }
+ print json_encode($message);
+ }
+} \ No newline at end of file
diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php
index 0e647e09..3005eb67 100644
--- a/modules/organize/controllers/organize.php
+++ b/modules/organize/controllers/organize.php
@@ -47,14 +47,14 @@ class Organize_Controller extends Controller {
$v->controller_uri = url::site("organize") . "/";
$v->swf_uri = url::file("modules/organize/lib/Gallery3WebClient.swf?") .
filemtime(MODPATH . "organize/lib/Gallery3WebClient.swf");
- print json_encode(array("form" => (string) $v));
+ print $v;
}
function add_album_fields() {
- print json_encode(array("title" => (string)t("Title"),
- "description" => (string)t("Description"),
- "name" => (string)t("Directory name"),
- "slug" => (string)t("Internet Address")));
+ json::reply(array("title" => (string)t("Title"),
+ "description" => (string)t("Description"),
+ "name" => (string)t("Directory name"),
+ "slug" => (string)t("Internet Address")));
}
}
diff --git a/modules/rest/helpers/rest.php b/modules/rest/helpers/rest.php
index bcb12d58..644779da 100644
--- a/modules/rest/helpers/rest.php
+++ b/modules/rest/helpers/rest.php
@@ -35,8 +35,7 @@ class rest_Core {
}
print "<pre>$html</pre>";
} else {
- header("Content-type: application/json");
- print json_encode($data);
+ json::reply($data);
}
}
diff --git a/modules/server_add/controllers/server_add.php b/modules/server_add/controllers/server_add.php
index e91d9dd9..e4c3e69c 100644
--- a/modules/server_add/controllers/server_add.php
+++ b/modules/server_add/controllers/server_add.php
@@ -30,7 +30,7 @@ class Server_Add_Controller extends Admin_Controller {
$view->tree = new View("server_add_tree.html");
$view->tree->files = $files;
$view->tree->parents = array();
- print json_encode(array("form" => (string) $view));
+ print $view;
}
public function children() {
@@ -91,7 +91,7 @@ class Server_Add_Controller extends Admin_Controller {
->name(t("Add from server"));
$task = task::create($task_def, array("item_id" => $item->id, "queue" => $paths));
- print json_encode(
+ json::reply(
array("result" => "started",
"status" => (string)$task->status,
"url" => url::site("server_add/run/$task->id?csrf=" . access::csrf_token())));
@@ -111,9 +111,9 @@ class Server_Add_Controller extends Admin_Controller {
$task = task::run($task_id);
// Prevent the JavaScript code from breaking by forcing a period as
// decimal separator for all locales with sprintf("%F", $value).
- print json_encode(array("done" => (bool)$task->done,
- "status" => (string)$task->status,
- "percent_complete" => sprintf("%F", $task->percent_complete)));
+ json::reply(array("done" => (bool)$task->done,
+ "status" => (string)$task->status,
+ "percent_complete" => sprintf("%F", $task->percent_complete)));
}
/**
diff --git a/modules/tag/controllers/admin_tags.php b/modules/tag/controllers/admin_tags.php
index c2da7bc3..0c82579b 100644
--- a/modules/tag/controllers/admin_tags.php
+++ b/modules/tag/controllers/admin_tags.php
@@ -37,7 +37,7 @@ class Admin_Tags_Controller extends Admin_Controller {
public function form_delete($id) {
$tag = ORM::factory("tag", $id);
if ($tag->loaded()) {
- print json_encode(array("form" => (string) tag::get_delete_form($tag)));
+ print tag::get_delete_form($tag);
}
}
@@ -57,11 +57,9 @@ class Admin_Tags_Controller extends Admin_Controller {
message::success(t("Deleted tag %tag_name", array("tag_name" => $name)));
log::success("tags", t("Deleted tag %tag_name", array("tag_name" => $name)));
- print json_encode(
- array("result" => "success",
- "location" => url::site("admin/tags")));
+ json::reply(array("result" => "success", "location" => url::site("admin/tags")));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ print $form;
}
}
@@ -93,15 +91,14 @@ class Admin_Tags_Controller extends Admin_Controller {
$tag->name = $in_place_edit->value();
$tag->save();
- $message = t("Renamed tag %old_name to %new_name",
+ $message = t("Renamed tag <b>%old_name</b> to <b>%new_name</b>",
array("old_name" => $old_name, "new_name" => $tag->name));
message::success($message);
log::success("tags", $message);
- print json_encode(array("result" => "success",
- "location" => url::site("admin/tags")));
+ json::reply(array("result" => "success", "location" => url::site("admin/tags")));
} else {
- print json_encode(array("result" => "error", "form" => $in_place_edit->render()));
+ json::reply(array("result" => "error", "form" => (string)$in_place_edit->render()));
}
}
diff --git a/modules/tag/controllers/tags.php b/modules/tag/controllers/tags.php
index f3d456d3..bc657644 100644
--- a/modules/tag/controllers/tags.php
+++ b/modules/tag/controllers/tags.php
@@ -67,11 +67,9 @@ class Tags_Controller extends Controller {
}
}
- print json_encode(
- array("result" => "success",
- "cloud" => (string)tag::cloud(30)));
+ json::reply(array("result" => "success", "cloud" => (string)tag::cloud(30)));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php
index a882eb2b..24478aa5 100644
--- a/modules/user/controllers/admin_users.php
+++ b/modules/user/controllers/admin_users.php
@@ -54,14 +54,14 @@ class Admin_Users_Controller extends Admin_Controller {
$user->save();
module::event("user_add_form_admin_completed", $user, $form);
message::success(t("Created user %user_name", array("user_name" => $user->name)));
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ print json::reply(array("result" => "error", "html" => (string)$form));
}
}
public function add_user_form() {
- print json_encode(array("form" => (string) $this->_get_user_add_form_admin()));
+ print $this->_get_user_add_form_admin();
}
public function delete_user($id) {
@@ -81,13 +81,13 @@ class Admin_Users_Controller extends Admin_Controller {
$name = $user->name;
$user->delete();
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
$message = t("Deleted user %user_name", array("user_name" => $name));
log::success("user", $message);
message::success($message);
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
public function delete_user_form($id) {
@@ -95,7 +95,7 @@ class Admin_Users_Controller extends Admin_Controller {
if (empty($user)) {
throw new Kohana_404_Exception();
}
- print json_encode(array("form" => (string) $this->_get_user_delete_form_admin($user)));
+ print $this->_get_user_delete_form_admin($user);
}
public function edit_user($id) {
@@ -134,9 +134,9 @@ class Admin_Users_Controller extends Admin_Controller {
$user->save();
module::event("user_edit_form_admin_completed", $user, $form);
message::success(t("Changed user %user_name", array("user_name" => $user->name)));
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string) $form));
}
}
@@ -146,7 +146,7 @@ class Admin_Users_Controller extends Admin_Controller {
throw new Kohana_404_Exception();
}
- print json_encode(array("form" => (string) $this->_get_user_edit_form_admin($user)));
+ print $this->_get_user_edit_form_admin($user);
}
public function add_user_to_group($user_id, $group_id) {
@@ -192,14 +192,14 @@ class Admin_Users_Controller extends Admin_Controller {
$group->save();
message::success(
t("Created group %group_name", array("group_name" => $group->name)));
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
public function add_group_form() {
- print json_encode(array("form" => (string) $this->_get_group_add_form_admin()));
+ print $this->_get_group_add_form_admin();
}
public function delete_group($id) {
@@ -215,13 +215,13 @@ class Admin_Users_Controller extends Admin_Controller {
$name = $group->name;
$group->delete();
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string) $form));
}
$message = t("Deleted group %group_name", array("group_name" => $name));
log::success("group", $message);
message::success($message);
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
}
public function delete_group_form($id) {
@@ -230,7 +230,7 @@ class Admin_Users_Controller extends Admin_Controller {
throw new Kohana_404_Exception();
}
- print json_encode(array("form" => (string) $this->_get_group_delete_form_admin($group)));
+ print $this->_get_group_delete_form_admin($group);
}
public function edit_group($id) {
@@ -258,12 +258,12 @@ class Admin_Users_Controller extends Admin_Controller {
$group->save();
message::success(
t("Changed group %group_name", array("group_name" => $group->name)));
- print json_encode(array("result" => "success"));
+ json::reply(array("result" => "success"));
} else {
$group->reload();
message::error(
t("Failed to change group %group_name", array("group_name" => $group->name)));
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string) $form));
}
}
@@ -273,7 +273,7 @@ class Admin_Users_Controller extends Admin_Controller {
throw new Kohana_404_Exception();
}
- print json_encode(array("form" => (string) $this->_get_group_edit_form_admin($group)));
+ print $this->_get_group_edit_form_admin($group);
}
/* User Form Definitions */
@@ -310,7 +310,7 @@ class Admin_Users_Controller extends Admin_Controller {
}
module::event("user_edit_form_admin", $user, $form);
- $group->submit("")->value(t("Modify User"));
+ $group->submit("")->value(t("Modify user"));
return $form;
}
@@ -355,7 +355,7 @@ class Admin_Users_Controller extends Admin_Controller {
$locales = array_merge(array("" => t("« none »")), $locales);
$selected_locale = ($user && $user->locale) ? $user->locale : "";
$form->dropdown("locale")
- ->label(t("Language Preference"))
+ ->label(t("Language preference"))
->options($locales)
->selected($selected_locale);
}
diff --git a/modules/user/controllers/password.php b/modules/user/controllers/password.php
index 522b6b35..575720a8 100644
--- a/modules/user/controllers/password.php
+++ b/modules/user/controllers/password.php
@@ -27,8 +27,7 @@ class Password_Controller extends Controller {
if ($form->validate()) {
$this->_send_reset($form);
} else {
- print json_encode(array("result" => "error",
- "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
} else {
print $form;
@@ -83,8 +82,7 @@ class Password_Controller extends Controller {
// Always pretend that an email has been sent to avoid leaking
// information on what user names are actually real.
message::success(t("Password reset email sent"));
- print json_encode(
- array("result" => "success"));
+ json::reply(array("result" => "success"));
}
private static function _reset_form() {
diff --git a/modules/user/controllers/users.php b/modules/user/controllers/users.php
index 4ddfb47c..d13cccb2 100644
--- a/modules/user/controllers/users.php
+++ b/modules/user/controllers/users.php
@@ -54,11 +54,10 @@ class Users_Controller extends Controller {
$user->save();
module::event("user_edit_form_completed", $user, $form);
message::success(t("User information updated"));
- print json_encode(
- array("result" => "success",
- "resource" => url::site("users/{$user->id}")));
+ json::reply(array("result" => "success",
+ "resource" => url::site("users/{$user->id}")));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
@@ -87,14 +86,13 @@ class Users_Controller extends Controller {
message::success(t("Password changed"));
module::event("user_auth", $user);
module::event("user_password_change", $user);
- print json_encode(
- array("result" => "success",
- "resource" => url::site("users/{$user->id}")));
+ json::reply(array("result" => "success",
+ "resource" => url::site("users/{$user->id}")));
} else {
log::warning("user", t("Failed password change for %name", array("name" => $user->name)));
$name = $user->name;
module::event("user_auth_failed", $name);
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
@@ -122,14 +120,13 @@ class Users_Controller extends Controller {
module::event("user_change_email_form_completed", $user, $form);
message::success(t("Email address changed"));
module::event("user_auth", $user);
- print json_encode(
- array("result" => "success",
- "resource" => url::site("users/{$user->id}")));
+ json::reply(array("result" => "success",
+ "resource" => url::site("users/{$user->id}")));
} else {
log::warning("user", t("Failed email change for %name", array("name" => $user->name)));
$name = $user->name;
module::event("user_auth_failed", $name);
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
@@ -139,7 +136,7 @@ class Users_Controller extends Controller {
access::forbidden();
}
- print json_encode(array("form" => (string) $this->_get_edit_form($user)));
+ print $this->_get_edit_form($user);
}
public function form_change_password($id) {
@@ -148,7 +145,7 @@ class Users_Controller extends Controller {
access::forbidden();
}
- print json_encode(array("form" => (string) $this->_get_change_password_form($user)));
+ print $this->_get_change_password_form($user);
}
public function form_change_email($id) {
@@ -157,7 +154,7 @@ class Users_Controller extends Controller {
access::forbidden();
}
- print json_encode(array("form" => (string) $this->_get_change_email_form($user)));
+ print $this->_get_change_email_form($user);
}
private function _get_change_password_form($user) {
@@ -234,7 +231,7 @@ class Users_Controller extends Controller {
$locales = array_merge(array("" => t("« none »")), $locales);
$selected_locale = ($user && $user->locale) ? $user->locale : "";
$form->dropdown("locale")
- ->label(t("Language Preference"))
+ ->label(t("Language preference"))
->options($locales)
->selected($selected_locale);
}
diff --git a/modules/watermark/controllers/admin_watermarks.php b/modules/watermark/controllers/admin_watermarks.php
index 8b217b4a..0652b13c 100644
--- a/modules/watermark/controllers/admin_watermarks.php
+++ b/modules/watermark/controllers/admin_watermarks.php
@@ -35,7 +35,7 @@ class Admin_Watermarks_Controller extends Admin_Controller {
}
public function form_edit() {
- print json_encode(array("form" => (string) watermark::get_edit_form()));
+ print watermark::get_edit_form();
}
public function edit() {
@@ -49,16 +49,16 @@ class Admin_Watermarks_Controller extends Admin_Controller {
log::success("watermark", t("Watermark changed"));
message::success(t("Watermark changed"));
- print json_encode(
+ json::reply(
array("result" => "success",
"location" => url::site("admin/watermarks")));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
public function form_delete() {
- print json_encode(array("form" => (string) watermark::get_delete_form()));
+ print watermark::get_delete_form();
}
public function delete() {
@@ -79,16 +79,14 @@ class Admin_Watermarks_Controller extends Admin_Controller {
log::success("watermark", t("Watermark deleted"));
message::success(t("Watermark deleted"));
}
- print json_encode(
- array("result" => "success",
- "location" => url::site("admin/watermarks")));
+ json::reply(array("result" => "success", "location" => url::site("admin/watermarks")));
} else {
- print json_encode(array("result" => "error", "form" => (string) $form));
+ json::reply(array("result" => "error", "html" => (string)$form));
}
}
public function form_add() {
- print json_encode(array("form" => (string) watermark::get_add_form()));
+ print watermark::get_add_form();
}
public function add() {
@@ -120,11 +118,12 @@ class Admin_Watermarks_Controller extends Admin_Controller {
message::success(t("Watermark saved"));
log::success("watermark", t("Watermark saved"));
- print json_encode(
- array("result" => "success",
- "location" => url::site("admin/watermarks")));
+ json::reply(array("result" => "success", "location" => url::site("admin/watermarks")));
} else {
- print json_encode(array("result" => "error", "form" => rawurlencode((string) $form)));
+ // rawurlencode the results because the JS code that uploads the file buffers it in an
+ // iframe which entitizes the HTML and makes it difficult for the JS to process. If we url
+ // encode it now, it passes through cleanly. See ticket #797.
+ json::reply(array("result" => "error", "html" => rawurlencode((string)$form)));
}
}