| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- if (typeof MODx.tree.Element != 'undefined') {
- Ext.apply(MODx.tree.Element.prototype, {
- _onAppend: function (tree, parent, node) {
- if (node.attributes.pseudoroot) {
- setTimeout((function (tree) {
- return function () {
- var elId = node.ui.elNode.id + '_tools';
- var el = document.createElement('div');
- el.id = elId;
- el.className = 'modx-tree-node-tool-ct';
- node.ui.elNode.appendChild(el);
- var inlineButtonsLang = tree.getInlineButtonsLang(node);
- var type = node.id.substr(2).split('_');
- if (type[0] != 'category') {
- var btn1 = MODx.load({
- xtype: 'modx-button',
- text: '',
- scope: this,
- tooltip: new Ext.ToolTip({
- title: adminToolsSettings.favoriteElements.states[type[1]] ? _('admintools_show_all') : _('admintools_show_favorites'),
- target: this
- }),
- node: node,
- enableToggle: true,
- handler: function (btn, evt) {
- evt.stopPropagation(evt);
- if (btn.pressed) {
- btn.getEl().removeClass('icon-star-o').addClass('icon-star');
- btn.pressed = true;
- btn.tooltip.setTitle(_('admintools_show_all'));
- adminToolsSettings.favoriteElements.states[type[1]] = true;
- } else {
- btn.getEl().removeClass('icon-star').addClass('icon-star-o');
- btn.pressed = false;
- btn.tooltip.setTitle(_('admintools_show_favorites'));
- adminToolsSettings.favoriteElements.states[type[1]] = false;
- }
- node.getOwnerTree().saveFavoritesState(node, btn.pressed);
- },
- iconCls: adminToolsSettings.favoriteElements.states[type[1]] ? 'icon-star' : 'icon-star-o',
- pressed: adminToolsSettings.favoriteElements.states[type[1]],
- renderTo: elId,
- listeners: {
- mouseover: function (button, e) {
- button.tooltip.onTargetOver(e);
- },
- mouseout: function (button, e) {
- button.tooltip.onTargetOut(e);
- }
- }
- });
- }
- var btn2 = MODx.load({
- xtype: 'modx-button',
- text: '',
- scope: this,
- tooltip: new Ext.ToolTip({
- title: inlineButtonsLang.add,
- target: this
- }),
- node: node,
- handler: function (btn, evt) {
- evt.stopPropagation(evt);
- node.getOwnerTree().handleCreateClick(node);
- },
- iconCls: 'icon-plus-circle',
- renderTo: elId,
- listeners: {
- mouseover: function (button, e) {
- button.tooltip.onTargetOver(e);
- },
- mouseout: function (button, e) {
- button.tooltip.onTargetOut(e);
- }
- }
- });
- var btn3 = MODx.load({
- xtype: 'modx-button',
- text: '',
- scope: this,
- tooltip: new Ext.ToolTip({
- title: inlineButtonsLang.refresh,
- target: this
- }),
- node: node,
- handler: function (btn, evt) {
- evt.stopPropagation(evt);
- node.reload();
- },
- iconCls: 'icon-refresh',
- renderTo: elId,
- listeners: {
- mouseover: function (button, e) {
- button.tooltip.onTargetOver(e);
- },
- mouseout: function (button, e) {
- button.tooltip.onTargetOut(e);
- }
- }
- });
- window.BTNS.push(btn1, btn2, btn3);
- }
- }(this)), 200);
- return false;
- }
- },
- saveFavoritesState: function (node, state) {
- var type = node.attributes.type;
- Ext.Ajax.request({
- url: adminToolsSettings.config.connector_url
- , params: {
- action: 'mgr/favorites/savestate',
- type: type,
- state: state
- }
- , success: function (r) {
- var res = Ext.decode(r.responseText);
- adminToolsSettings.favoriteElements.states = res.object;
- node.reload();
- }
- , scope: this
- });
- },
- _showContextMenu: function (n, e) {
- this.cm.activeNode = n;
- this.cm.removeAll();
- if (n.attributes.menu && n.attributes.menu.items) {
- this.addContextMenuItem(n.attributes.menu.items);
- this.cm.show(n.getUI().getEl(), 't?');
- } else {
- var m = [];
- var ui = n.getUI();
- switch (n.attributes.classKey) {
- case 'root':
- m = this._getRootMenu(n);
- break;
- case 'modCategory':
- m = this._getCategoryMenu(n);
- break;
- default:
- m = this._getElementMenu(n);
- m.push('-');
- if (ui.hasClass('x-element-favorite')) {
- m.push({
- text: _('admintools_remove_from_favorites'),
- handler: this.fromFavorites
- });
- } else {
- m.push({
- text: _('admintools_add_to_favorites'),
- handler: this.toFavorites
- });
- }
- break;
- }
- this.addContextMenuItem(m);
- this.cm.showAt(e.xy);
- }
- e.stopEvent();
- },
- toFavorites: function () {
- var node = this.cm.activeNode,
- parent = node.parentNode;
- if (!parent.favChilds) parent.favChilds = 0;
- parent.favChilds++;
- Ext.Ajax.request({
- url: adminToolsSettings.config.connector_url
- , params: {
- action: 'mgr/favorites/add',
- type: node.attributes.type,
- id: node.attributes.pk
- }
- , success: function (r) {
- var res = Ext.decode(r.responseText);
- adminToolsSettings.favoriteElements.elements = res.object;
- node.ui.addClass('x-element-favorite');
- if (adminToolsSettings.favoriteElements.icon) node.ui.iconNode.className = adminToolsSettings.favoriteElements.icon;
- }
- , scope: this
- });
- },
- fromFavorites: function () {
- var node = this.cm.activeNode;
- var type = node.attributes.type,
- favoriteMode = adminToolsSettings.favoriteElements.states[type];
- if (favoriteMode) {
- node.getUI().hide();
- }
- Ext.Ajax.request({
- url: adminToolsSettings.config.connector_url
- , params: {
- action: 'mgr/favorites/remove',
- type: node.attributes.type,
- id: node.attributes.pk
- }
- , success: function (r) {
- var res = Ext.decode(r.responseText);
- adminToolsSettings.favoriteElements.elements = res.object;
- node.getUI().removeClass('x-element-favorite');
- //node.ui.iconNode.className = node.attributes.iconCls;
- if ( /\bstatic\b/.test(node.attributes.cls) ) {
- node.ui.iconNode.className = 'icon icon-file-text-o';
- } else {
- node.ui.iconNode.className = 'icon icon-file-o';
- //node.setIconCls('icon icon-file-o');
- }
- }
- , scope: this
- });
- },
- onLoad: function (ldr, node, resp) {
- Ext.each(node.childNodes, function (node) {
- if (node.attributes.selected) {
- node.ui.addClass('x-tree-selected');
- }
- if (node.attributes.favorite) {
- node.ui.addClass('x-element-favorite');
- }
- });
- var r = Ext.decode(resp.responseText);
- if (r.message) {
- var el = this.getTreeEl();
- el.addClass('modx-tree-load-msg');
- el.update(r.message);
- var w = 270;
- if (this.config.width > 150) {
- w = this.config.width;
- }
- el.setWidth(w);
- this.doLayout();
- }
- }
- });
- Ext.onReady(function () {
- var tree = Ext.getCmp('modx-tree-element');
- tree.config.url = adminToolsSettings.config.connector_url;
- tree.baseParams.action = 'mgr/element/getnodes';
- tree.config.sortAction = 'mgr/element/sort';
- tree.removeElement = function (itm, e) {
- var id = this.cm.activeNode.id.substr(2);
- var oar = id.split('_');
- MODx.msg.confirm({
- title: _('warning'),
- text: _('remove_this_confirm', {
- type: oar[0],
- name: this.cm.activeNode.attributes.name
- }),
- url: MODx.config.connector_url,
- params: {
- action: 'element/' + oar[0] + '/remove',
- id: oar[2]
- },
- listeners: {
- 'success': {
- fn: function () {
- tree.cm.activeNode.remove();
- tree.fromFavorites();
- /* if editing the element being removed */
- if (MODx.request.a == 'element/' + oar[0] + '/update' && MODx.request.id == oar[2]) {
- MODx.loadPage('welcome');
- }
- }, scope: tree
- }
- }
- });
- };
- });
- }
|