User talk:Gerbrant/mng/decache.js
From Wikipedia, the free encyclopedia
- Gerbrant.mng.decache
- This module provides a way to link to an external application to remove scripts from the cache.
Contents |
[edit] Usage
When a JavaScript page is open, a "Decache" link appears in the toolbox. When clicked a popup opens, showing a list of loaded scripts. Check those you want to remove from the cache (i.e. those you have modified recently) and click the link below the list.
The following scripts are available in the list:
- The current JavaScript page (selected by default).
- Your
monobook
script. - All scripts specified at
Gerbrant.fw.load
. - All other scripts loaded using
loadModule(s)
after this script is loaded. For this reason, it's usually best to load this script before all other scripts with dependencies.
That the "Decache" link appears in the toolbar, and only when on a JavaScript page, is default behaviour. This can be customized using settings.
[edit] Installation
This script will only work in conjunction with Gerbrant.fw (documentation). If you're already using it, just add "Gerbrant.mng.decache"
to the start of the list of modules to load, otherwise paste the following in your monobook.js
:
Gerbrant = {fw: {load: [ "Gerbrant.mng.decache" ]}} document.write('<script type="text/javascript" src="http://en.wikipedia.org/w/index.php?title=User:Gerbrant/fw.js&action=raw&ctype=text/javascript&dontcountme=s"><\u002fscript>');
[edit] Exports
Note: this module by default exports nothing when not at a Javascript page.
- show()
- Shows the window.
- caption
- String, "Decache".
[edit] Settings
- onAllPages
- If defined and true, this module will load on all pages, not only on JavaScript pages.
- notInToolbox
- If defined and true, this module won't appear in the toolbox, and you'll have to activate it in a different manner.
Example:
{ onAllPages: true, notInToolbox: true }
This example can be tested by inserting it in your monobook.js
:
Gerbrant = { ... mng: { ... decache: <example> ... } ... }
[edit] Example implementation of protocol
In Visual Basic this protocol can be implemented rather trivially:
VERSION 4.00 Begin VB.Form Confirm BorderStyle = 3 'Fixed Dialog Caption = "Tijdelijke bestanden verwijderen" ClientHeight = 3240 ClientLeft = 3255 ClientTop = 5745 ClientWidth = 4800 BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "Verdana" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 3690 Left = 3195 LinkTopic = "Form1" MaxButton = 0 'False MinButton = 0 'False ScaleHeight = 3240 ScaleWidth = 4800 ShowInTaskbar = 0 'False Top = 5355 Width = 4920 Begin VB.CommandButton Cancel Caption = "Annuleren" Height = 345 Left = 2820 TabIndex = 3 Top = 2640 Width = 1125 End Begin VB.CommandButton OK Caption = "OK" Height = 345 Left = 885 TabIndex = 2 Top = 2640 Width = 1125 End Begin VB.ListBox UrlList BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 1425 Left = 240 TabIndex = 1 Top = 840 Width = 4320 End Begin VB.Label Notice AutoSize = -1 'True Caption = "De volgende tijdelijke bestanden zullen worden verwijderd:" BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 240 TabIndex = 0 Top = 360 Width = 4140 End End Attribute VB_Name = "Confirm" Attribute VB_Creatable = False Attribute VB_Exposed = False Option Explicit Private Declare Function DeleteUrlCacheEntry _ Lib "WinINet" _ Alias "DeleteUrlCacheEntryA" _ (ByVal Url As String) As Long Private Sub Cancel_Click() Unload Me End Sub Private Sub Form_Load() Dim T As String, P As Long T = Command If T = vbNullString Then CreateRegFiles Unload Me Else Left = (Screen.Width - Width) \ 2 Top = (Screen.Height - Height) \ 3 If UCase(Left(T, 17)) = "GERBRANT-DECACHE:" Then T = Mid(T, 18) End If Do P = InStr(T, "#") If P = 0 Then Exit Do UrlList.AddItem Left(T, P - 1) T = Mid(T, P + 1) Loop UrlList.AddItem T End If End Sub Private Sub OK_Click() Dim I As Long, Problem As Boolean I = UrlList.ListCount While I I = I - 1 If DeleteUrlCacheEntry(UrlList.List(I)) Then UrlList.RemoveItem I ElseIf Err.LastDllError <> 2 Then Problem = True End If Wend If Problem Then MsgBox "Bestanden die in gebruik zijn kunnen niet worden verwijderd. Deze zijn gemarkeerd en zullen worden verwijderd zodra dit mogelijk is.", vbOKOnly, "Bestanden niet verwijderd" Exit Sub End If Unload Me End Sub Private Sub CreateRegFiles() Dim T As String, S As String, P As Long S = App.Path Do P = InStr(S, "\") If P = 0 Then Exit Do T = T & Left(S, P) & "\" S = Mid(S, P + 1) Loop T = "@=""\""" & T & S & "\\Decache.exe\""" Open App.Path & "\install.reg" For Output As #1 Print #1, "REGEDIT4" Print #1, Print #1, "[HKEY_CLASSES_ROOT\gerbrant-decache]" Print #1, "@=""URL:Decache-protocol""" Print #1, """EditFlags""=hex:02,00,00,00" Print #1, """URL Protocol""=""""" Print #1, Print #1, "[HKEY_CLASSES_ROOT\gerbrant-decache\DefaultIcon]" Print #1, T; """" Print #1, Print #1, "[HKEY_CLASSES_ROOT\gerbrant-decache\shell]" Print #1, Print #1, "[HKEY_CLASSES_ROOT\gerbrant-decache\shell\open]" Print #1, Print #1, "[HKEY_CLASSES_ROOT\gerbrant-decache\shell\open\command]" Print #1, T; " %1""" Close Open App.Path & "\uninstall.reg" For Output As #1 Print #1, "REGEDIT4" Print #1, Print #1, "[-HKEY_CLASSES_ROOT\gerbrant-decache]" Close End Sub
As you can see, when you start the program without command-line arguments, it creates two regfiles which can be used to install or uninstall the protocol handler. Have fun.