1
+ − 1
/*
+ − 2
* Midget - an open source wiki-like CMS
+ − 3
* Copyright (C) 2006 Dan Fuhry
+ − 4
*
+ − 5
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ − 6
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ − 7
*
+ − 8
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ − 9
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ − 10
*
+ − 11
* Some code found in this script is not licensed under the GNU General Public License; however, it is believed that the license terms shown
+ − 12
* below are GPL-compatible. If you believe that this is not the case, please drop a note to support@midget.no-ip.org.
+ − 13
*/
+ − 14
+ − 15
/*
+ − 16
* Title: Tigra Tree
+ − 17
* Description: See the demo at url
+ − 18
* URL: http://www.softcomplex.com/products/tigra_tree_menu/
+ − 19
* Version: 1.1
+ − 20
* Date: 11-12-2002 (mm-dd-yyyy)
+ − 21
* Notes: This script is free. Visit official site for further details.
+ − 22
*
+ − 23
* There is no license fee or royalty fee to be paid at any time for using the Tigra Tree Menu v1.x
+ − 24
* You may include the source code or modified source code within your own projects for either personal or commercial use but excluding the restrictions outlined below. The following restrictions apply to all parts of the component, including all source code, samples and documentation.
+ − 25
*
+ − 26
* - Header block of script file (tree.js) CAN NOT be modified or removed.
+ − 27
* - The above items CAN NOT be sold as are, either individually or together.
+ − 28
* - The above items CAN NOT be modified and then sold as a library component, either individually or together.
+ − 29
*/
+ − 30
+ − 31
function tree (a_items, a_template) {
+ − 32
+ − 33
this.a_tpl = a_template;
+ − 34
this.a_config = a_items;
+ − 35
this.o_root = this;
+ − 36
this.a_index = [];
+ − 37
this.o_selected = null;
+ − 38
this.n_depth = -1;
+ − 39
+ − 40
var o_icone = new Image(),
+ − 41
o_iconl = new Image();
+ − 42
o_icone.src = a_template['icon_e'];
+ − 43
o_iconl.src = a_template['icon_l'];
+ − 44
a_template['im_e'] = o_icone;
+ − 45
a_template['im_l'] = o_iconl;
+ − 46
for (var i = 0; i < 64; i++)
+ − 47
if (a_template['icon_' + i]) {
+ − 48
var o_icon = new Image();
+ − 49
a_template['im_' + i] = o_icon;
+ − 50
o_icon.src = a_template['icon_' + i];
+ − 51
}
+ − 52
+ − 53
this.toggle = function (n_id) { var o_item = this.a_index[n_id]; o_item.open(o_item.b_opened) };
+ − 54
this.select = function (n_id) { return this.a_index[n_id].select(); };
+ − 55
this.mout = function (n_id) { this.a_index[n_id].upstatus(true) };
+ − 56
this.mover = function (n_id) { this.a_index[n_id].upstatus() };
+ − 57
+ − 58
this.a_children = [];
+ − 59
for (var i = 0; i < a_items.length; i++)
+ − 60
new tree_item(this, i);
+ − 61
+ − 62
this.n_id = trees.length;
+ − 63
trees[this.n_id] = this;
+ − 64
+ − 65
for (var i = 0; i < this.a_children.length; i++) {
+ − 66
document.write(this.a_children[i].init());
+ − 67
this.a_children[i].open();
+ − 68
}
+ − 69
}
+ − 70
function tree_item (o_parent, n_order) {
+ − 71
+ − 72
this.n_depth = o_parent.n_depth + 1;
+ − 73
this.a_config = o_parent.a_config[n_order + (this.n_depth ? 2 : 0)];
+ − 74
if (!this.a_config) return;
+ − 75
+ − 76
this.o_root = o_parent.o_root;
+ − 77
this.o_parent = o_parent;
+ − 78
this.n_order = n_order;
+ − 79
this.b_opened = !this.n_depth;
+ − 80
+ − 81
this.n_id = this.o_root.a_index.length;
+ − 82
this.o_root.a_index[this.n_id] = this;
+ − 83
o_parent.a_children[n_order] = this;
+ − 84
+ − 85
this.a_children = [];
+ − 86
for (var i = 0; i < this.a_config.length - 2; i++)
+ − 87
new tree_item(this, i);
+ − 88
+ − 89
this.get_icon = item_get_icon;
+ − 90
this.open = item_open;
+ − 91
this.select = item_select;
+ − 92
this.init = item_init;
+ − 93
this.upstatus = item_upstatus;
+ − 94
this.is_last = function () { return this.n_order == this.o_parent.a_children.length - 1 };
+ − 95
}
+ − 96
+ − 97
function item_open (b_close) {
+ − 98
var o_idiv = get_element('i_div' + this.o_root.n_id + '_' + this.n_id);
+ − 99
if (!o_idiv) return;
+ − 100
+ − 101
if (!o_idiv.innerHTML) {
+ − 102
var a_children = [];
+ − 103
for (var i = 0; i < this.a_children.length; i++)
+ − 104
a_children[i]= this.a_children[i].init();
+ − 105
o_idiv.innerHTML = a_children.join('');
+ − 106
}
+ − 107
o_idiv.style.display = (b_close ? 'none' : 'block');
+ − 108
+ − 109
this.b_opened = !b_close;
+ − 110
var o_jicon = document.images['j_img' + this.o_root.n_id + '_' + this.n_id],
+ − 111
o_iicon = document.images['i_img' + this.o_root.n_id + '_' + this.n_id];
+ − 112
if (o_jicon) o_jicon.src = this.get_icon(true);
+ − 113
if (o_iicon) o_iicon.src = this.get_icon();
+ − 114
this.upstatus();
+ − 115
}
+ − 116
+ − 117
function item_select (b_deselect) {
+ − 118
if (!b_deselect) {
+ − 119
var o_olditem = this.o_root.o_selected;
+ − 120
this.o_root.o_selected = this;
+ − 121
if (o_olditem) o_olditem.select(true);
+ − 122
}
+ − 123
var o_iicon = document.images['i_img' + this.o_root.n_id + '_' + this.n_id];
+ − 124
if (o_iicon) o_iicon.src = this.get_icon();
+ − 125
get_element('i_txt' + this.o_root.n_id + '_' + this.n_id).style.fontWeight = b_deselect ? 'normal' : 'bold';
+ − 126
+ − 127
this.upstatus();
+ − 128
return Boolean(this.a_config[1]);
+ − 129
}
+ − 130
+ − 131
function item_upstatus (b_clear) {
+ − 132
window.setTimeout('window.status="' + (b_clear ? '' : this.a_config[0] + (this.a_config[1] ? ' ('+ this.a_config[1] + ')' : '')) + '"', 10);
+ − 133
}
+ − 134
+ − 135
function item_init () {
+ − 136
var a_offset = [],
+ − 137
o_current_item = this.o_parent;
+ − 138
for (var i = this.n_depth; i > 1; i--) {
+ − 139
a_offset[i] = '<img src="' + this.o_root.a_tpl[o_current_item.is_last() ? 'icon_e' : 'icon_l'] + '" border="0" align="absbottom">';
+ − 140
o_current_item = o_current_item.o_parent;
+ − 141
}
+ − 142
return '<table cellpadding="0" cellspacing="0" border="0"><tr><td nowrap>' + (this.n_depth ? a_offset.join('') + (this.a_children.length
+ − 143
? '<a href="javascript: trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')"><img src="' + this.get_icon(true) + '" border="0" align="absbottom" name="j_img' + this.o_root.n_id + '_' + this.n_id + '"></a>'
+ − 144
: '<img src="' + this.get_icon(true) + '" border="0" align="absbottom">') : '')
+ − 145
// CODE MODIFICATION
+ − 146
// removed:
+ − 147
// + '<a href="' + this.a_config[1] + '" target="' + this.o_root.a_tpl['target'] + '" onclick="return trees[' + this.o_root.n_id + '].select(' + this.n_id + ')" ondblclick="trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')" class="t' + this.o_root.n_id + 'i" id="i_txt' + this.o_root.n_id + '_' + this.n_id + '"><img src="' + this.get_icon() + '" border="0" align="absbottom" name="i_img' + this.o_root.n_id + '_' + this.n_id + '" class="t' + this.o_root.n_id + 'im">' + this.a_config[0] + '</a></td></tr></table>' + (this.a_children.length ? '<div id="i_div' + this.o_root.n_id + '_' + this.n_id + '" style="display:none"></div>' : '');
+ − 148
// added:
+ − 149
+ '<a href="' + this.a_config[1] + '" target="' + this.o_root.a_tpl['target'] + '" onclick="return trees[' + this.o_root.n_id + '].select(' + this.n_id + ')" ondblclick="trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')" class="t' + this.o_root.n_id + 'i" id="i_txt' + this.o_root.n_id + '_' + this.n_id + '">' + this.a_config[0] + '</a></td></tr></table>' + (this.a_children.length ? '<div id="i_div' + this.o_root.n_id + '_' + this.n_id + '" style="display:none"></div>' : '');
+ − 150
}
+ − 151
+ − 152
function item_get_icon (b_junction) {
+ − 153
return this.o_root.a_tpl['icon_' + ((this.n_depth ? 0 : 32) + (this.a_children.length ? 16 : 0) + (this.a_children.length && this.b_opened ? 8 : 0) + (!b_junction && this.o_root.o_selected == this ? 4 : 0) + (b_junction ? 2 : 0) + (b_junction && this.is_last() ? 1 : 0))];
+ − 154
}
+ − 155
+ − 156
var trees = [];
+ − 157
get_element = document.all ?
+ − 158
function (s_id) { return document.all[s_id] } :
+ − 159
function (s_id) { return document.getElementById(s_id) };
+ − 160
+ − 161