Changeset 25044
- Timestamp:
- 11/27/08 11:41:36 (4 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/vimperator-plugins/trunk/refcontrol.js
r24976 r25044 38 38 * 39 39 */ 40 liberator.plugins.RefControl = (function() {40 liberator.plugins.RefControl = (function() { 41 41 42 42 const Cc = Components.classes; … … 70 70 71 71 const completer_params = [['', 'send referrer:nothing'], 72 ['@FORGE', 'send referrer:top domain url'],73 ['@NORMAL', 'send referrer:normal']];72 ['@FORGE', 'send referrer:top domain URL'], 73 ['@NORMAL', 'send referrer:normal']]; 74 74 75 75 // icon manager object 76 var Class = function() { return function(){this.initialize.apply(this, arguments);}};76 var Class = function() function() {this.initialize.apply(this, arguments);}; 77 77 var RefControl = new Class(); 78 78 79 79 RefControl.prototype = { 80 initialize : function() {80 initialize : function() { 81 81 this.panel = this.createPanel(); 82 82 this.isEnable = eval(liberator.globalVariables.refcontrol_enabled) || false; 83 83 }, 84 createPanel: function() {84 createPanel: function() { 85 85 var self = this; 86 86 var panel = document.getElementById('refcontrol-status-panel'); 87 87 if (panel) { 88 varparent = panel.parentNode;88 let parent = panel.parentNode; 89 89 parent.removeChild(panel); 90 90 } … … 98 98 return panel; 99 99 }, 100 get isEnable() { return _isEnable },101 set isEnable(val) {100 get isEnable() _isEnable, 101 set isEnable(val) { 102 102 this.panel.setAttribute('src', val ? ENABLE_ICON : DISABLE_ICON); 103 103 _isEnable = val; 104 104 }, 105 } 105 }; 106 106 107 107 // some utilities 108 var init = function() {108 var init = function() { 109 109 // read settings 110 110 sites = liberator.globalVariables.refcontrol; 111 111 if (typeof sites == 'undefined') sites = new Object(); 112 112 if (typeof sites['@DEFAULT'] == 'undefined') sites['@DEFAULT'] = '@NORMAL'; 113 } 114 115 var dump = function(obj) {116 var m ="";117 for ( var key in obj){118 m+=key+ ":"+obj[key]+"\n";113 }; 114 115 var dump = function(obj) { 116 var m = ''; 117 for (let key in obj) { 118 m+=key+':'+obj[key]+'\n'; 119 119 } 120 120 return m; 121 } 121 }; 122 122 123 123 init(); … … 125 125 126 126 // add user command 127 commands.addUserCommand(['addref'], 'add referrer control setting' , function(args){128 letdomain = args.arguments[0];129 letperf = args.arguments[1] || '';127 commands.addUserCommand(['addref'], 'add referrer control setting', function(args) { 128 var domain = args.arguments[0]; 129 var perf = args.arguments[1] || ''; 130 130 if (!domain || /[:\/]/.test(domain)) { 131 131 liberator.echo(dump(sites)+'usage: addref [domain] [@NORMAL or @FORGE or empty]'); … … 133 133 } 134 134 sites[domain] = perf; 135 }, {136 completer: function(context, arg, special) {137 letlast = context.contextList.slice(-1)[0];135 }, { 136 completer: function(context, arg, special) { 137 //var last = context.contextList.slice(-1)[0]; 138 138 var args = arg.arguments; 139 letlist;139 var list; 140 140 var pos = 0; 141 141 if (args.length == 2) { 142 context.title = ['Params', 'Description'];142 context.title = ['Params', 'Description']; 143 143 list = completer_params; 144 144 //pos = 1; 145 145 } else if (args.length <= 1) { 146 context.title = ['U rl','Description'];147 list = [['@DEFAULT', 'default preference'], [window.content.location.host, '']];146 context.title = ['URL', 'Description']; 147 list = [['@DEFAULT', 'default preference'], [window.content.location.host, '']]; 148 148 } 149 149 context.completions = list; … … 153 153 ); 154 154 155 commands.addUserCommand(['togglerefcontrol'], 'toggle referrer control on/off', 155 commands.addUserCommand(['togglerefcontrol'], 'toggle referrer control on/off', 156 156 function() { 157 157 manager.isEnable = !manager.isEnable; 158 }, {}158 }, {} 159 159 ); 160 160 161 // regist refcontrol 162 var adjustRef = function (http, site) { 161 // register refcontrol 162 var adjustRef = function(http, site) { 163 var sRef, refAction; 163 164 try { 164 var sRef; 165 var refAction = sites[site]; 165 refAction = sites[site]; 166 166 if (refAction == undefined) return false; 167 if (refAction.charAt(0) == '@') {168 switch (refAction) {167 if (refAction.charAt(0) == '@') { 168 switch (refAction) { 169 169 case '@NORMAL': 170 170 return true; 171 171 case '@FORGE': 172 sRef = http.URI.scheme + "://" + http.URI.hostPort + "/";172 sRef = http.URI.scheme + '://' + http.URI.hostPort + '/'; 173 173 break; 174 174 default: … … 176 176 } 177 177 } else if (refAction.length > 0) sRef = refAction; 178 179 http.setRequestHeader( "Referer", sRef, false);178 179 http.setRequestHeader('Referer', sRef, false); 180 180 if (http.referrer) 181 181 http.referrer.spec = sRef; … … 183 183 } catch (e) {} 184 184 return false; 185 } 185 }; 186 186 187 187 Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService).addObserver({ 188 observe: function(subject, topic,data){188 observe: function(subject, topic, data) { 189 189 if (topic != 'http-on-modify-request') return; 190 190 if (!_isEnable) return; 191 191 var http = subject.QueryInterface(Ci.nsIHttpChannel); 192 for ( var s = http.URI.host; s != ""; s = s.replace(/^.*?(\.|$)/, ""))192 for (let s = http.URI.host; s != ''; s = s.replace(/^[^.]*(?:\.|$)/, '')) 193 193 if (adjustRef(http, s)) return; 194 194 adjustRef( http, '@DEFAULT'); 195 195 } 196 }, 'http-on-modify-request',false);196 }, 'http-on-modify-request', false); 197 197 198 198 return manager;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)