PageRenderTime 45ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 1ms

/WebRoot/admin/javascript/gebo_forms.js

https://gitlab.com/ergouge/tea
JavaScript | 470 lines | 390 code | 31 blank | 49 comment | 17 complexity | 8e7bbc65848b7d353233ad226ad40cfd MD5 | raw file
  1. /* [ ---- Gebo Admin Panel - extended form elements ---- ] */
  2. $(document).ready(function() {
  3. //* masked inputs
  4. gebo_mask_input.init();
  5. //* datepicker
  6. gebo_datepicker.init();
  7. //* timepicker
  8. gebo_timepicker.init();
  9. //* words, characters limit for textarea
  10. gebo_limiter.init();
  11. //* autosize for textareas
  12. gebo_auto_expand.init();
  13. //* tag handler for inputs
  14. gebo_tag_handler.init();
  15. //* input spinners
  16. gebo_spinners.init();
  17. //* nice form elements
  18. gebo_uniform.init();
  19. //* jQuery UI sliders
  20. gebo_sliders.init();
  21. //* animated jQuery UI progressbars
  22. gebo_progressbars.init();
  23. //* 2col multiselect
  24. gebo_multiselect.init();
  25. //* enhanced select
  26. gebo_chosen.init();
  27. //* WYSIWG editor
  28. gebo_wysiwg.init();
  29. //* multiupload
  30. gebo_multiupload.init();
  31. //* colorpicker
  32. gebo_colorpicker.init();
  33. $('.open_modal_form').click(function(e) {
  34. $.colorbox({
  35. href: '#modal_form',
  36. inline: true,
  37. opacity: '0.2',
  38. fixed: true,
  39. scrolling: false
  40. });
  41. e.preventDefault();
  42. })
  43. //* password strength checker
  44. gebo_pass_check.init();
  45. });
  46. //* masked input
  47. gebo_mask_input = {
  48. init: function() {
  49. $("#mask_date").inputmask("99/99/9999",{placeholder:"dd/mm/yyyy"});
  50. $("#mask_phone").inputmask("(999) 999-9999");
  51. $("#mask_ssn").inputmask("999-99-9999");
  52. $("#mask_product").inputmask("AA-999-A999");
  53. }
  54. };
  55. //* bootstrap datepicker
  56. gebo_datepicker = {
  57. init: function() {
  58. $('#dp1').datepicker();
  59. $('#dp2').datepicker();
  60. $('#dp_start').datepicker({format: "mm/dd/yyyy"}).on('changeDate', function(ev){
  61. var dateText = $(this).data('date');
  62. var endDateTextBox = $('#dp_end input');
  63. if (endDateTextBox.val() != '') {
  64. var testStartDate = new Date(dateText);
  65. var testEndDate = new Date(endDateTextBox.val());
  66. if (testStartDate > testEndDate) {
  67. endDateTextBox.val(dateText);
  68. }
  69. }
  70. else {
  71. endDateTextBox.val(dateText);
  72. };
  73. $('#dp_end').datepicker('setStartDate', dateText);
  74. $('#dp_start').datepicker('hide');
  75. });
  76. $('#dp_end').datepicker({format: "mm/dd/yyyy"}).on('changeDate', function(ev){
  77. var dateText = $(this).data('date');
  78. var startDateTextBox = $('#dp_start input');
  79. if (startDateTextBox.val() != '') {
  80. var testStartDate = new Date(startDateTextBox.val());
  81. var testEndDate = new Date(dateText);
  82. if (testStartDate > testEndDate) {
  83. startDateTextBox.val(dateText);
  84. }
  85. }
  86. else {
  87. startDateTextBox.val(dateText);
  88. };
  89. $('#dp_start').datepicker('setEndDate', dateText);
  90. $('#dp_end').datepicker('hide');
  91. });
  92. $('#dp_modal').datepicker();
  93. }
  94. };
  95. //* bootstrap timepicker
  96. gebo_timepicker = {
  97. init: function() {
  98. $('#tp_1').timepicker({
  99. defaultTime: 'current',
  100. minuteStep: 10,
  101. disableFocus: true,
  102. template: 'modal',
  103. showMeridian: false
  104. });
  105. $('#tp_2').timepicker({
  106. defaultTime: 'current',
  107. minuteStep: 1,
  108. disableFocus: true,
  109. template: 'dropdown'
  110. });
  111. $('#tp_modal').timepicker({
  112. defaultTime: 'current',
  113. minuteStep: 1,
  114. disableFocus: true,
  115. template: 'dropdown'
  116. });
  117. }
  118. };
  119. //* textarea limiter
  120. gebo_limiter = {
  121. init: function(){
  122. $("#txtarea_limit_chars").counter({
  123. goal: 120
  124. });
  125. $("#txtarea_limit_words").counter({
  126. goal: 20,
  127. type: 'word'
  128. });
  129. }
  130. };
  131. //* textarea autosize
  132. gebo_auto_expand = {
  133. init: function() {
  134. $('#auto_expand').autosize();
  135. }
  136. };
  137. //* tag handler
  138. gebo_tag_handler = {
  139. init: function() {
  140. $("#array_tag_handler").tagHandler({
  141. assignedTags: [ 'C', 'Perl', 'PHP' ],
  142. availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ],
  143. autocomplete: true
  144. });
  145. $("#max_tags_tag_handler").tagHandler({
  146. assignedTags: [ 'Perl' ],
  147. availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ],
  148. autocomplete: true,
  149. maxTags:5
  150. });
  151. }
  152. };
  153. //* spinners
  154. gebo_spinners = {
  155. init: function() {
  156. $("#sp_basic").spinner();
  157. $("#sp_dec").spinner({
  158. decimals: 2,
  159. stepping: 0.25
  160. });
  161. $("#sp_currency").spinner({
  162. currency: '$',
  163. max: 20,
  164. min: 2
  165. });
  166. $("#sp_list").spinner();
  167. $("#sp_users").spinner({
  168. format: ' <a href="%(url)">%(title)</a>',
  169. items: [
  170. {url: "mailto:laurat@example3.com", title: "Laura Taggart"},
  171. {url: "mailto:charlesb@example3.com", title: "Charles Bledsoe"},
  172. {url: "mailto:johnd@example1.com", title: "John Doe"},
  173. {url: "mailto:kmiller@example1.com", title: "Kate Miller"},
  174. {url: "mailto:jamesv@example2.com", title: "James Vandenberg"},
  175. {url: "mailto:wnedyp@example1.com", title: "Wendy Proto"},
  176. {url: "mailto:ericc@example4.com", title: "Eric Cantrell"},
  177. {url: "mailto:yveso@example2.com", title: "Yves Ouellet"}
  178. ]
  179. });
  180. }
  181. };
  182. //* uniform
  183. gebo_uniform = {
  184. init: function() {
  185. $(".uni_style").uniform();
  186. }
  187. };
  188. //* progressbars
  189. gebo_progressbars = {
  190. init: function(){
  191. var iEnd1 = new Date().setTime(new Date().getTime() + 25 * 1000); // now plus 25 secs
  192. $('#progress1').anim_progressbar({
  193. finish: iEnd1,
  194. callback: function() {
  195. $.sticky("Progressbar no 1 callback", {autoclose : false, position: "top-right", type: "st-info" });
  196. }
  197. });
  198. var iNow = new Date().setTime(new Date().getTime() + 2 * 1000); // now plus 2 secs
  199. var iEnd2 = new Date().setTime(new Date().getTime() + 10 * 1000); // now plus 10 secs
  200. $('#progress2').anim_progressbar({
  201. start: iNow,
  202. finish: iEnd2,
  203. interval: 100,
  204. callback: function() {
  205. $.sticky("Progressbar no 2 callback", {autoclose : false, position: "top-right", type: "st-success" });
  206. }
  207. });
  208. var iEnd3 = new Date().setTime(new Date().getTime() + 15 * 1000); // now plus 15 secs
  209. $('#progress3').anim_progressbar({
  210. interval: 1000,
  211. finish: iEnd3,
  212. callback: function() {
  213. $.sticky("Progressbar no 3 callback", {autoclose : false, position: "top-right", type: "st-error" });
  214. }
  215. });
  216. }
  217. };
  218. //* sliders
  219. gebo_sliders = {
  220. init: function(){
  221. //* default slider
  222. $( ".ui_slider1" ).slider({
  223. value:100,
  224. min: 0,
  225. max: 500,
  226. step: 50,
  227. slide: function( event, ui ) {
  228. $( ".ui_slider1_val" ).text( "$" + ui.value );
  229. $( "#ui_slider_default_val" ).val( "$" + ui.value );
  230. }
  231. });
  232. $( ".ui_slider1_val" ).text( "$" + $( ".ui_slider1" ).slider( "value" ) );
  233. $( "#ui_slider_default_val" ).val( "$" + $( ".ui_slider1" ).slider( "value" ) );
  234. //* range slider
  235. $( ".ui_slider2" ).slider({
  236. range: true,
  237. min: 0,
  238. max: 500,
  239. values: [ 75, 300 ],
  240. slide: function( event, ui ) {
  241. $( ".ui_slider2_val" ).text( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] );
  242. $( "#ui_slider_min_val" ).val( "$" + ui.values[ 0 ] );
  243. $( "#ui_slider_max_val" ).val( "$" + ui.values[ 1 ] );
  244. }
  245. });
  246. $( ".ui_slider2_val" ).text( "$" + $( ".ui_slider2" ).slider( "values", 0 ) + " - $" + $( ".ui_slider2" ).slider( "values", 1 ) );
  247. $( "#ui_slider_min_val" ).val( "$" + $( ".ui_slider2" ).slider( "values", 0 ) );
  248. $( "#ui_slider_max_val" ).val( "$" + $( ".ui_slider2" ).slider( "values", 1 ) );
  249. //* slider with select
  250. var select = $( "#ui_slider3_sel" );
  251. var slider = $( "<div id='ui_slider3'></div>" ).insertAfter( select ).slider({
  252. min: 1,
  253. max: 6,
  254. range: "min",
  255. value: select[ 0 ].selectedIndex + 1,
  256. slide: function( event, ui ) {
  257. select[ 0 ].selectedIndex = ui.value - 1;
  258. }
  259. });
  260. $( "#ui_slider3_sel" ).change(function() {
  261. slider.slider( "value", this.selectedIndex + 1 );
  262. });
  263. }
  264. };
  265. //* multiselect
  266. gebo_multiselect = {
  267. init: function(){
  268. if($('#public-methods').length) {
  269. //* public methods
  270. $('#public-methods').multiSelect();
  271. $('#select-all').click(function(){
  272. $('#public-methods').multiSelect('select_all');
  273. return false;
  274. });
  275. $('#deselect-all').click(function(){
  276. $('#public-methods').multiSelect('deselect_all');
  277. return false;
  278. });
  279. $('#select-fr').click(function(){
  280. $('#public-methods').multiSelect('select', 'fr');
  281. return false;
  282. });
  283. $('#deselect-fr').click(function(){
  284. $('#public-methods').multiSelect('deselect', 'fr');
  285. return false;
  286. });
  287. }
  288. if($('#optgroup').length) {
  289. //* optgroup
  290. $('#optgroup').multiSelect()
  291. }
  292. if($('#custom-headers').length) {
  293. //* custom headers
  294. $('#custom-headers').multiSelect({
  295. selectableHeader: "<div class='custom-header'>Selectable item</div>",
  296. selectedHeader: "<div class='custom-header'>Selected items</div>"
  297. });
  298. }
  299. if($('#searchable').length) {
  300. //* searchable
  301. $('#searchable').multiSelect({
  302. selectableHeader: '<div class="search-header"><input type="text" class="span12" id="ms-search" autocomplete="off" placeholder="country name"></div>',
  303. selectedHeader: "<div class='search-selected'></div>"
  304. });
  305. }
  306. if($('#ms-search').length) {
  307. $('#ms-search').quicksearch($('li', '#ms-searchable' )).on('keydown', function(e){
  308. if (e.keyCode == 40){
  309. $(this).trigger('focusout');
  310. $('#ms-searchable').focus();
  311. return false;
  312. }
  313. })
  314. }
  315. }
  316. };
  317. //* enhanced select elements
  318. gebo_chosen = {
  319. init: function(){
  320. $(".chzn_a").chosen({
  321. allow_single_deselect: true
  322. });
  323. $(".chzn_b").chosen();
  324. }
  325. };
  326. //* TinyMce
  327. gebo_wysiwg = {
  328. init: function(){
  329. // File Browser
  330. function openKCFinder(field_name, url, type, win) {
  331. alert("Field_Name: " + field_name + "nURL: " + url + "nType: " + type + "nWin: " + win); // debug/testing
  332. tinyMCE.activeEditor.windowManager.open({
  333. file: '/file-manager/browse.php?opener=tinymce&type=' + type,
  334. title: 'KCFinder',
  335. width: 700,
  336. height: 500,
  337. resizable: "yes",
  338. inline: true,
  339. close_previous: "no",
  340. popup_css: false
  341. }, {
  342. window: win,
  343. input: field_name
  344. });
  345. return false;
  346. };
  347. $('textarea#wysiwg_full').tinymce({
  348. // Location of TinyMCE script
  349. script_url : 'lib/tiny_mce/tiny_mce.js',
  350. // General options
  351. theme : "advanced",
  352. plugins : "autoresize,style,table,advhr,advimage,advlink,emotions,inlinepopups,preview,media,contextmenu,paste,fullscreen,noneditable,xhtmlxtras,template,advlist",
  353. // Theme options
  354. theme_advanced_buttons1 : "undo,redo,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,fontselect,fontsizeselect",
  355. theme_advanced_buttons2 : "forecolor,backcolor,|,cut,copy,paste,pastetext,|,bullist,numlist,link,image,media,|,code,preview,fullscreen",
  356. theme_advanced_buttons3 : "",
  357. theme_advanced_toolbar_location : "top",
  358. theme_advanced_toolbar_align : "left",
  359. theme_advanced_statusbar_location : "bottom",
  360. theme_advanced_resizing : false,
  361. font_size_style_values : "8pt,10px,12pt,14pt,18pt,24pt,36pt",
  362. init_instance_callback : function(){
  363. function resizeWidth() {
  364. document.getElementById(tinyMCE.activeEditor.id+'_tbl').style.width='100%';
  365. }
  366. resizeWidth();
  367. $(window).resize(function() {
  368. resizeWidth();
  369. })
  370. },
  371. // file browser
  372. file_browser_callback: function openKCFinder(field_name, url, type, win) {
  373. tinyMCE.activeEditor.windowManager.open({
  374. file: 'file-manager/browse.php?opener=tinymce&type=' + type + '&dir=image/themeforest_assets',
  375. title: 'KCFinder',
  376. width: 700,
  377. height: 500,
  378. resizable: "yes",
  379. inline: true,
  380. close_previous: "no",
  381. popup_css: false
  382. }, {
  383. window: win,
  384. input: field_name
  385. });
  386. return false;
  387. }
  388. });
  389. }
  390. };
  391. //* drag&drop multi-upload
  392. gebo_multiupload = {
  393. init: function() {
  394. $("#multi_upload").pluploadQueue({
  395. // General settings
  396. runtimes : 'html5,flash,silverlight',
  397. url : 'lib/plupload/examples/upload.php',
  398. max_file_size : '10mb',
  399. chunk_size : '1mb',
  400. unique_names : true,
  401. browse_button : 'pickfiles',
  402. // Specify what files to browse for
  403. filters : [
  404. {title : "Image files", extensions : "jpg,gif,png"},
  405. {title : "Zip files", extensions : "zip"}
  406. ],
  407. // Flash settings
  408. flash_swf_url : 'lib/plupload/js/plupload.flash.swf',
  409. // Silverlight settings
  410. silverlight_xap_url : 'lib/plupload/js/plupload.silverlight.xap'
  411. });
  412. }
  413. };
  414. //* colorpicker
  415. gebo_colorpicker = {
  416. init: function(){
  417. $('#cp1').colorpicker({
  418. format: 'hex'
  419. });
  420. $('#cp2').colorpicker();
  421. $('#cp3').colorpicker();
  422. $('#cp_modal').colorpicker();
  423. }
  424. };
  425. //* password strength checker
  426. gebo_pass_check = {
  427. init: function() {
  428. $("#pass_check").complexify({
  429. minimumChars: '6',
  430. strengthScaleFactor: '0.8'
  431. }, function (valid, complexity) {
  432. if (!valid) {
  433. $('#pass_progress .bar').css({'width':complexity + '%'}).parent().removeClass('progress-success').addClass('progress-danger');
  434. } else {
  435. $('#pass_progress .bar').css({'width':complexity + '%'}).parent().removeClass('progress-danger').addClass('progress-success');
  436. }
  437. });
  438. }
  439. };