diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/comment/helpers/comment_block.php | 5 | ||||
-rw-r--r-- | modules/comment/js/comment.js | 19 | ||||
-rw-r--r-- | modules/user/helpers/user_block.php | 5 | ||||
-rw-r--r-- | modules/user/js/user.js | 38 |
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(); + } + } + }); +} |