summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/comment/helpers/comment_block.php5
-rw-r--r--modules/comment/js/comment.js19
-rw-r--r--modules/user/helpers/user_block.php5
-rw-r--r--modules/user/js/user.js38
4 files changed, 66 insertions, 1 deletions
diff --git a/modules/comment/helpers/comment_block.php b/modules/comment/helpers/comment_block.php
index 58a1a416..ee05a383 100644
--- a/modules/comment/helpers/comment_block.php
+++ b/modules/comment/helpers/comment_block.php
@@ -19,6 +19,11 @@
*/
class comment_block_Core {
+ public static function head($theme) {
+ $url = url::file("modules/comment/js/comment.js");
+ return "<script src=\"$url\" type=\"text/javascript\"></script>\n";
+ }
+
public static function photo_bottom($theme) {
return comment::block($theme, true);
}
diff --git a/modules/comment/js/comment.js b/modules/comment/js/comment.js
new file mode 100644
index 00000000..259b4826
--- /dev/null
+++ b/modules/comment/js/comment.js
@@ -0,0 +1,19 @@
+$("document").ready(function() {
+ ajaxify_comment_form();
+});
+
+function ajaxify_comment_form() {
+ $("#gComments form").ajaxForm({
+ complete: function(xhr, statusText) {
+ $("#gComments form").replaceWith(xhr.responseText);
+ if (xhr.status == 201) {
+ $.get(xhr.getResponseHeader("Location"), function(data, textStatus) {
+ $("#gComments .gBlockContent ul:first").append("<li>"+data+"</li>");
+ $("#gComments .gBlockContent ul:first li:last").hide().slideDown();
+ });
+ $("#gComments form").clearForm();
+ }
+ ajaxify_comment_form();
+ }
+ });
+}
diff --git a/modules/user/helpers/user_block.php b/modules/user/helpers/user_block.php
index 225ff82e..5146cc9f 100644
--- a/modules/user/helpers/user_block.php
+++ b/modules/user/helpers/user_block.php
@@ -19,9 +19,12 @@
*/
class user_block_Core {
public static function head($theme) {
+ $url = url::file("modules/user/js/user.js");
+ $script[] = "<script src=\"$url\" type=\"text/javascript\"></script>";
$user = Session::instance()->get('user', null);
$url = url::file("lib/jquery.jeditable.js");
- return empty($user) ? "" : "<script src=\"$url\" type=\"text/javascript\"></script>";
+ $script[] = empty($user) ? "" : "<script src=\"$url\" type=\"text/javascript\"></script>";
+ return implode("\n", $script);
}
public static function header_top($theme) {
diff --git a/modules/user/js/user.js b/modules/user/js/user.js
new file mode 100644
index 00000000..8ee543bf
--- /dev/null
+++ b/modules/user/js/user.js
@@ -0,0 +1,38 @@
+/**
+ * @todo preventDefault() not working in IE 6 and 7
+ * @todo Close link should be reusable
+ */
+
+$("document").ready(function() {
+ $("#gLoginLink").click(function(event){
+ event.preventDefault();
+ var url = $("#gLoginLink a").attr("href");
+ $.get(url, function(data) {
+ $('#gLoginLink').hide();
+ $("#gLoginMenu").append('<li><a href="#">X</a></li>');
+ $("#gLoginMenu li:last").addClass("gClose").show();
+ $("#gLoginMenu .gClose a").click(function(){
+ $("#gLoginForm").remove();
+ $("#gLoginMenu .gClose").remove();
+ $("#gLoginLink").show();
+ $("input#gUsername").val("");
+ $("input#gPassword").val("");
+ });
+ $("#gLoginFormContainer").html(data).hide().fadeIn();
+ ajaxify_login_form();
+ });
+ });
+});
+
+function ajaxify_login_form() {
+ $("form#gLoginForm").ajaxForm({
+ target: "#gLoginFormContainer",
+ success: function(responseText, statusText) {
+ if (!responseText) {
+ window.location.reload();
+ } else {
+ ajaxify_login_form();
+ }
+ }
+ });
+}