PageRenderTime 77ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/files/wp-connections/0.7.7/js/cn-admin.js

https://gitlab.com/Mirros/jsdelivr
JavaScript | 317 lines | 216 code | 59 blank | 42 comment | 6 complexity | e6a95c414473fc68dd4220c3635decf9 MD5 | raw file
  1. /**
  2. * @author Steven A. Zahm
  3. */
  4. // Use jQuery() instead of $()for WordPress compatibility with the included prototype js library which uses $()
  5. // http://ipaulpro.com/blog/tutorials/2008/08/jquery-and-wordpress-getting-started/
  6. // See http://chrismeller.com/using-jquery-in-wordpress
  7. jQuery(document).ready(function($){
  8. /*
  9. * Hide the image loading spinner and show the image.
  10. */
  11. $('.connections').cn_preloader({
  12. delay:200,
  13. imgSelector:'.cn-image img.photo, .cn-image img.logo',
  14. beforeShow:function(){
  15. $(this).closest('.cn-image img').css('visibility','hidden');
  16. },
  17. afterShow:function(){
  18. //var image = $(this).closest('.cn-image');
  19. //$(image).spin(false);
  20. }
  21. });
  22. jQuery(function() {
  23. jQuery('a.detailsbutton')
  24. .css("cursor","pointer")
  25. .attr("title","Click to show details.")
  26. .click(function()
  27. {
  28. jQuery('.child-'+this.id).each(function(i, elem)
  29. {
  30. jQuery(elem).toggle(jQuery(elem).css('display') == 'none');
  31. });
  32. return false;
  33. })
  34. .toggle
  35. (
  36. function()
  37. {
  38. jQuery(this).html('Hide Details');
  39. jQuery(this).attr("title","Click to hide details.")
  40. },
  41. function()
  42. {
  43. jQuery(this).html('Show Details');
  44. jQuery(this).attr("title","Click to show details.")
  45. }
  46. );
  47. //jQuery('tr[@class^=child-]').hide().children('td');
  48. return false;
  49. });
  50. jQuery(function() {
  51. jQuery('input#entry_type_0')
  52. .click(function(){
  53. jQuery('#family').slideUp();
  54. jQuery('.namefield').slideDown();
  55. jQuery('#contact_name').slideUp();
  56. jQuery('.celebrate').slideDown();
  57. jQuery('.celebrate-disabled').slideUp();
  58. });
  59. });
  60. jQuery(function() {
  61. jQuery('input#entry_type_1')
  62. .click(function(){
  63. jQuery('#family').slideUp();
  64. jQuery('.namefield').slideUp();
  65. jQuery('#contact_name').slideDown();
  66. jQuery('.celebrate').slideUp();
  67. jQuery('.celebrate-disabled').slideDown();
  68. });
  69. });
  70. jQuery(function() {
  71. jQuery('input#entry_type_2')
  72. .click(function(){
  73. jQuery('#family').slideDown();
  74. jQuery('.namefield').slideUp();
  75. jQuery('.celebrate').slideUp();
  76. jQuery('.celebrate-disabled').slideDown();
  77. });
  78. });
  79. jQuery(function() {
  80. var $entryType = (jQuery('input[name^=entry_type]:checked').val());
  81. switch ($entryType)
  82. {
  83. case 'individual':
  84. jQuery('#family').slideUp();
  85. jQuery('#contact_name').slideUp();
  86. jQuery('.celebrate-disabled').slideUp();
  87. break;
  88. case 'organization':
  89. jQuery('#family').slideUp();
  90. jQuery('.namefield').slideUp();
  91. jQuery('.celebrate').slideUp();
  92. jQuery('.celebrate-disabled').slideDown();
  93. break;
  94. case 'family':
  95. jQuery('.namefield').slideUp();
  96. jQuery('.celebrate').slideUp();
  97. jQuery('.celebrate-disabled').slideDown();
  98. break;
  99. }
  100. });
  101. /*
  102. * Add relations to the family entry type.
  103. */
  104. $('#add-relation').click(function() {
  105. var template = (jQuery('#relation-template').text());
  106. var d = new Date();
  107. var token = Math.floor( Math.random() * d.getTime() );
  108. template = template.replace(
  109. new RegExp('::FIELD::', 'gi'),
  110. token
  111. );
  112. $('#relations').append( '<div id="relation-row-' + token + '" class="relation" style="display: none;">' + template + '<a href="#" class="cn-remove cn-button button button-warning" data-type="relation" data-token="' + token + '">Remove</a>' + '</div>' );
  113. $('#relation-row-' + token).slideDown();
  114. /*
  115. * Add jQuery Chosen to the family name and relation fields.
  116. */
  117. $('.family-member-name, .family-member-relation').chosen();
  118. return false
  119. });
  120. /*
  121. * Add jQuery Chosen to the family name and relation fields.
  122. */
  123. if ($.fn.chosen) {
  124. $('.family-member-name, .family-member-relation').chosen();
  125. }
  126. $('a.cn-add.cn-button').click(function() {
  127. var $this = $(this);
  128. var type = $this.attr('data-type');
  129. var container = '#' + $this.attr('data-container');
  130. var id = '#' + type + '-template';
  131. //console.log(id);
  132. var template = $(id).text();
  133. //console.log(template);
  134. var d = new Date();
  135. var token = Math.floor( Math.random() * d.getTime() );
  136. template = template.replace(
  137. new RegExp('::FIELD::', 'gi'),
  138. token
  139. );
  140. //console.log(template);
  141. //console.log(container);
  142. $(container).append( '<div class="widget ' + type + '" id="' + type + '-row-' + token + '" style="display: none;">' + template + '</div>' );
  143. $('#' + type + '-row-' + token).slideDown();
  144. return false;
  145. });
  146. $('a.cn-remove.cn-button').live('click', function() {
  147. var $this = $(this);
  148. var token = $this.attr('data-token');
  149. var type = $this.attr('data-type');
  150. var id = '#' + type + '-row-' + token;
  151. //alert(id);
  152. $(id).slideUp('fast', function(){ $(this).remove(); });
  153. return false;
  154. });
  155. /*
  156. * Switching Visual/HTML Modes With TinyMCE
  157. * http://www.keighl.com/2010/04/switching-visualhtml-modes-with-tinymce/
  158. */
  159. jQuery('a#toggleBioEditor').click(
  160. function() {
  161. id = 'bio';
  162. if (tinyMCE.get(id))
  163. {
  164. tinyMCE.execCommand('mceRemoveControl', false, id);
  165. }
  166. else
  167. {
  168. tinyMCE.execCommand('mceAddControl', false, id);
  169. }
  170. }
  171. );
  172. jQuery('a#toggleNoteEditor').click(
  173. function() {
  174. id = 'note';
  175. if (tinyMCE.get(id))
  176. {
  177. tinyMCE.execCommand('mceRemoveControl', false, id);
  178. }
  179. else
  180. {
  181. tinyMCE.execCommand('mceAddControl', false, id);
  182. }
  183. }
  184. );
  185. /*
  186. * Add the jQuery UI Datepicker to the date input fields.
  187. */
  188. if ($.fn.datepicker) {
  189. $('.datepicker').live('focus', function() {
  190. $(this).datepicker({
  191. changeMonth: true,
  192. changeYear: true,
  193. showOtherMonths: true,
  194. selectOtherMonths: true,
  195. yearRange: 'c-100:c+10'
  196. });
  197. });
  198. }
  199. /*
  200. * Geocode the address
  201. */
  202. $('a.geocode.button').live('click', function() {
  203. var address = new Object();
  204. var $this = $(this);
  205. var lat;
  206. var lng;
  207. var uid = $this.attr('data-uid');
  208. //console.log(uid);
  209. address.line_1 = $('input[name=address\\[' + uid + '\\]\\[line_1\\]]').val();
  210. address.line_2 = $('input[name=address\\[' + uid + '\\]\\[line_2\\]]').val();
  211. address.line_3 = $('input[name=address\\[' + uid + '\\]\\[line_3\\]]').val();
  212. address.city = $('input[name=address\\[' + uid + '\\]\\[city\\]]').val();
  213. address.state = $('input[name=address\\[' + uid + '\\]\\[state\\]]').val();
  214. address.zipcode = $('input[name=address\\[' + uid + '\\]\\[zipcode\\]]').val();
  215. address.country = $('input[name=address\\[' + uid + '\\]\\[country\\]]').val();
  216. //console.log(address);
  217. $( '#map-' + uid ).fadeIn('slow' , function() {
  218. $( '#map-' + uid ).goMap({
  219. maptype: 'ROADMAP'/*,
  220. latitude: 40.366502,
  221. longitude: -75.887637,
  222. zoom: 14*/
  223. });
  224. $.goMap.clearMarkers();
  225. $.goMap.createMarker({
  226. address: '\'' + address.line_1 + ', ' + address.city + ', ' + address.state + ', ' + address.zipcode + ', ' + '\'' , id: 'baseMarker' , draggable: true
  227. });
  228. $.goMap.setMap({ address: '\'' + address.line_1 + ', ' + address.city + ', ' + address.state + ', ' + address.zipcode + ', ' + '\'' , zoom: 18 });
  229. $.goMap.createListener( {type:'marker', marker:'baseMarker'} , 'idle', function(event) {
  230. var lat = event.latLng.lat();
  231. var lng = event.latLng.lng();
  232. console.log(lat);
  233. console.log(lng);
  234. $('input[name=address\\[' + uid + '\\]\\[latitude\\]]').val(lat);
  235. $('input[name=address\\[' + uid + '\\]\\[longitude\\]]').val(lng);
  236. });
  237. $.goMap.createListener( {type:'marker', marker:'baseMarker'} , 'dragend', function(event) {
  238. var lat = event.latLng.lat();
  239. var lng = event.latLng.lng();
  240. console.log(lat);
  241. console.log(lng);
  242. $('input[name=address\\[' + uid + '\\]\\[latitude\\]]').val(lat);
  243. $('input[name=address\\[' + uid + '\\]\\[longitude\\]]').val(lng);
  244. });
  245. });
  246. // There has to be a better way than setting a delay. I know I have to use a callback b/c the geocode is an asyn request.
  247. setTimeout( function(){
  248. setLatLngInfo(uid);
  249. }, 1500)
  250. return false;
  251. });
  252. function setLatLngInfo(uid)
  253. {
  254. var baseMarkerPosition = $( '#map-' + uid ).data('baseMarker').getPosition();
  255. $('input[name=address\\[' + uid + '\\]\\[latitude\\]]').val( baseMarkerPosition.lat() );
  256. $('input[name=address\\[' + uid + '\\]\\[longitude\\]]').val( baseMarkerPosition.lng() );
  257. }
  258. });