PageRenderTime 26ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/joomla/media/regularlabs/js/script.js

https://gitlab.com/ricardosanchez/prueba
JavaScript | 350 lines | 289 code | 50 blank | 11 comment | 107 complexity | 56fd969174946b97b2bdb0995e9403c9 MD5 | raw file
  1. /**
  2. * @package Regular Labs Library
  3. * @version 16.11.9943
  4. *
  5. * @author Peter van Westen <info@regularlabs.com>
  6. * @link http://www.regularlabs.com
  7. * @copyright Copyright © 2016 Regular Labs All Rights Reserved
  8. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
  9. */
  10. var RegularLabsScripts = null;
  11. (function($) {
  12. "use strict";
  13. $(document).ready(function() {
  14. // remove all empty control groups
  15. $('div.control-group > div').each(function(i, el) {
  16. if (
  17. $(el).html().trim() == ''
  18. && (
  19. $(el).attr('class') == 'control-label'
  20. || $(el).attr('class') == 'controls'
  21. )
  22. ) {
  23. $(el).remove();
  24. }
  25. });
  26. $('div.control-group').each(function(i, el) {
  27. if ($(el).html().trim() == '') {
  28. $(el).remove();
  29. }
  30. });
  31. $('div.control-group > div.hide').each(function(i, el) {
  32. $(el).parent().css('margin', 0);
  33. });
  34. $('.rl_resize_textarea').click(function() {
  35. var $el = $(this);
  36. var $field = $('#' + $el.attr('data-id'));
  37. if ($el.hasClass('rl_minimize')) {
  38. $el.removeClass('rl_minimize').addClass('rl_maximize');
  39. $field.css({'height': $el.attr('data-min')});
  40. return;
  41. }
  42. $el.removeClass('rl_maximize').addClass('rl_minimize');
  43. $field.css({'height': $el.attr('data-max')});
  44. });
  45. });
  46. RegularLabsScripts = {
  47. loadajax: function(url, succes, fail, query, timeout, dataType, cache) {
  48. if (url.substr(0, 9) != 'index.php') {
  49. url = url.replace('http://', '');
  50. url = 'index.php?rl_qp=1&url=' + encodeURIComponent(url);
  51. if (timeout) {
  52. url += '&timeout=' + timeout;
  53. }
  54. if (cache) {
  55. url += '&cache=' + cache;
  56. }
  57. }
  58. var dt = dataType ? dataType : '';
  59. $.ajax({
  60. type : 'post',
  61. url : url,
  62. dataType: dt,
  63. success : function(data) {
  64. if (succes) {
  65. eval(succes + ';');
  66. }
  67. },
  68. error : function(data) {
  69. if (fail) {
  70. eval(fail + ';');
  71. }
  72. }
  73. });
  74. },
  75. displayVersion: function(data, extension, version) {
  76. if (!data) {
  77. return;
  78. }
  79. var xml = RegularLabsScripts.getObjectFromXML(data);
  80. if (!xml) {
  81. return;
  82. }
  83. if (typeof(xml[extension]) == 'undefined') {
  84. return;
  85. }
  86. var dat = xml[extension];
  87. if (!dat || typeof(dat['version']) == 'undefined' || !dat['version']) {
  88. return;
  89. }
  90. var new_version = dat['version'];
  91. var compare = RegularLabsScripts.compareVersions(version, new_version);
  92. if (compare != '<') {
  93. return;
  94. }
  95. var el = $('#nonumber_newversionnumber_' + extension);
  96. if (el) {
  97. el.text(new_version);
  98. }
  99. el = $('#nonumber_version_' + extension);
  100. if (el) {
  101. el.css('display', 'block');
  102. el.parent().removeClass('hide');
  103. }
  104. },
  105. toggleSelectListSelection: function(id) {
  106. var el = document.getElement('#' + id);
  107. if (el && el.options) {
  108. for (var i = 0; i < el.options.length; i++) {
  109. if (!el.options[i].disabled) {
  110. el.options[i].selected = !el.options[i].selected;
  111. }
  112. }
  113. }
  114. },
  115. toggleSelectListSize: function(id) {
  116. var link = document.getElement('#toggle_' + id);
  117. var el = document.getElement('#' + id);
  118. if (link && el) {
  119. if (!el.getAttribute('rel')) {
  120. el.setAttribute('rel', el.getAttribute('size'));
  121. }
  122. if (el.getAttribute('size') == el.getAttribute('rel')) {
  123. el.setAttribute('size', ( el.length > 100 ) ? 100 : el.length);
  124. link.getElement('span.show').setStyle('display', 'none');
  125. link.getElement('span.hide').setStyle('display', 'inline');
  126. if (typeof( window['RegularLabsToggler'] ) != "undefined") {
  127. RegularLabsToggler.autoHeightDivs();
  128. }
  129. } else {
  130. el.setAttribute('size', el.getAttribute('rel'));
  131. link.getElement('span.hide').setStyle('display', 'none');
  132. link.getElement('span.show').setStyle('display', 'inline');
  133. }
  134. }
  135. },
  136. in_array: function(needle, haystack, casesensitive) {
  137. if ({}.toString.call(needle).slice(8, -1) != 'Array') {
  138. needle = [needle];
  139. }
  140. if ({}.toString.call(haystack).slice(8, -1) != 'Array') {
  141. haystack = [haystack];
  142. }
  143. for (var h = 0; h < haystack.length; h++) {
  144. for (var n = 0; n < needle.length; n++) {
  145. if (casesensitive) {
  146. if (haystack[h] == needle[n]) {
  147. return true;
  148. }
  149. } else {
  150. if (haystack[h].toLowerCase() == needle[n].toLowerCase()) {
  151. return true;
  152. }
  153. }
  154. }
  155. }
  156. return false;
  157. },
  158. getObjectFromXML: function(xml) {
  159. if (!xml) {
  160. return;
  161. }
  162. var obj = [];
  163. $(xml).find('extension').each(function() {
  164. var el = [];
  165. $(this).children().each(function() {
  166. el[this.nodeName.toLowerCase()] = String($(this).text()).trim();
  167. });
  168. if (typeof(el.alias) !== 'undefined') {
  169. obj[el.alias] = el;
  170. }
  171. if (typeof(el.extname) !== 'undefined' && el.extname != el.alias) {
  172. obj[el.extname] = el;
  173. }
  174. });
  175. return obj;
  176. },
  177. compareVersions: function(num1, num2) {
  178. num1 = num1.split('.');
  179. num2 = num2.split('.');
  180. var let1 = '';
  181. var let2 = '';
  182. var max = Math.max(num1.length, num2.length);
  183. for (var i = 0; i < max; i++) {
  184. if (typeof(num1[i]) == 'undefined') {
  185. num1[i] = '0';
  186. }
  187. if (typeof(num2[i]) == 'undefined') {
  188. num2[i] = '0';
  189. }
  190. let1 = num1[i].replace(/^[0-9]*(.*)/, '$1');
  191. num1[i] = parseInt(num1[i]);
  192. let2 = num2[i].replace(/^[0-9]*(.*)/, '$1');
  193. num2[i] = parseInt(num2[i]);
  194. if (num1[i] < num2[i]) {
  195. return '<';
  196. } else if (num1[i] > num2[i]) {
  197. return '>';
  198. }
  199. }
  200. // numbers are same, so compare trailing letters
  201. if (let2 && (!let1 || let1 > let2)) {
  202. return '>';
  203. } else if (let1 && (!let2 || let1 < let2 )) {
  204. return '<';
  205. } else {
  206. return '=';
  207. }
  208. },
  209. setRadio: function(id, value) {
  210. value = value ? 1 : 0;
  211. document.getElements('input#jform_' + id + value + ',input#jform_params_' + id + value + ',input#advancedparams_' + id + value).each(function(el) {
  212. el.click();
  213. });
  214. },
  215. setToggleTitleClass: function(input, value) {
  216. var el = $(input);
  217. el = el.parent().parent().parent().parent();
  218. el.removeClass('alert-success').removeClass('alert-error');
  219. if (value === 2) {
  220. el.addClass('alert-error');
  221. } else if (value) {
  222. el.addClass('alert-success');
  223. }
  224. },
  225. initCheckAlls: function(id, classname) {
  226. $('#' + id).attr('checked', RegularLabsScripts.allChecked(classname));
  227. $('input.' + classname).click(function() {
  228. $('#' + id).attr('checked', RegularLabsScripts.allChecked(classname));
  229. });
  230. },
  231. allChecked: function(classname) {
  232. return $('input.' + classname + ':checkbox:not(:checked)').length < 1;
  233. },
  234. checkAll: function(checkbox, classname) {
  235. var allchecked = RegularLabsScripts.allChecked(classname);
  236. $(checkbox).attr('checked', !allchecked);
  237. $('input.' + classname).attr('checked', !allchecked);
  238. },
  239. getEditorSelection: function(editorname) {
  240. var editor_textarea = document.getElementById(editorname);
  241. if (!editor_textarea) {
  242. return '';
  243. }
  244. var iframes = editor_textarea.parentNode.getElementsByTagName('iframe');
  245. if (!iframes.length) {
  246. return '';
  247. }
  248. var editor_frame = iframes[0];
  249. var contentWindow = editor_frame.contentWindow;
  250. if (typeof contentWindow.getSelection != "undefined") {
  251. var sel = contentWindow.getSelection();
  252. if (sel.rangeCount) {
  253. var container = contentWindow.document.createElement("div");
  254. var len = sel.rangeCount;
  255. for (var i = 0; i < len; ++i) {
  256. container.appendChild(sel.getRangeAt(i).cloneContents());
  257. }
  258. return container.innerHTML;
  259. }
  260. return '';
  261. }
  262. if (typeof contentWindow.document.selection != "undefined") {
  263. if (contentWindow.document.selection.type == "Text") {
  264. return contentWindow.document.selection.createRange().htmlText;
  265. }
  266. return '';
  267. }
  268. return '';
  269. }
  270. };
  271. $(document).ready().delay(1000, function() {
  272. $('.btn-group.rl_btn-group label').click(function() {
  273. var label = $(this);
  274. var input = $('#' + label.attr('for'));
  275. label.closest('.btn-group').find('label').removeClass('active btn-success btn-danger btn-primary');
  276. if (input.val() == '' || input.val() == -2) {
  277. label.addClass('active btn-primary');
  278. } else if (input.val() == -1) {
  279. label.addClass('active');
  280. } else if (input.val() == 0) {
  281. label.addClass('active btn-danger');
  282. } else {
  283. label.addClass('active btn-success');
  284. }
  285. input.prop('checked', true);
  286. });
  287. $('.btn-group.rl_btn-group input[checked=checked]').each(function() {
  288. $('label[for=' + $(this).attr('id') + ']').removeClass('active btn-success btn-danger btn-primary');
  289. if ($(this).val() == '' || $(this).val() == -2) {
  290. $('label[for=' + $(this).attr('id') + ']').addClass('active btn-primary');
  291. } else if ($(this).val() == -1) {
  292. $('label[for=' + $(this).attr('id') + ']').addClass('active');
  293. } else if ($(this).val() == 0) {
  294. $('label[for=' + $(this).attr('id') + ']').addClass('active btn-danger');
  295. } else {
  296. $('label[for=' + $(this).attr('id') + ']').addClass('active btn-success');
  297. }
  298. });
  299. });
  300. })(jQuery);