X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=blobdiff_plain;f=doc%2Fwebdeveloper%2Fmiscellaneous.js;fp=doc%2Fwebdeveloper%2Fmiscellaneous.js;h=34fb7d70374c2bb8f0990ac7c9174dbe13d592e4;hp=0000000000000000000000000000000000000000;hb=c3b0deb3d8c9f439739c79806e915c29bc1d4b84;hpb=cff6539539a79e014f6ac8df46716cafce2c8472 diff --git a/doc/webdeveloper/miscellaneous.js b/doc/webdeveloper/miscellaneous.js new file mode 100644 index 0000000..34fb7d7 --- /dev/null +++ b/doc/webdeveloper/miscellaneous.js @@ -0,0 +1,383 @@ +// Clears all private data +function webdeveloper_clearAllPrivateData() +{ + // If the browser glue is found + if(Components.classes["@mozilla.org/browser/browserglue;1"]) + { + Components.classes["@mozilla.org/browser/browserglue;1"].getService(nsCI.nsIBrowserGlue).sanitize(window || null); + } + else + { + window.openDialog("chrome://webdeveloper/content/message/message.xul", "webdeveloper-message-dialog", "centerscreen,chrome,modal", document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_firefox15Required")); + } +} + +// Clears the cache +function webdeveloper_clearCache() +{ + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + + // If the clearing is confirmed + if(webdeveloper_clearConfirmation(stringBundle.getString("webdeveloper_clearCacheConfirmation"))) + { + var cacheInterface = Components.interfaces.nsICache; + var cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService); + + try + { + cacheService.evictEntries(cacheInterface.STORE_ON_DISK); + cacheService.evictEntries(cacheInterface.STORE_IN_MEMORY); + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + webdeveloper_informationalDialog(stringBundle.getString("webdeveloper_clearCache"), stringBundle.getString("webdeveloper_clearCacheResult")); + } + } + catch(exception) + { + // Do nothing + } + } +} + +// Clears the history +function webdeveloper_clearHistory() +{ + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + + // If the clearing is confirmed + if(webdeveloper_clearConfirmation(stringBundle.getString("webdeveloper_clearHistoryConfirmation"))) + { + webdeveloper_removeAllFromHistory(); + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + webdeveloper_informationalDialog(stringBundle.getString("webdeveloper_clearHistory"), stringBundle.getString("webdeveloper_clearHistoryResult")); + } + } +} + +// Clears the HTTP authentication +function webdeveloper_clearHTTPAuthentication() +{ + var authenticationManager = Components.classes["@mozilla.org/network/http-auth-manager;1"].getService(Components.interfaces.nsIHttpAuthManager); + + authenticationManager.clearAll(); + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + + webdeveloper_informationalDialog(stringBundle.getString("webdeveloper_clearHTTPAuthentication"), stringBundle.getString("webdeveloper_clearHTTPAuthenticationResult")); + } +} + +// Allows the user to edit the HTML of the current page +function webdeveloper_editHTML() +{ + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + var editHTML = stringBundle.getString("webdeveloper_editHTML"); + + // If edit HTML is open in the dashboard + if(webdeveloper_isOpenInDashboard(editHTML)) + { + webdeveloper_closeInDashboard(editHTML); + } + else if(webdeveloper_pageHasFrames()) + { + window.openDialog("chrome://webdeveloper/content/message/message.xul", "webdeveloper-message-dialog", "centerscreen,chrome,modal", stringBundle.getString("webdeveloper_framesNotSupported")); + } + else + { + webdeveloper_openInDashboard(editHTML, "chrome://webdeveloper/content/dashboard/edit_html.xul"); + } +} + +// Linearizes all elements +function webdeveloper_linearizePage(element) +{ + webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/linearize_page.css", "webdeveloper-linearize-page"); +} + +// Makes all the frames resizable +function webdeveloper_makeFramesResizable() +{ + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var frame = null; + var framesList = null; + var framesLength = null; + var pageDocument = null; + var resizableFrames = 0; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + framesList = pageDocument.getElementsByTagName("frame"); + framesLength = framesList.length; + + // Loop through all the frames + for(var j = 0; j < framesLength; j++) + { + frame = framesList[j]; + + // If the frame has a no resize attribute + if(frame.hasAttribute("noresize")) + { + frame.removeAttribute("noresize"); + resizableFrames++; + } + } + } + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + var title = stringBundle.getString("webdeveloper_makeFramesResizable"); + + // If one frame was made resizable + if(resizableFrames == 1) + { + webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_makeFramesResizableSingleResult")); + } + else + { + webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_makeFramesResizableMultipleResult", [resizableFrames])); + } + } +} + +// Shows all hidden elements +function webdeveloper_showHiddenElements() +{ + var computedStyle = null; + var display = null; + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var element = null; + var hiddenElements = new Array("area", "base", "basefont", "head", "meta", "param", "script", "style", "title"); + var pageDocument = null; + var tagName = null; + var treeWalker = null; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + treeWalker = pageDocument.createTreeWalker(webdeveloper_getDocumentBodyElement(pageDocument), NodeFilter.SHOW_ELEMENT, null, false); + + // While the tree walker has more nodes + while((element = treeWalker.nextNode()) != null) + { + computedStyle = element.ownerDocument.defaultView.getComputedStyle(element, null); + + // If the computed style is set + if(computedStyle) + { + display = computedStyle.getPropertyCSSValue("display"); + tagName = element.tagName; + + // If this element has a display and tag name, the display is set to none and the tag name is not script + if(display && tagName && display.cssText == "none" && !webdeveloper_contains(hiddenElements, tagName.toLowerCase())) + { + element.style.display = ""; + } + } + } + } +} + +// Shows the window chrome +function webdeveloper_showWindowChrome() +{ + var browserWindow = null; + var windowEnumeration = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser"); + + // Loop through the open windows + while(windowEnumeration.hasMoreElements()) + { + browserWindow = windowEnumeration.getNext(); + + browserWindow.locationbar.visible = true; + browserWindow.menubar.visible = true; + browserWindow.personalbar.visible = true; + browserWindow.statusbar.visible = true; + browserWindow.toolbar.visible = true; + } +} + +// Renders the page for a small screen +function webdeveloper_smallScreenRendering(element) +{ + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var styleSheetList = new Array(); + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + styleSheetList = styleSheetList.concat(webdeveloper_getStyleSheetsForDocument(documentList[i], false, false)); + } + + // If there is a handheld style sheet + if(webdeveloper_hasStyleSheetForMedia(styleSheetList, "handheld")) + { + webdeveloper_displayCSSMediaType("handheld", !element.getAttribute("checked")); + webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/empty.css", "webdeveloper-small-screen-rendering"); + } + else + { + webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/small_screen_rendering.css", "webdeveloper-small-screen-rendering"); + } +} + +// Toggles all links on the page between visited and unvisited +function webdeveloper_toggleVisitedLinks(visited) +{ + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var href = null; + var link = null; + var linkLength = null; + var linkList = null; + var pageDocument = null; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + linkList = pageDocument.links; + linkLength = linkList.length; + + // Loop through all the links + for(var j = 0; j < linkLength; j++) + { + link = linkList[j]; + href = link.href; + + // If this link has an href + if(href) + { + // If marking links as visited + if(visited) + { + webdeveloper_addToHistory(href); + } + else + { + webdeveloper_removeFromHistory(href); + } + + // Force the browser to recheck the history by changing the href + link.href = ""; + link.href = href; + } + } + } +} +// Updates the clear private data menu +function webdeveloper_updateClearPrivateDataMenu(suffix) +{ + var menu = document.getElementById("webdeveloper-clear-all-private-data-" + suffix); + + // If the menu exists + if(menu) + { + // If the browser glue is not found + if(!Components.classes["@mozilla.org/browser/browserglue;1"]) + { + menu.setAttribute("class", "menuitem-iconic"); + } + else if(menu.hasAttribute("class")) + { + menu.removeAttribute("class"); + } + } +} + +// Updates the miscellaneous menu +function webdeveloper_updateMiscellaneousMenu(suffix) +{ + var menu = document.getElementById("webdeveloper-edit-html-" + suffix); + var pageHasFrames = webdeveloper_pageHasFrames(); + + // If the menu exists + if(menu) + { + var editHTMLOpen = webdeveloper_isOpenInDashboard(document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_editHTML")); + + webdeveloper_configureElement(menu, "checked", editHTMLOpen); + + // If edit HTML is not open and the page has frames + if(!editHTMLOpen && pageHasFrames) + { + menu.setAttribute("class", "menuitem-iconic"); + } + else if(menu.hasAttribute("class")) + { + menu.removeAttribute("class"); + } + } + + menu = document.getElementById("webdeveloper-display-line-guides-" + suffix); + + // If the menu exists + if(menu) + { + // If the page has frames + if(pageHasFrames) + { + menu.setAttribute("class", "menuitem-iconic"); + } + else if(menu.hasAttribute("class")) + { + menu.removeAttribute("class"); + } + } + + menu = document.getElementById("webdeveloper-display-page-magnifier-" + suffix); + + // If the menu exists + if(menu) + { + var canvas = document.getElementById("webdeveloper-page-magnifier"); + + // If the canvas is not set or has no context + if(!canvas || !canvas.getContext) + { + menu.setAttribute("class", "menuitem-iconic"); + } + else if(menu.hasAttribute("class")) + { + menu.removeAttribute("class"); + } + } + + menu = document.getElementById("webdeveloper-display-ruler-" + suffix); + + // If the menu exists + if(menu) + { + // If the page has frames + if(pageHasFrames) + { + menu.setAttribute("class", "menuitem-iconic"); + } + else if(menu.hasAttribute("class")) + { + menu.removeAttribute("class"); + } + } + + webdeveloper_configureElement(document.getElementById("webdeveloper-display-page-magnifier-" + suffix), "checked", !document.getElementById("webdeveloper-page-magnifier-toolbar").hidden); + webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-line-guides-" + suffix), "checked", "webdeveloper-display-line-guides"); + webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-ruler-" + suffix), "checked", "webdeveloper-display-ruler"); + webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-linearize-page-" + suffix), "checked", "webdeveloper-linearize-page"); + webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-show-comments-" + suffix), "checked", "webdeveloper-show-comments"); + webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-small-screen-rendering-" + suffix), "checked", "webdeveloper-small-screen-rendering"); +}