wp/wp-content/plugins/option-tree/assets/js/ot-admin.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * Option Tree UI
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * Dependencies: jQuery, jQuery UI, ColorPicker
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * @author Derek Herman (derek@valendesigns.com)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
;(function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
  OT_UI = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    processing: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    init: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
      this.init_hide_body();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
      this.init_sortable();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
      this.init_add();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
      this.init_edit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
      this.init_remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
      this.init_edit_title()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
      this.init_edit_id();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
      this.init_activate_layout();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
      this.init_upload();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
      this.init_upload_remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
      this.init_numeric_slider();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
      this.init_tabs();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
      this.init_radio_image_select();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
      this.init_select_wrapper();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
      this.fix_upload_parent();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
      this.fix_colorpicker();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
      this.fix_textarea();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
      this.replicate_ajax();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
      this.reset_settings();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    init_hide_body: function(elm,type) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
      var css = '.option-tree-setting-body';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
      if ( type == 'parent' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
        $(css).not( elm.parent().parent().children(css) ).hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
      } else if ( type == 'child' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        elm.closest('ul').find(css).not( elm.parent().parent().children(css) ).hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
      } else if ( type == 'child-add' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
        elm.children().find(css).hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
      } else if ( type == 'toggle' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        elm.parent().parent().children(css).toggle();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
      } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        $(css).hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    init_remove_active: function(elm,type) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
      var css = '.option-tree-setting-edit';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
      if ( type == 'parent' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
        $(css).not(elm).removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
      } else if ( type == 'child' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        elm.closest('ul').find(css).not(elm).removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
      } else if ( type == 'child-add' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        elm.children().find(css).removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
      } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        $(css).removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    init_sortable: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
      $('.option-tree-sortable').each( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        if ( $(this).children('li').length ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
          var elm = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
          elm.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
          elm.sortable({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
            items: 'li:not(.ui-state-disabled)',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
            handle: 'div.open',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
            placeholder: 'ui-state-highlight',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
            start: function (event, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
              ui.placeholder.height(ui.item.height()-2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
            },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
            stop: function(evt, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
              setTimeout(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
                function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
                  OT_UI.update_ids(elm);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
                },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
                200
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
              )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
          });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    init_add: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
      $('.option-tree-section-add').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
        OT_UI.add(this,'section');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
      $('.option-tree-setting-add').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
        OT_UI.add(this,'setting');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
      $('.option-tree-help-add').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
        OT_UI.add(this,'the_contextual_help');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
      $('.option-tree-choice-add').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
        OT_UI.add(this,'choice');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
      $('.option-tree-list-item-add').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
        OT_UI.add(this,'list_item');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
      $('.option-tree-list-item-setting-add').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
        if ( $(this).parents('ul').parents('ul').hasClass('ui-sortable') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
          alert(option_tree.setting_limit);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
          return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        OT_UI.add(this,'list_item_setting');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
    init_edit: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
      $('.option-tree-setting-edit').live('click', function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
        e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
        if ( $(this).parents().hasClass('option-tree-setting-body') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
          OT_UI.init_remove_active($(this),'child');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
          OT_UI.init_hide_body($(this),'child');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
          OT_UI.init_remove_active($(this),'parent');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
          OT_UI.init_hide_body($(this), 'parent');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
        $(this).toggleClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
        OT_UI.init_hide_body($(this), 'toggle');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
    init_remove: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      $('.option-tree-setting-remove').live('click', function(event) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
        event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
        if ( $(this).parents('li').hasClass('ui-state-disabled') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
          alert(option_tree.remove_no);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
          return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
        var agree = confirm(option_tree.remove_agree);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
        if (agree) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
          var list = $(this).parents('ul');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
          OT_UI.remove(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
          setTimeout( function() { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
            OT_UI.update_ids(list); 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
          }, 200 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
    init_edit_title: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
      $('.option-tree-setting-title').live('keyup', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
        OT_UI.edit_title(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
    init_edit_id: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
      $('.section-id').live('keyup', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
        OT_UI.update_id(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
    init_activate_layout: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
      $('.option-tree-layout-activate').live('click', function() { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
        var active = $(this).parents('.option-tree-setting').find('.open').text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
        $('.option-tree-layout-activate').removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
        $(this).toggleClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
        $('.active-layout-input').attr({'value':active});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
      $('#option-tree-options-layouts-form select').live('change', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
        var agree = confirm(option_tree.activate_layout_agree);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
        if (agree) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
          $('#option-tree-options-layouts-form').submit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
          var active = $('#the_current_layout').attr('value');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
          $('#option-tree-options-layouts-form select option[value="' + active + '"]').attr({'selected':'selected'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
          $('#option-tree-options-layouts-form select').prev('span').replaceWith('<span>' + active + '</span>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
    add: function(elm,type) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
      var self = this, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
          list = '', 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
          list_class = '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
          name = '', 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
          post_id = 0, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
          get_option = '', 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
          settings = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
      if ( type == 'the_contextual_help' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
        list = $(elm).parent().find('ul:last');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
        list_class = 'list-contextual-help';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
      } else if ( type == 'choice' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
        list = $(elm).parent().children('ul');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
        list_class = 'list-choice';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
      } else if ( type == 'list_item' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
        list = $(elm).parent().children('ul');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
        list_class = 'list-sub-setting';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
      } else if ( type == 'list_item_setting' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
        list = $(elm).parent().children('ul');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
        list_class = 'list-sub-setting';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
      } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
        list = $(elm).parent().find('ul:first');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
        list_class = ( type == 'section' ) ? 'list-section' : 'list-setting';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
      name = list.data('name');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
      post_id = list.data('id');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
      get_option = list.data('getOption');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
      settings = $('#'+name+'_settings_array').val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
      if ( this.processing === false ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
        this.processing = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
        var count = parseInt(list.children('li').length);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
        if ( type == 'list_item' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
          list.find('li input.option-tree-setting-title', self).each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
            var setting = $(this).attr('name'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
                regex = /\[([0-9]+)\]/,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
                matches = setting.match(regex),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
                id = null != matches ? parseInt(matches[1]) : 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
            id++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
            if ( id > count) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
              count = id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
          });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
        $.ajax({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
          url: option_tree.ajax,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
          type: 'post',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
          data: {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
            action: 'add_' + type,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
            count: count,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
            name: name,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
            post_id: post_id,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
            get_option: get_option,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
            settings: settings,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
            type: type
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
          },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
          complete: function( data ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
            if ( type == 'choice' || type == 'list_item_setting' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
              OT_UI.init_remove_active(list,'child-add');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
              OT_UI.init_hide_body(list,'child-add');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
            } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
              OT_UI.init_remove_active();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
              OT_UI.init_hide_body();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
            list.append('<li class="ui-state-default ' + list_class + '">' + data.responseText + '</li>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
            list.children().last().find('.option-tree-setting-edit').toggleClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
            list.children().last().find('.option-tree-setting-body').toggle();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
            list.children().last().find('.option-tree-setting-title').focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
            if ( type != 'the_contextual_help' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
              OT_UI.update_ids(list);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
            setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
              OT_UI.init_sortable();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
              OT_UI.init_select_wrapper();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
              OT_UI.init_numeric_slider();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
            }, 500);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
            self.processing = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
        });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
    remove: function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
      $(e).parent().parent().parent('li').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
    edit_title: function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
      if ( this.timer ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
        clearTimeout(e.timer);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
      this.timer = setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
        $(e).parent().parent().parent().parent().parent().children('.open').text(e.value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
      }, 100);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
      return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
    update_id: function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
      if ( this.timer ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
        clearTimeout(e.timer);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
      this.timer = setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
        OT_UI.update_ids($(e).parents('ul'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
      }, 100);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
      return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
    update_ids: function(list) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
      var last_section, section, list_items = list.children('li');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
      list_items.each(function(index) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
        if ( $(this).hasClass('list-section') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
          section = $(this).find('.section-id').val().trim().toLowerCase().replace(/[^a-z0-9]/gi,'_');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
          if (!section) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
            section = $(this).find('.section-title').val().trim().toLowerCase().replace(/[^a-z0-9]/gi,'_');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
          if (!section) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
            section = last_section;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
        if ($(this).hasClass('list-setting') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
          $(this).find('.hidden-section').attr({'value':section});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
        last_section = section;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
    init_upload: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
      $(document).on('click', '.ot_upload_media', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
        var field_id    = $(this).parent('.option-tree-ui-upload-parent').find('input').attr('id'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
            post_id     = $(this).attr('rel'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
            btnContent  = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
        if ( window.wp && wp.media ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
          window.ot_media_frame = window.ot_media_frame || new wp.media.view.MediaFrame.Select({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
            title: $(this).attr('title'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
            button: {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
              text: option_tree.upload_text
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
            }, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
            multiple: false
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
          });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
          window.ot_media_frame.on('select', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
            var attachment = window.ot_media_frame.state().get('selection').first(), 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
                href = attachment.attributes.url, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
                mime = attachment.attributes.mime,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
                regex = /^image\/(?:jpe?g|png|gif|x-icon)$/i;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
            if ( mime.match(regex) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
              btnContent += '<div class="option-tree-ui-image-wrap"><img src="'+href+'" alt="" /></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
            btnContent += '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button red light" title="'+option_tree.remove_media_text+'"><span class="icon trash-can">'+option_tree.remove_media_text+'</span></a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
            $('#'+field_id).val(href);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
            $('#'+field_id+'_media').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
            $('#'+field_id).parent().parent('div').append('<div class="option-tree-ui-media-wrap" id="'+field_id+'_media" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
            $('#'+field_id+'_media').append(btnContent).slideDown();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
            window.ot_media_frame.off('select');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
          }).open();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
          var backup = window.send_to_editor,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
              intval = window.setInterval( 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
                function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
                  if ( $('#TB_iframeContent').length > 0 && $('#TB_iframeContent').attr('src').indexOf( "&field_id=" ) !== -1 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
                    $('#TB_iframeContent').contents().find('#tab-type_url').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
                  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
                  $('#TB_iframeContent').contents().find('.savesend .button').val(option_tree.upload_text); 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
                }, 50);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
          tb_show('', 'media-upload.php?post_id='+post_id+'&field_id='+field_id+'&type=image&TB_iframe=1');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
          window.send_to_editor = function(html) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
            var href = $(html).find('img').attr('src');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
            if ( typeof href == 'undefined') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
              href = $(html).attr('src');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
            } 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
            if ( typeof href == 'undefined') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
              href = $(html).attr('href');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
            var image = /\.(?:jpe?g|png|gif|ico)$/i;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
            if (href.match(image) && OT_UI.url_exists(href)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
              btnContent += '<div class="option-tree-ui-image-wrap"><img src="'+href+'" alt="" /></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
            btnContent += '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button red light" title="'+option_tree.remove_media_text+'"><span class="icon trash-can">'+option_tree.remove_media_text+'</span></a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
            $('#'+field_id).val(href);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
            $('#'+field_id+'_media').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
            $('#'+field_id).parent().parent('div').append('<div class="option-tree-ui-media-wrap" id="'+field_id+'_media" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
            $('#'+field_id+'_media').append(btnContent).slideDown();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
            OT_UI.fix_upload_parent();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
            tb_remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
            window.clearInterval(intval);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
            window.send_to_editor = backup;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
          };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
    init_upload_remove: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
      $('.option-tree-ui-remove-media').live('click', function(event) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
        event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
        var agree = confirm(option_tree.remove_agree);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
        if (agree) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
          OT_UI.remove_image(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
          return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
    init_upload_fix: function(elm) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
      var id  = $(elm).attr('id'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
          val = $(elm).val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
          img = $(elm).parent().next('option-tree-ui-media-wrap').find('img'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
          src = img.attr('src'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
          btnContent = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
      if ( val != src ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
        img.attr('src', val);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
      if ( val !== '' && ( typeof src == 'undefined' || src == false ) && OT_UI.url_exists(val) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
        var image = /\.(?:jpe?g|png|gif|ico)$/i;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
        if (val.match(image)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
          btnContent += '<div class="option-tree-ui-image-wrap"><img src="'+val+'" alt="" /></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
        btnContent += '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button red light" title="'+option_tree.remove_media_text+'"><span class="icon trash-can">'+option_tree.remove_media_text+'</span></a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
        $('#'+id).val(val);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
        $('#'+id+'_media').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
        $('#'+id).parent().parent('div').append('<div class="option-tree-ui-media-wrap" id="'+id+'_media" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
        $('#'+id+'_media').append(btnContent).slideDown();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
      } else if ( val == '' || ! OT_UI.url_exists(val) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
        $(elm).parent().next('.option-tree-ui-media-wrap').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
    init_numeric_slider: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
      $(".ot-numeric-slider-wrap").each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
        var hidden = $(".ot-numeric-slider-hidden-input", this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
            value  = hidden.val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
            helper = $(".ot-numeric-slider-helper-input", this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
        if ( ! value ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
          value = hidden.data("min");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
          helper.val(value)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
        $(".ot-numeric-slider", this).slider({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
          min: hidden.data("min"),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
          max: hidden.data("max"),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
          step: hidden.data("step"),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
          value: value, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
          slide: function(event, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
            hidden.add(helper).val(ui.value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
        });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
    init_tabs: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
      $(".wrap.settings-wrap .ui-tabs").tabs({ 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
        fx: { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
          opacity: "toggle", 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
          duration: "fast"
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
      $(".wrap.settings-wrap .ui-tabs a.ui-tabs-anchor").on("click", function(event, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
        var obj = "input[name='_wp_http_referer']";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
        if ( $(obj).length > 0 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
          var url = $(obj).val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
              hash = $(this).attr('href');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
          if ( url.indexOf("#") != -1 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
            var o = url.split("#")[1],
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
                n = hash.split("#")[1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
            url = url.replace(o, n);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
          } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
            url = url + hash;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
          $(obj).val(url);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
    init_radio_image_select: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
      $('.option-tree-ui-radio-image').live('click', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
        $(this).closest('.type-radio-image').find('.option-tree-ui-radio-image').removeClass('option-tree-ui-radio-image-selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
        $(this).toggleClass('option-tree-ui-radio-image-selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
        $(this).parent().find('.option-tree-ui-radio').attr('checked', true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
    init_select_wrapper: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
      $('.option-tree-ui-select').each(function () {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
        if ( ! $(this).parent().hasClass('select-wrapper') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
          $(this).wrap('<div class="select-wrapper" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
          $(this).parent('.select-wrapper').prepend('<span>' + $(this).find('option:selected').text() + '</span>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
      $('.option-tree-ui-select').live('change', function () {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
        $(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
      $('.option-tree-ui-select').bind($.browser.msie ? 'click' : 'change', function(event) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
        $(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
    bind_colorpicker: function(field_id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
      $('#'+field_id).ColorPicker({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
        onSubmit: function(hsb, hex, rgb) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
          $('#'+field_id).val('#'+hex);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
        onBeforeShow: function () {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
          $(this).ColorPickerSetColor(this.value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
          return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
        onChange: function (hsb, hex, rgb) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
          var bc = $.inArray(hex, [ 'FFFFFF', 'FFF', 'ffffff', 'fff' ]) != -1 ? 'ccc' : hex;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
          $('#cp_'+field_id).css({'backgroundColor':'#'+hex,'borderColor':'#'+bc});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
          $('#cp_'+field_id).prev('input').attr('value', '#'+hex);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
      })  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
      .bind('keyup', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
        $(this).ColorPickerSetColor(this.value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
    fix_upload_parent: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
      $('.option-tree-ui-upload-input').live('focus blur', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
        $(this).parent('.option-tree-ui-upload-parent').toggleClass('focus');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
        OT_UI.init_upload_fix(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
    remove_image: function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
      $(e).parent().parent().find('.option-tree-ui-upload-input').attr('value','');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
      $(e).parent('.option-tree-ui-media-wrap').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
    fix_colorpicker: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
      $('.cp_input').live('blur', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
        $('.cp_input').each( function(index, el) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
          var val = $(el).val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
          var reg = /^[A-Fa-f0-9]{6}$/;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
          if( reg.test(val) && val != '' ) { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
            $(el).attr('value', '#'+val)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
          } else if ( val == '' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
            $(this).next('.cp_box').css({'background':'#f1f1f1','border-color':'#ccc'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
        });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
    fix_textarea: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
      $('.wp-editor-area').focus( function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
        $(this).parent('div').css({borderColor:'#bbb'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
      }).blur( function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
        $(this).parent('div').css({borderColor:'#ccc'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
    replicate_ajax: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
      if (location.href.indexOf("#") != -1) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
        var url = $("input[name=\'_wp_http_referer\']").val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
            hash = location.href.substr(location.href.indexOf("#"));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
        $("input[name=\'_wp_http_referer\']").val( url + hash );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
        this.scroll_to_top();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
      setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
        $(".wrap.settings-wrap .fade").fadeOut("fast");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
      }, 3000 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
    reset_settings: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
      $(".reset-settings").live("click", function(event){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
        var agree = confirm(option_tree.reset_agree);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
        if (agree) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
          return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
          return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
        event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
    url_exists: function(url) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
      var http = new XMLHttpRequest();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
      http.open('HEAD', url, false);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
      http.send();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
      return http.status!=404;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
    },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
    scroll_to_top: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
      setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
        $(this).scrollTop(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
      }, 50 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
  };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
  $(document).ready( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
    OT_UI.init();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
  });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
})(jQuery);