| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * ElementPath.js
- *
- * Copyright, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://www.tinymce.com/license
- * Contributing: http://www.tinymce.com/contributing
- */
- /**
- * This control creates an path for the current selections parent elements in TinyMCE.
- *
- * @class tinymce.ui.ElementPath
- * @extends tinymce.ui.Path
- */
- define("tinymce/ui/ElementPath", [
- "tinymce/ui/Path",
- "tinymce/EditorManager"
- ], function(Path, EditorManager) {
- return Path.extend({
- /**
- * Post render method. Called after the control has been rendered to the target.
- *
- * @method postRender
- * @return {tinymce.ui.ElementPath} Current combobox instance.
- */
- postRender: function() {
- var self = this, editor = EditorManager.activeEditor;
- function isHidden(elm) {
- if (elm.nodeType === 1) {
- if (elm.nodeName == "BR" || !!elm.getAttribute('data-mce-bogus')) {
- return true;
- }
- if (elm.getAttribute('data-mce-type') === 'bookmark') {
- return true;
- }
- }
- return false;
- }
- self.on('select', function(e) {
- var parents = [], node, body = editor.getBody();
- editor.focus();
- node = editor.selection.getStart();
- while (node && node != body) {
- if (!isHidden(node)) {
- parents.push(node);
- }
- node = node.parentNode;
- }
- editor.selection.select(parents[parents.length - 1 - e.index]);
- editor.nodeChanged();
- });
- editor.on('nodeChange', function(e) {
- var parents = [], selectionParents = e.parents, i = selectionParents.length;
- while (i--) {
- if (selectionParents[i].nodeType == 1 && !isHidden(selectionParents[i])) {
- var args = editor.fire('ResolveName', {
- name: selectionParents[i].nodeName.toLowerCase(),
- target: selectionParents[i]
- });
- parents.push({name: args.name});
- }
- }
- self.data(parents);
- });
- return self._super();
- }
- });
- });
|