PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/script.js

http://hyperboard.codeplex.com
JavaScript | 212 lines | 160 code | 39 blank | 13 comment | 8 complexity | 3daac2ebb48d87bf6eee9cae35a54f2e MD5 | raw file
  1. jQuery(document).ready(function(){
  2. /* This code is executed after the DOM has been completely loaded */
  3. jQuery('.numbersOnly').keyup(function () {
  4. this.value = this.value.replace(/[^0-9\.]/g,'');
  5. });
  6. var tmp;
  7. jQuery('.note').each(function(){
  8. /* Finding the biggest z-index value of the notes */
  9. tmp = jQuery(this).css('z-index');
  10. if(tmp>zIndex) zIndex = tmp;
  11. })
  12. /* A helper function for converting a set of elements to draggables: */
  13. make_draggable(jQuery('.note'));
  14. jQuery( "#noteDialog:ui-dialog" ).dialog( "destroy" );
  15. jQuery( "#noteDialog" ).dialog({
  16. autoOpen: false,
  17. height: 450,
  18. width: 470,
  19. modal: true,
  20. open : function() {
  21. var _item = jQuery(this).data('link');
  22. jQuery(this).find('#previewNote').draggable("disable");
  23. jQuery('#note-post').button();
  24. if (_item) {
  25. var _content = jQuery(_item).find('.body').text();
  26. var _data = jQuery(_item).find('span.data').text();
  27. var _author = jQuery(_item).find('.author').text();
  28. var _color = jQuery(_item).find('.color').text();
  29. var _estimate = jQuery(_item).find('.estimate').text();
  30. var _timeleft = jQuery(_item).find('.timeleft').text();
  31. jQuery('#previewNote .body').text(_content);
  32. jQuery('#noteData .pr-body').text(_content);
  33. jQuery('#previewNote .author').text(_author);
  34. jQuery('#noteData .pr-author').val(_author);
  35. jQuery('#previewNote span.data').text(_data);
  36. jQuery('#previewNote span.color').text(_color);
  37. jQuery('#previewNote span.estimate').text(_estimate);
  38. jQuery('#previewNote span.timeleft').text(_timeleft);
  39. jQuery('#noteData .pr-estimate').val(_estimate);
  40. jQuery('#noteData .pr-timeleft').val(_timeleft);
  41. jQuery('#previewNote').addClass(_color);
  42. jQuery('#note-post').button( "option", "disabled", false );
  43. jQuery( "#note-post" )
  44. .button()
  45. .click(function() {
  46. location.href='?p='+_data;
  47. });
  48. }
  49. else{
  50. jQuery('#previewNote .body').text('');
  51. jQuery('#noteData .pr-body').val('');
  52. jQuery('#previewNote .author').text('');
  53. jQuery('#noteData .pr-author').val('');
  54. jQuery('#previewNote span.data').text('');
  55. jQuery('#previewNote span.color').text('yellow');
  56. jQuery('#previewNote').addClass('yellow');
  57. jQuery('#previewNote span.estimate').text('0');
  58. jQuery('#previewNote span.timeleft').text('0');
  59. jQuery('#noteData .pr-estimate').val('0');
  60. jQuery('#noteData .pr-timeleft').val('0');
  61. jQuery('#note-post').button( "option", "disabled", true );
  62. }
  63. }
  64. });
  65. jQuery( ".add_new_note" )
  66. .button()
  67. .click(function() {
  68. jQuery( "#noteDialog" )
  69. .data('link', false)
  70. .dialog( "open" );
  71. });
  72. jQuery( "#note-close" )
  73. .button()
  74. .click(function() {
  75. jQuery( "#noteDialog" ).dialog( "close" );
  76. });
  77. make_editable();
  78. /* Listening for keyup events on fields of the "Add a note" form: */
  79. jQuery('.pr-body,.pr-author,.pr-estimate,.pr-timeleft').live('keyup',function(e){
  80. if(!this.preview)
  81. this.preview=jQuery('#noteDialog .note');
  82. /* Setting the text of the preview to the contents of the input field, and stripping all the HTML tags: */
  83. this.preview.find(jQuery(this).attr('class').replace('pr-','.')).html(jQuery(this).val().replace(/<[^>]+>/ig,''));
  84. });
  85. /* Changing the color of the preview note: */
  86. jQuery('.color').live('click',function(){
  87. jQuery('#previewNote').removeClass('yellow green blue purple orange pink').addClass(jQuery(this).attr('class').replace('color',''));
  88. jQuery('#previewNote span.color').text(jQuery(this).attr('class').replace('color ',''));
  89. });
  90. /* The submit button: */
  91. jQuery('#note-submit').live('click',function(e){
  92. if(jQuery('#noteData .pr-body').val().length<1)
  93. {
  94. alert("The note text is too short!");
  95. return false;
  96. }
  97. if(jQuery('#noteData .pr-author').val().length<1)
  98. {
  99. alert("You haven't entered your name!");
  100. return false;
  101. }
  102. var _id = jQuery('#previewNote span.data').first().text();
  103. var data = {
  104. action : 'hyperboard_insert_note',
  105. 'zindex' : ++zIndex,
  106. 'body' : jQuery('#noteData .pr-body').val(),
  107. 'author' : jQuery('#noteData .pr-author').val(),
  108. 'board' : jQuery('#noteData span.board').text(),
  109. 'id' : _id,
  110. 'color' : jQuery('#previewNote span.color').first().text(),
  111. 'estimate' : jQuery('#noteData .pr-estimate').val(),
  112. 'timeleft' : jQuery('#noteData .pr-timeleft').val()
  113. };
  114. /* Sending an AJAX POST request: */
  115. jQuery.post('./wp-admin/admin-ajax.php',data,function(msg){
  116. _newId = msg.replace(/.*<post>(.*?)<\/post>.*/ig, "$1");
  117. if(parseInt(_newId))
  118. {
  119. if (_id==_newId) {
  120. //Find the old note!
  121. var _old = jQuery('#hyperboard_note_'+_id);
  122. _old.find('.body').text(jQuery('#noteData .pr-body').val());
  123. _old.find('.author').text(jQuery('#noteData .pr-author').val());
  124. _old.find('.estimate').text(jQuery('#previewNote span.estimate').text());
  125. _old.find('.timeleft').text(jQuery('#previewNote span.timeleft').text());
  126. _old.find('.color').text(jQuery('#previewNote span.color').text());
  127. _old.removeClass('yellow green blue purple orange pink').addClass(jQuery('#previewNote span.color').text());
  128. /*jQuery('#previewNote .body')*/
  129. }
  130. else {
  131. /* msg contains the ID of the note, assigned by MySQL's auto increment: */
  132. var tmp = jQuery('#previewNote').clone();
  133. tmp.attr("id",'hyperboard_note_' + _newId);
  134. tmp.find('span.data').text(_newId).end().css({'z-index':zIndex,top:72,left:42});
  135. tmp.appendTo(jQuery('#hyperboardmain'));
  136. make_draggable(tmp);
  137. }
  138. make_editable();
  139. }
  140. });
  141. e.preventDefault();
  142. jQuery( "#noteDialog" ).dialog( "close" );
  143. })
  144. jQuery('.note-form').live('submit',function(e){e.preventDefault();});
  145. });
  146. var zIndex = 0;
  147. function make_editable()
  148. {
  149. jQuery('.note').click(function(){
  150. var _item = jQuery(this);
  151. jQuery( "#noteDialog" )
  152. .data('link', jQuery(this))
  153. .dialog("open");
  154. });
  155. }
  156. function make_draggable(elements)
  157. {
  158. /* Elements is a jquery object: */
  159. elements.draggable({
  160. containment:'parent',
  161. start:function(e,ui){ ui.helper.css('z-index',++zIndex); },
  162. stop:function(e,ui){
  163. /* Sending the z-index and positon of the note to update_position.php via AJAX GET: */
  164. jQuery.get('./wp-admin/admin-ajax.php',{
  165. action : 'hyperboard_update_position',
  166. x : ui.position.left,
  167. y : ui.position.top,
  168. z : zIndex,
  169. id : parseInt(ui.helper.find('span.data').html())
  170. });
  171. }
  172. });
  173. }