5
|
1 /*global jQuery */
|
|
2 // wrap in IIFE and pass jQuery as $
|
|
3 (function ($, undefined) {
|
|
4 "use strict";
|
|
5
|
|
6 // some private plugin stuff if needed
|
|
7 var private_var = null;
|
|
8
|
|
9 // extending the defaults
|
|
10 $.jstree.defaults.sample = {
|
|
11 sample_option : 'sample_val'
|
|
12 };
|
|
13
|
|
14 // the actual plugin code
|
|
15 $.jstree.plugins.sample = function (options, parent) {
|
|
16 // own function
|
|
17 this.sample_function = function (arg) {
|
|
18 // you can chain this method if needed and available
|
|
19 if(parent.sample_function) { parent.sample_function.call(this, arg); }
|
|
20 };
|
|
21
|
|
22 // *SPECIAL* FUNCTIONS
|
|
23 this.init = function (el, options) {
|
|
24 // do not forget parent
|
|
25 parent.init.call(this, el, options);
|
|
26 };
|
|
27 // bind events if needed
|
|
28 this.bind = function () {
|
|
29 // call parent function first
|
|
30 parent.bind.call(this);
|
|
31 // do(stuff);
|
|
32 };
|
|
33 // unbind events if needed (all in jquery namespace are taken care of by the core)
|
|
34 this.unbind = function () {
|
|
35 // do(stuff);
|
|
36 // call parent function last
|
|
37 parent.unbind.call(this);
|
|
38 };
|
|
39 this.teardown = function () {
|
|
40 // do not forget parent
|
|
41 parent.teardown.call(this);
|
|
42 };
|
|
43 // state management - get and restore
|
|
44 this.get_state = function () {
|
|
45 // always get state from parent first
|
|
46 var state = parent.get_state.call(this);
|
|
47 // add own stuff to state
|
|
48 state.sample = { 'var' : 'val' };
|
|
49 return state;
|
|
50 };
|
|
51 this.set_state = function (state, callback) {
|
|
52 // only process your part if parent returns true
|
|
53 // there will be multiple times with false
|
|
54 if(parent.set_state.call(this, state, callback)) {
|
|
55 // check the key you set above
|
|
56 if(state.sample) {
|
|
57 // do(stuff); // like calling this.sample_function(state.sample.var);
|
|
58 // remove your part of the state, call again and RETURN FALSE, the next cycle will be TRUE
|
|
59 delete state.sample;
|
|
60 this.set_state(state, callback);
|
|
61 return false;
|
|
62 }
|
|
63 // return true if your state is gone (cleared in the previous step)
|
|
64 return true;
|
|
65 }
|
|
66 // parent was false - return false too
|
|
67 return false;
|
|
68 };
|
|
69 // node transportation
|
|
70 this.get_json = function (obj, options, flat) {
|
|
71 // get the node from the parent
|
|
72 var tmp = parent.get_json.call(this, obj, options, flat), i, j;
|
|
73 if($.isArray(tmp)) {
|
|
74 for(i = 0, j = tmp.length; i < j; i++) {
|
|
75 tmp[i].sample = 'value';
|
|
76 }
|
|
77 }
|
|
78 else {
|
|
79 tmp.sample = 'value';
|
|
80 }
|
|
81 // return the original / modified node
|
|
82 return tmp;
|
|
83 };
|
|
84 };
|
|
85
|
|
86 // attach to document ready if needed
|
|
87 $(function () {
|
|
88 // do(stuff);
|
|
89 });
|
|
90
|
|
91 // you can include the sample plugin in all instances by default
|
|
92 $.jstree.defaults.plugins.push("sample");
|
|
93 })(jQuery); |