home *** CD-ROM | disk | FTP | other *** search
- // Copyright 1999 Macromedia, Inc. All rights reserved.
-
- // This is an array of tags we don't want to allow people to remove.
- var noStripTags = new Array("body", "head", "html", "tr", "td", "table");
-
- // getSelectionParentTag() returns the tag or empty tag that's the
- // closest ancestor of the current selection.
- function getSelectionParentTag()
- {
- var dom = dw.getDocumentDOM();
- var selArray = dom.getSelection(true);
- var obj = dom.offsetsToNode(selArray[0], selArray[1]);
- while (obj && !obj.tagName)
- obj = obj.parentNode;
-
- // Special case: If more than one table cell is selected,
- // return the parent table.
- if (selArray.length > 2 && obj.tagName.toLowerCase() == "td")
- {
- var tableObj = obj.parentNode;
- while (tableObj &&
- (tableObj.nodeType != Node.ELEMENT_NODE ||
- tableObj.tagName.toLowerCase() != "table"))
- {
- tableObj = tableObj.parentNode;
- }
- if (tableObj)
- obj = tableObj;
- }
-
- return obj;
- }
-
- function receiveArguments()
- {
- var obj = getSelectionParentTag();
- var itemID = arguments[0];
-
- if (itemID == "DW:QTE:Insert")
- dw.showQuickTagEditor("selection", "insert");
- else if (itemID == "DW:QTE:Edit")
- {
- // If we showed the user a specific tag to edit, then
- // select it first, to make sure that's the tag the
- // QTE will let us edit.
- if (obj)
- {
- dw.getDocumentDOM().setSelectedNode(obj);
- }
- dw.showQuickTagEditor("selection", "edit");
- }
- else if (itemID == "DW:QTE:Wrap")
- dw.showQuickTagEditor("selection", "wrap");
- else if (itemID == "DW:QTE:Remove")
- {
- // Get the parent tag of the current selection and remove it.
- if (obj)
- {
- var selection = dw.nodeToOffsets(obj);
- dw.setSelection(selection[0], selection[1]);
- dw.getDocumentDOM().stripTag();
- }
- }
- else if (itemID == "DW:QTE")
- dw.showQuickTagEditor();
- }
-
- function canAcceptCommand()
- {
- // If we put it in the menu, it must be reasonable in the
- // current context.
- return true;
- }
-
- function getDynamicContent()
- {
- var result = new Array;
-
- // Depending on the current selection, add entries for
- // specific Quick Tag Editor modes.
- var resultIndex = 0;
- var selection = dw.getSelection();
- if (selection[0] == selection[1])
- {
- // We have an IP. Add "Insert HTML..."
- result[resultIndex++] = MENU_strInsert + ";id='DW:QTE:Insert'";
- }
- else
- {
- // "Wrap" is available if the current selection is balanced.
- // A selection is balanced only if both ends of the selection
- // have a common parent. But "wrap" isn't useful when the
- // selection is an IP.
- var startNode = dw.offsetsToNode(selection[0], selection[0]);
- var endNode = dw.offsetsToNode(selection[1], selection[1]);
- if (startNode != endNode)
- {
- // If we're looking at a text node, we can go up one level
- // to the parent tag.
- if (startNode.nodeType == Node.TEXT_NODE)
- startNode = startNode.parentNode;
- if (endNode.nodeType == Node.TEXT_NODE)
- endNode = endNode.parentNode;
- }
- if (startNode == endNode)
- {
- // We can probably wrap a tag around the selection.
- result[resultIndex++] = MENU_strWrap + ";id='DW:QTE:Wrap'";
- }
- }
-
- // Okay, see if we're inside a tag, and if so, add "Edit".
- var obj = getSelectionParentTag();
- if (obj)
- {
- // "Edit" is available for container tags.
- result[resultIndex++] = MENU_strEdit + " <" + obj.tagName.toLowerCase() + ">...;id='DW:QTE:Edit'";
-
- // "Remove" is available on a tag surrounding the selection.
- // However, we block certain "dangerous" tags from being stripped.
- var tagName = obj.tagName.toLowerCase();
- var found = false;
- var i;
- for (i = 0; i < noStripTags.length; i++)
- {
- if (noStripTags[i] == tagName)
- {
- found = true;
- break;
- }
- }
-
- if (!found)
- result[resultIndex++] = MENU_strRemove + " <" + obj.tagName.toLowerCase() + ">;id='DW:QTE:Remove'";
- }
-
- return result;
- }
-