summaryrefslogtreecommitdiff
path: root/modules/watermark
diff options
context:
space:
mode:
Diffstat (limited to 'modules/watermark')
-rw-r--r--modules/watermark/controllers/admin_watermarks.php26
-rw-r--r--modules/watermark/helpers/watermark.php9
2 files changed, 22 insertions, 13 deletions
diff --git a/modules/watermark/controllers/admin_watermarks.php b/modules/watermark/controllers/admin_watermarks.php
index 18b463ca..a2cafee0 100644
--- a/modules/watermark/controllers/admin_watermarks.php
+++ b/modules/watermark/controllers/admin_watermarks.php
@@ -49,11 +49,11 @@ 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));
}
}
@@ -79,11 +79,9 @@ 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));
}
}
@@ -120,12 +118,20 @@ 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)));
}
+
+ // Override the application/json mime type. The dialog based HTML uploader uses an iframe to
+ // buffer the reply, and on some browsers (Firefox 3.6) it does not know what to do with the
+ // JSON that it gets back so it puts up a dialog asking the user what to do with it. So force
+ // the encoding type back to HTML for the iframe.
+ // See: http://jquery.malsup.com/form/#file-upload
+ header("Content-Type: text/html; charset=" . Kohana::CHARSET);
}
private function _update_graphics_rules() {
diff --git a/modules/watermark/helpers/watermark.php b/modules/watermark/helpers/watermark.php
index 557d31be..515f8abb 100644
--- a/modules/watermark/helpers/watermark.php
+++ b/modules/watermark/helpers/watermark.php
@@ -24,9 +24,12 @@ class watermark_Core {
}
$form = new Forge("admin/watermarks/add", "", "post", array("id" => "g-add-watermark-form"));
- $group = $form->group("add_watermark")->label(t("Upload Watermark"));
- $group->upload("file")->label(t("Watermark"))->rules("allow[jpg,png,gif]|size[1MB]|required");
- $group->dropdown("position")->label(t("Watermark Position"))
+ $group = $form->group("add_watermark")->label(t("Upload watermark"));
+ $group->upload("file")->label(t("Watermark"))->rules("allow[jpg,png,gif]|size[1MB]|required")
+ ->error_messages("required", "You must select a watermark")
+ ->error_messages("invalid_type", "The watermark must be a JPG, GIF or PNG")
+ ->error_messages("max_size", "The watermark is too big (1 MB max)");
+ $group->dropdown("position")->label(t("Watermark position"))
->options(self::positions())
->selected("southeast");
$group->dropdown("transparency")->label(t("Transparency (100% = completely transparent)"))