97 lines
1.8 KiB
JavaScript
Vendored
97 lines
1.8 KiB
JavaScript
Vendored
/**
|
|
* Explore plugin.
|
|
*/
|
|
Draw.loadPlugin(function(editorUi)
|
|
{
|
|
var div = document.createElement('div');
|
|
|
|
// Adds resource for action
|
|
mxResources.parse('anonymizeCurrentPage=Anonymize Current Page');
|
|
|
|
function replaceTextContent(elt)
|
|
{
|
|
if (elt.nodeValue != null)
|
|
{
|
|
elt.nodeValue = editorUi.anonymizeString(elt.nodeValue);
|
|
}
|
|
|
|
if (elt.nodeType == mxConstants.NODETYPE_ELEMENT)
|
|
{
|
|
var tmp = elt.firstChild;
|
|
|
|
while (tmp != null)
|
|
{
|
|
replaceTextContent(tmp);
|
|
tmp = tmp.nextSibling;
|
|
}
|
|
}
|
|
};
|
|
|
|
function anonymizeHtml(html)
|
|
{
|
|
div.innerHTML = html;
|
|
|
|
replaceTextContent(div);
|
|
|
|
return div.innerHTML;
|
|
};
|
|
|
|
// Adds action
|
|
editorUi.actions.addAction('anonymizeCurrentPage', function()
|
|
{
|
|
var graph = editorUi.editor.graph;
|
|
var model = graph.model;
|
|
|
|
model.beginUpdate();
|
|
try
|
|
{
|
|
// Queue used to fix ancestor placeholders
|
|
var queue = [];
|
|
|
|
for (var id in model.cells)
|
|
{
|
|
var cell = model.cells[id];
|
|
var label = graph.getLabel(cell);
|
|
|
|
if (graph.isHtmlLabel(cell))
|
|
{
|
|
label = anonymizeHtml(label);
|
|
}
|
|
else
|
|
{
|
|
label = editorUi.anonymizeString(label);
|
|
}
|
|
|
|
queue.push({cell: cell, label: label});
|
|
}
|
|
|
|
for (var i = 0; i < queue.length; i++)
|
|
{
|
|
model.setValue(queue[i].cell, queue[i].label);
|
|
}
|
|
|
|
// Change page title
|
|
if (editorUi.currentPage != null)
|
|
{
|
|
model.execute(new RenamePage(editorUi, editorUi.currentPage,
|
|
editorUi.anonymizeString(editorUi.currentPage.getName())));
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
model.endUpdate();
|
|
}
|
|
});
|
|
|
|
var menu = editorUi.menus.get('extras');
|
|
var oldFunct = menu.funct;
|
|
|
|
menu.funct = function(menu, parent)
|
|
{
|
|
oldFunct.apply(this, arguments);
|
|
|
|
editorUi.menus.addMenuItems(menu, ['-', 'anonymizeCurrentPage'], parent);
|
|
};
|
|
|
|
});
|