JAVASCRIPT   7

meta-box.js

Guest on 23rd July 2021 01:51:09 AM

  1. /**
  2.  * All Types Meta Box Class JS
  3.  *
  4.  * JS used for the custom metaboxes and other form items.
  5.  *
  6.  * Copyright 2011 - 2021 Ohad Raz (admin@bainternet.info)
  7.  * @since 1.0
  8.  */
  9.  
  10. var $ =jQuery.noConflict();
  11.  
  12. var e_d_count = 0;
  13. var Ed_array = Array;
  14. //fix editor on window resize
  15. jQuery(document).ready(function($) {
  16.   //editor rezise fix
  17.   $(window).resize(function() {
  18.     $.each(Ed_array, function() {
  19.       var ee = this;
  20.       $(ee.getScrollerElement()).width(100); // set this low enough
  21.       width = $(ee.getScrollerElement()).parent().width();
  22.       $(ee.getScrollerElement()).width(width); // set it to
  23.       ee.refresh();
  24.     });
  25.   });
  26. });
  27. function update_repeater_fields(){
  28.     _metabox_fields.init();
  29. }
  30. //metabox fields object
  31. var _metabox_fields = {
  32.   oncefancySelect: false,
  33.   init: function(){
  34.     if (!this.oncefancySelect){
  35.       this.fancySelect();
  36.       this.oncefancySelect = true;
  37.     }
  38.     this.load_code_editor();
  39.     this.load_conditinal();
  40.     this.load_time_picker();
  41.     this.load_date_picker();
  42.     this.load_color_picker();
  43.  
  44.     // repater Field
  45.     $(".at-re-toggle").live('click', function() {
  46.       $(this).parent().find('.repeater-table').toggle('slow');
  47.     });
  48.     // repeater sortable
  49.     $('.repeater-sortable').sortable({
  50.       opacity: 0.6,
  51.       revert: true,
  52.       cursor: 'move',
  53.       handle: '.at_re_sort_handle',
  54.       placeholder: 'at_re_sort_highlight'
  55.     });
  56.     //$('.repeater-sortable').sortable( "option", "handle", ".at_re_sort_handle" );
  57.   },
  58.   fancySelect: function(){
  59.     if ($().select2){
  60.       $(".at-select, .at-posts-select, .at-tax-select").each(function (){
  61.         if(! $(this).hasClass('no-fancy'))
  62.           $(this).select2();
  63.       });
  64.     }  
  65.   },
  66.   get_query_var: function(name){
  67.     var match = RegExp('[?&]' + name + '=([^&#]*)').exec(location.href);
  68.     return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
  69.   },
  70.   load_code_editor: function(){
  71.     $(".code_text").each(function() {
  72.  
  73.       // if a code editor is already present, do nothing... #94
  74.       if($(this).next('.CodeMirror').length) return;
  75.  
  76.       var lang = $(this).attr("data-lang");
  77.       //php application/x-httpd-php
  78.       //css text/css
  79.       //html text/html
  80.       //javascript text/javascript
  81.       switch(lang){
  82.         case 'php':
  83.           lang = 'application/x-httpd-php';
  84.           break;
  85.         case 'css':
  86.           lang = 'text/css';
  87.           break;
  88.         case 'html':
  89.           lang = 'text/html';
  90.           break;
  91.         case 'javascript':
  92.           lang = 'text/javascript';
  93.           break;
  94.         default:
  95.           lang = 'application/x-httpd-php';
  96.       }
  97.       var theme  = $(this).attr("data-theme");
  98.       switch(theme){
  99.         case 'default':
  100.           theme = 'default';
  101.           break;
  102.         case 'light':
  103.           theme = 'solarizedLight';
  104.           break;
  105.         case 'dark':
  106.           theme = 'solarizedDark';;
  107.           break;
  108.         default:
  109.           theme = 'default';
  110.       }
  111.      
  112.       var editor = CodeMirror.fromTextArea(document.getElementById($(this).attr('id')), {
  113.         lineNumbers: true,
  114.         matchBrackets: true,
  115.         mode: lang,
  116.         indentUnit: 4,
  117.         indentWithTabs: true,
  118.         enterMode: "keep",
  119.         tabMode: "shift"
  120.       });
  121.       editor.setOption("theme", theme);
  122.       $(editor.getScrollerElement()).width(100); // set this low enough
  123.       width = $(editor.getScrollerElement()).parent().width();
  124.       $(editor.getScrollerElement()).width(width); // set it to
  125.       editor.refresh();
  126.       Ed_array[e_d_count] = editor;
  127.       e_d_count++;
  128.     });
  129.   },
  130.   load_conditinal: function(){
  131.     $(".conditinal_control").click(function(){
  132.       if($(this).is(':checked')){
  133.         $(this).next().show('fast');    
  134.       }else{
  135.         $(this).next().hide('fast');    
  136.       }
  137.     });
  138.   },
  139.   load_time_picker: function(){  
  140.     $('.at-time').each( function() {
  141.      
  142.       var $this   = $(this),
  143.             format   = $this.attr('rel'),
  144.             aampm    = $this.attr('data-ampm');
  145.         if ('true' == aampm)
  146.           aampm = true;
  147.         else
  148.           aampm = false;
  149.  
  150.         $this.timepicker( { showSecond: true, timeFormat: format, ampm: aampm } );
  151.      
  152.     });
  153.   },
  154.   load_date_picker: function() {
  155.     $('.at-date').each( function() {
  156.      
  157.       var $this  = $(this),
  158.           format = $this.attr('rel');
  159.  
  160.       $this.datepicker( { showButtonPanel: true, dateFormat: format } );
  161.      
  162.     });
  163.   },
  164.   load_color_picker: function(){
  165.     if ($('.at-color-iris').length>0)
  166.       $('.at-color-iris').wpColorPicker();
  167.   },
  168. };
  169. //call object init in delay
  170. window.setTimeout('_metabox_fields.init();',2000);
  171.  
  172. //upload fields handler
  173. var simplePanelmedia;
  174. jQuery(document).ready(function($){
  175.   var simplePanelupload =(function(){
  176.     var inited;
  177.     var file_id;
  178.     var file_url;
  179.     var file_type;
  180.     function init (){
  181.       return {
  182.         image_frame: new Array(),
  183.         file_frame: new Array(),
  184.         hooks:function(){
  185.           $(document).on('click','.simplePanelimageUpload,.simplePanelfileUpload', function( event ){
  186.             event.preventDefault();
  187.             if ($(this).hasClass('simplePanelfileUpload'))
  188.               inited.upload($(this),'file');
  189.             else
  190.               inited.upload($(this),'image');
  191.           });
  192.  
  193.           $('.simplePanelimageUploadclear,.simplePanelfileUploadclear').live('click', function( event ){
  194.             event.preventDefault();
  195.             inited.set_fields($(this));
  196.             $(inited.file_url).val("");
  197.             $(inited.file_id).val("");
  198.             if ($(this).hasClass('simplePanelimageUploadclear')){
  199.               inited.set_preview('image',false);
  200.               inited.replaceImageUploadClass($(this));
  201.             }else{
  202.               inited.set_preview('file',false);
  203.               inited.replaceFileUploadClass($(this));
  204.             }
  205.           });    
  206.         },
  207.         set_fields: function (el){
  208.           inited.file_url = $(el).prev();
  209.           inited.file_id = $(inited.file_url).prev();
  210.         },
  211.         upload:function(el,utype){
  212.           inited.set_fields(el)
  213.           if (utype == 'image')
  214.             inited.upload_Image($(el));
  215.           else
  216.             inited.upload_File($(el));
  217.         },
  218.         upload_File: function(el){
  219.           // If the media frame already exists, reopen it.
  220.           var mime = $(el).attr('data-mime_type') || '';
  221.           var ext = $(el).attr("data-ext") || false;
  222.           var name = $(el).attr('id');
  223.           var multi = ($(el).hasClass("multiFile")? true: false);
  224.          
  225.           if ( typeof inited.file_frame[name] !== "undefined")  {
  226.             if (ext){
  227.               inited.file_frame[name].uploader.uploader.param( 'uploadeType', ext);
  228.               inited.file_frame[name].uploader.uploader.param( 'uploadeTypecaller', 'my_meta_box' );
  229.             }
  230.             inited.file_frame[name].open();
  231.             return;
  232.           }
  233.           // Create the media frame.
  234.  
  235.           inited.file_frame[name] = wp.media({
  236.             library: {
  237.                 type: mime
  238.             },
  239.             title: jQuery( this ).data( 'uploader_title' ),
  240.             button: {
  241.             text: jQuery( this ).data( 'uploader_button_text' ),
  242.             },
  243.             multiple: multi  // Set to true to allow multiple files to be selected
  244.           });
  245.  
  246.  
  247.           // When an image is selected, run a callback.
  248.           inited.file_frame[name].on( 'select', function() {
  249.             // We set multiple to false so only get one image from the uploader
  250.             attachment = inited.file_frame[name].state().get('selection').first().toJSON();
  251.             // Do something with attachment.id and/or attachment.url here
  252.             $(inited.file_id).val(attachment.id);
  253.             $(inited.file_url).val(attachment.url);
  254.             inited.replaceFileUploadClass(el);
  255.             inited.set_preview('file',true);
  256.           });
  257.           // Finally, open the modal
  258.  
  259.           inited.file_frame[name].open();
  260.           if (ext){
  261.             inited.file_frame[name].uploader.uploader.param( 'uploadeType', ext);
  262.             inited.file_frame[name].uploader.uploader.param( 'uploadeTypecaller', 'my_meta_box' );
  263.           }
  264.         },
  265.         upload_Image:function(el){
  266.           var name = $(el).attr('id');
  267.           var multi = ($(el).hasClass("multiFile")? true: false);
  268.           // If the media frame already exists, reopen it.
  269.           if ( typeof inited.image_frame[name] !== "undefined")  {
  270.                   inited.image_frame[name].open();
  271.                   return;
  272.           }
  273.           // Create the media frame.
  274.           inited.image_frame[name] =  wp.media({
  275.             library: {
  276.               type: 'image'
  277.             },
  278.             title: jQuery( this ).data( 'uploader_title' ),
  279.             button: {
  280.             text: jQuery( this ).data( 'uploader_button_text' ),
  281.             },
  282.             multiple: multi  // Set to true to allow multiple files to be selected
  283.           });
  284.           // When an image is selected, run a callback.
  285.           inited.image_frame[name].on( 'select', function() {
  286.             // We set multiple to false so only get one image from the uploader
  287.             attachment = inited.image_frame[name].state().get('selection').first().toJSON();
  288.             // Do something with attachment.id and/or attachment.url here
  289.             $(inited.file_id).val(attachment.id);
  290.             $(inited.file_url).val(attachment.url);
  291.             inited.replaceImageUploadClass(el);
  292.             inited.set_preview('image',true);
  293.           });
  294.           // Finally, open the modal
  295.           inited.image_frame[name].open();
  296.         },
  297.         replaceImageUploadClass: function(el){
  298.           if ($(el).hasClass("simplePanelimageUpload")){
  299.             $(el).removeClass("simplePanelimageUpload").addClass('simplePanelimageUploadclear').val('Remove Image');
  300.           }else{
  301.             $(el).removeClass("simplePanelimageUploadclear").addClass('simplePanelimageUpload').val('Upload Image');
  302.           }
  303.         },
  304.         replaceFileUploadClass: function(el){
  305.           if ($(el).hasClass("simplePanelfileUpload")){
  306.             $(el).removeClass("simplePanelfileUpload").addClass('simplePanelfileUploadclear').val('Remove File');
  307.           }else{
  308.             $(el).removeClass("simplePanelfileUploadclear").addClass('simplePanelfileUpload').val('Upload File');
  309.           }
  310.         },
  311.         set_preview: function(stype,ShowFlag){
  312.           ShowFlag = ShowFlag || false;
  313.           var fileuri = $(inited.file_url).val();
  314.           if (stype == 'image'){
  315.             if (ShowFlag)
  316.               $(inited.file_id).prev().find('img').attr('src',fileuri).show();
  317.             else
  318.               $(inited.file_id).prev().find('img').attr('src','').hide();
  319.           }else{
  320.             if (ShowFlag)
  321.               $(inited.file_id).prev().find('ul').append('<li><a href="' + fileuri + '" target="_blank">'+fileuri+'</a></li>');
  322.             else
  323.               $(inited.file_id).prev().find('ul').children().remove();
  324.           }
  325.         }
  326.       }
  327.     }
  328.     return {
  329.       getInstance :function(){
  330.         if (!inited){
  331.           inited = init();
  332.         }
  333.         return inited;
  334.       }
  335.     }
  336.   })()
  337.   simplePanelmedia = simplePanelupload.getInstance();
  338.   simplePanelmedia.hooks();
  339. });

Raw Paste


Login or Register to edit or fork this paste. It's free.