Added Firefox preferences

main
ElbertF 13 years ago
parent 64dcac17e4
commit 00241871a9

@ -7,16 +7,18 @@
var w = wappalyzer;
var $, strings;
var $, prefs, strings;
w.adapter = {
/**
* Log messages to console
*/
log: function(args) {
var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
if ( prefs != null && prefs.getBoolPref('debug') ) {
var consoleService = Components.classes['@mozilla.org/consoleservice;1'].getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage(args.message);
consoleService.logStringMessage(args.message);
}
},
/**
@ -31,8 +33,6 @@
strings = document.getElementById('wappalyzer-strings');
AddonManager.getAddonByID('wappalyzer@crunchlabz.com', function(addon) {
addon.version = addon.version;
// Load jQuery
(function () {
var window;
@ -42,6 +42,22 @@
$ = jQuery.noConflict(true);
})();
// Preferences
prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('extensions.wappalyzer.');
container();
// Version check
addon.version = addon.version;
if ( !prefs.getCharPref('version') ) {
w.config.firstRun = true;
} else if ( prefs.getCharPref('version') != addon.version ) {
w.config.upgraded = true;
}
prefs.setCharPref('version', addon.version);
// Listen for messages from content script
messageManager.addMessageListener('wappalyzer', content);
@ -56,7 +72,7 @@
// Get response headers
onStateChange: function(progress, request, flags, status) {
if ( flags & Components.interfaces.nsIWebProgressListener.STATE_STOP ) {
if ( request.nsIHttpChannel != null && flags & Components.interfaces.nsIWebProgressListener.STATE_STOP ) {
var headers = new Object();
request.nsIHttpChannel.visitResponseHeaders(function(header, value) {
@ -83,38 +99,68 @@
displayApps: function() {
var url = gBrowser.currentURI.spec;
$('#wappalyzer-menu > menuitem, #wappalyzer-menu > menuseparator').remove();
$('#wappalyzer-container > image, #wappalyzer-menu > menuitem, #wappalyzer-menu > menuseparator').remove();
if ( w.detected[url] != null && w.detected[url].length ) {
$('#wappalyzer-icon').attr('src', 'chrome://wappalyzer/skin/images/icon16x16_hot.ico');
if ( !prefs.getBoolPref('showIcons') ) {
var image = $('<image/>')
.attr('src', 'chrome://wappalyzer/skin/images/icon16x16_hot.ico')
;
$('#wappalyzer-container').prepend(image);
}
w.detected[url].map(function(app, i) {
var menuSeparator = $('<menuseparator/>');
var display = false;
$('#wappalyzer-menu').append(menuSeparator);
for ( cat in w.apps[app].cats ) {
if ( prefs.getBoolPref('cat' + w.apps[app].cats[cat]) ) {
display = true;
var menuItem = $('<menuitem/>')
.attr('image', 'chrome://wappalyzer/skin/images/icons/' + app + '.ico')
.attr('label', app)
;
break;
}
}
menuItem.bind('command', function() {
w.adapter.goToURL({ url: w.config.websiteURL + 'stats/app/' + escape(app) });
});
if ( display ) {
if ( prefs.getBoolPref('showIcons') ) {
var image = $('<image/>')
.attr('src', 'chrome://wappalyzer/skin/images/icons/' + app + '.ico')
;
$('#wappalyzer-container').prepend(image);
}
$('#wappalyzer-menu').append(menuItem);
var menuSeparator = $('<menuseparator/>');
$('#wappalyzer-menu').append(menuSeparator);
for ( cat in w.apps[app].cats ) {
var menuItem = $('<menuitem/>')
.attr('disabled', 'true')
.attr('label', w.categories[cat].name)
.attr('image', 'chrome://wappalyzer/skin/images/icons/' + app + '.ico')
.attr('label', app)
;
menuItem.bind('command', function() {
w.adapter.goToURL({ url: w.config.websiteURL + 'stats/app/' + escape(app) });
});
$('#wappalyzer-menu').append(menuItem);
for ( cat in w.apps[app].cats ) {
var menuItem = $('<menuitem/>')
.attr('disabled', 'true')
.attr('label', w.categories[w.apps[app].cats[cat]].name)
;
$('#wappalyzer-menu').append(menuItem);
}
}
});
} else {
$('#wappalyzer-icon').attr('src', 'chrome://wappalyzer/skin/images/icon16x16.ico');
var image = $('<image/>')
.attr('src', 'chrome://wappalyzer/skin/images/icon16x16.ico')
;
$('#wappalyzer-container').prepend(image);
var menuSeparator = $('<menuseparator/>');
@ -133,7 +179,7 @@
* Go to URL
*/
goToURL: function(args) {
gBrowser.addTab(args.url);
gBrowser.selectedTab = gBrowser.addTab(args.url);
}
};
@ -148,5 +194,80 @@
delete msg;
}
/**
* Move container to address or addon bar
*/
function container() {
$('#wappalyzer-container')
.remove()
.prependTo(prefs.getBoolPref('addonBar') ? $('#wappalyzer-addonbar') : $('#urlbar-icons'));
// Menu items
var prefix = '#wappalyzer-menu-';
$(prefix + 'icons')
.attr('checked', prefs.getBoolPref('showIcons') ? 'true' : 'false')
.bind('command', function() {
prefs.setBoolPref('showIcons', !prefs.getBoolPref('showIcons'));
$(this).attr('checked', prefs.getBoolPref('showIcons') ? 'true' : 'false');
w.adapter.displayApps();
});
$(prefix + 'tracking' )
.attr('checked', prefs.getBoolPref('tracking') ? 'true' : 'false')
.bind('command', function() {
prefs.setBoolPref('tracking', !prefs.getBoolPref('tracking'));
$(this).attr('checked', prefs.getBoolPref('tracking') ? 'true' : 'false');
});
$(prefix + 'addonbar' )
.attr('checked', prefs.getBoolPref('addonBar') ? 'true' : 'false')
.bind('command', function() {
prefs.setBoolPref('addonBar', !prefs.getBoolPref('addonBar'));
$(this).attr('checked', prefs.getBoolPref('addonBar') ? 'true' : 'false');
container();
});
$(prefix + 'categories')
.bind('command', function() {
w.adapter.goToURL({ url: 'chrome://wappalyzer/content/xul/categories.xul' })
});
$(prefix + 'donate')
.bind('command', function() {
w.adapter.goToURL({ url: w.config.websiteURL + 'donate/' })
});
$(prefix + 'feedback')
.bind('command', function() {
w.adapter.goToURL({ url: w.config.websiteURL + '?redirect=feedback' })
});
$(prefix + 'website')
.bind('command', function() {
w.adapter.goToURL({ url: w.config.websiteURL })
});
$(prefix + 'github' )
.bind('command', function() {
w.adapter.goToURL({ url: w.config.githubURL })
});
$(prefix + 'twitter')
.bind('command', function() {
w.adapter.goToURL({ url: w.config.twitterURL})
});
$(prefix + 'gplus')
.bind('command', function() {
w.adapter.goToURL({ url: w.config.gplusURL })
});
}
w.init();
})();

@ -1,19 +0,0 @@
addEventListener('load', function() {
if ( typeof wappalyzer != undefined ) {
var preferences = document.getElementById('wappalyzer-options')
.getElementsByTagName('preferences')[0]
;
if ( preferences ) {
for ( i in wappalyzer.cats ) {
var preference = document.createElement('preference');
preference.setAttribute('id', 'wappalyzer-cat' + i);
preference.setAttribute('name', 'wappalyzer.cat' + i);
preference.setAttribute('type', 'bool');
preferences.appendChild(preference);
}
}
}
}, false);

@ -1,103 +1,45 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin/"?>
<?xml-stylesheet type="text/css" href="chrome://wappalyzer/skin/wappalyzer.css"?>
<?xml-stylesheet type="text/css" href="chrome://wappalyzer/skin/css/wappalyzer.css"?>
<!DOCTYPE overlay SYSTEM "chrome://wappalyzer/locale/wappalyzer.dtd">
<prefwindow
id="wappalyzer-options"
title="&wappalyzer.options;"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://wappalyzer/content/evaluate.js"/>
<script type="application/x-javascript" src="chrome://wappalyzer/content/apps.js"/>
<script type="application/x-javascript" src="chrome://wappalyzer/content/options.js"/>
<prefpane label="&wappalyzer.options;">
<prefwindow id="wappalyzer-options" title="&wappalyzer.name; - &wappalyzer.categories;" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<prefpane label="&wappalyzer.categories;">
<preferences>
<preference id="wappalyzer-location" name="wappalyzer.location" type="int" />
<preference id="wappalyzer-enable-tracking" name="wappalyzer.enableTracking" type="bool" />
<preference id="wappalyzer-show-apps" name="wappalyzer.showApps" type="int" />
<preference id="wappalyzer-popup" name="wappalyzer.popupOnHover" type="bool" />
<preference id="wappalyzer-custom-apps" name="wappalyzer.customApps" type="string"/>
<!-- Category preferences are injected by options.js -->
<preference id="wappalyzer-cat1" name="extensions.wappalyzer.cat1" type="bool"/>
<preference id="wappalyzer-cat2" name="extensions.wappalyzer.cat2" type="bool"/>
<preference id="wappalyzer-cat3" name="extensions.wappalyzer.cat3" type="bool"/>
<preference id="wappalyzer-cat4" name="extensions.wappalyzer.cat4" type="bool"/>
<preference id="wappalyzer-cat5" name="extensions.wappalyzer.cat5" type="bool"/>
<preference id="wappalyzer-cat6" name="extensions.wappalyzer.cat6" type="bool"/>
<preference id="wappalyzer-cat7" name="extensions.wappalyzer.cat7" type="bool"/>
<preference id="wappalyzer-cat8" name="extensions.wappalyzer.cat8" type="bool"/>
<preference id="wappalyzer-cat9" name="extensions.wappalyzer.cat9" type="bool"/>
<preference id="wappalyzer-cat10" name="extensions.wappalyzer.cat10" type="bool"/>
<preference id="wappalyzer-cat11" name="extensions.wappalyzer.cat11" type="bool"/>
<preference id="wappalyzer-cat12" name="extensions.wappalyzer.cat12" type="bool"/>
<preference id="wappalyzer-cat13" name="extensions.wappalyzer.cat13" type="bool"/>
<preference id="wappalyzer-cat14" name="extensions.wappalyzer.cat14" type="bool"/>
<preference id="wappalyzer-cat15" name="extensions.wappalyzer.cat15" type="bool"/>
<preference id="wappalyzer-cat16" name="extensions.wappalyzer.cat16" type="bool"/>
<preference id="wappalyzer-cat17" name="extensions.wappalyzer.cat17" type="bool"/>
<preference id="wappalyzer-cat18" name="extensions.wappalyzer.cat18" type="bool"/>
<preference id="wappalyzer-cat19" name="extensions.wappalyzer.cat19" type="bool"/>
<preference id="wappalyzer-cat20" name="extensions.wappalyzer.cat20" type="bool"/>
<preference id="wappalyzer-cat21" name="extensions.wappalyzer.cat21" type="bool"/>
<preference id="wappalyzer-cat22" name="extensions.wappalyzer.cat22" type="bool"/>
<preference id="wappalyzer-cat23" name="extensions.wappalyzer.cat23" type="bool"/>
<preference id="wappalyzer-cat24" name="extensions.wappalyzer.cat24" type="bool"/>
<preference id="wappalyzer-cat25" name="extensions.wappalyzer.cat25" type="bool"/>
</preferences>
<tabbox>
<tabs>
<tab label="&wappalyzer.general;" />
<tab label="&wappalyzer.categories;"/>
<tab label="&wappalyzer.custom;" />
</tabs>
<tabpanels>
<tabpanel id="tab-general">
<groupbox>
<grid>
<columns>
<column/>
<column flex="1"/>
</columns>
<rows>
<row>
<hbox align="center">
<label control="wappalyzer-location" value="&wappalyzer.location;:"/>
</hbox>
<hbox align="center">
<menulist preference="wappalyzer-location" id="wappalyzer-option-location">
<menupopup>
<menuitem label="&wappalyzer.addressBar;" value="0"/>
<menuitem label="&wappalyzer.statusBar;" value="1"/>
</menupopup>
</menulist>
</hbox>
</row>
<row>
<hbox align="center">
<label control="wappalyzer-show-apps" value="&wappalyzer.showApps;:"/>
</hbox>
<hbox align="center">
<menulist preference="wappalyzer-show-apps" id="wappalyzer-show-apps">
<menupopup>
<menuitem label="&wappalyzer.labels;" value="0"/>
<menuitem label="&wappalyzer.icons;" value="1"/>
<menuitem label="&wappalyzer.popup;" value="2"/>
</menupopup>
</menulist>
</hbox>
</row>
<row>
<hbox align="center">
<label control="wappalyzer-popup" value="&wappalyzer.popupOnHover;:"/>
</hbox>
<hbox align="center">
<menulist preference="wappalyzer-popup" id="wappalyzer-popup">
<menupopup>
<menuitem label="&wappalyzer.onHover;" value="true" />
<menuitem label="&wappalyzer.onClick;" value="false"/>
</menupopup>
</menulist>
</hbox>
</row>
</rows>
</grid>
<separator/>
<grid>
<columns>
<column flex="1"/>
</columns>
<rows>
<row>
<hbox align="center">
<checkbox preference="wappalyzer-enable-tracking" id="wappalyzer-option-enable-tracking" label="&wappalyzer.enableTracking;"/>
</hbox>
</row>
</rows>
</grid>
</groupbox>
</tabpanel>
<tabpanel id="tab-categories">
<groupbox>
<grid>
@ -191,8 +133,6 @@
<hbox align="center">
<checkbox preference="wappalyzer-cat23" id="wappalyzer-option-cat23" label="&wappalyzer.cat23;"/>
</hbox>
</row>
<row>
<hbox align="center">
<checkbox preference="wappalyzer-cat24" id="wappalyzer-option-cat24" label="&wappalyzer.cat24;"/>
</hbox>
@ -206,37 +146,6 @@
</grid>
</groupbox>
</tabpanel>
<tabpanel id="tab-custom">
<groupbox>
<grid>
<columns>
<column flex="0"/>
</columns>
<rows>
<row>
<hbox align="center">
<description>&wappalyzer.customBody;</description>
</hbox>
</row>
<row>
<hbox align="center">
<label class="text-link" onclick="window.open('http://wappalyzer.com/custom/', 'helpWindow'); void(0);" value="&wappalyzer.customMoreInfo;"/>
</hbox>
</row>
<row>
<hbox align="center">
<textbox preference="wappalyzer-custom-apps" id="wappalyzer-option-custom-apps" multiline="true" rows="10" cols="60"></textbox>
</hbox>
</row>
<row>
<hbox align="center">
<button label="&wappalyzer.evaluate;" oncommand="wappalyzer.evaluateCustomApps(document.getElementById('wappalyzer-option-custom-apps').value, true);"/>
</hbox>
</row>
</rows>
</grid>
</groupbox>
</tabpanel>
</tabpanels>
</tabbox>
</prefpane>

@ -15,20 +15,25 @@
<hbox id="urlbar-icons">
<hbox id="wappalyzer-container" popup="wappalyzer-menu">
<image id="wappalyzer-icon" src="chrome://wappalyzer/skin/images/icon16x16.ico" label="&wappalyzer.name;"/>
<menupopup id="wappalyzer-menu" position="after_end">
<menu label="&wappalyzer.name;">
<menupopup>
<menuitem label="&wappalyzer.options;" oncommand="" image="chrome://wappalyzer/skin/images/options.png"/>
<menuitem id="wappalyzer-menu-icons" label="&wappalyzer.showIcons;" />
<menuitem id="wappalyzer-menu-tracking" label="&wappalyzer.tracking;" />
<menuitem id="wappalyzer-menu-addonbar" label="&wappalyzer.addonBar;" />
<menuitem id="wappalyzer-menu-categories" label="&wappalyzer.categories;"/>
<menuseparator/>
<menuitem label="&wappalyzer.donate;" oncommand="wappalyzer.adapter.goToURL({ url: wappalyzer.config.websiteURL + 'donate/' });" image="chrome://wappalyzer/skin/images/donate.png"/>
<menuitem label="&wappalyzer.feedback;" oncommand="wappalyzer.adapter.goToURL({ url: wappalyzer.config.websiteURL + '?redirect=feedback' });" image="chrome://wappalyzer/skin/images/feedback.png"/>
<menuitem label="&wappalyzer.github;" oncommand="wappalyzer.adapter.goToURL({ url: wappalyzer.config.githubURL });" image="chrome://wappalyzer/skin/images/github.ico"/>
<menuitem label="&wappalyzer.twitter;" oncommand="wappalyzer.adapter.goToURL({ url: wappalyzer.config.twitterURL });" image="chrome://wappalyzer/skin/images/twitter.ico"/>
<menuitem label="&wappalyzer.website;" oncommand="wappalyzer.adapter.goToURL({ url: wappalyzer.config.websiteURL });" image="chrome://wappalyzer/skin/images/icon16x16_hot.ico"/>
<menuitem id="wappalyzer-menu-donate" label="&wappalyzer.donate;" />
<menuitem id="wappalyzer-menu-feedback" label="&wappalyzer.feedback;"/>
<menuitem id="wappalyzer-menu-website" label="&wappalyzer.website;" />
<menuseparator/>
<menuitem id="wappalyzer-menu-github" label="&wappalyzer.github;" image="chrome://wappalyzer/skin/images/github.ico" />
<menuitem id="wappalyzer-menu-twitter" label="&wappalyzer.twitter;" image="chrome://wappalyzer/skin/images/twitter.ico"/>
<menuitem id="wappalyzer-menu-gplus" label="&wappalyzer.gplus;" image="chrome://wappalyzer/skin/images/gplus.ico" />
</menupopup>
</menu>
@ -36,4 +41,11 @@
</menupopup>
</hbox>
</hbox>
<statusbar id="status-bar">
<statusbarpanel
id="wappalyzer-addonbar"
popup="wappalyzer-menu"
/>
</statusbar>
</overlay>

@ -1,35 +1,31 @@
pref('extensions.wappalyzer.autoDetect', true);
pref('extensions.wappalyzer.debug', false);
pref('extensions.wappalyzer.location', 0);
pref('extensions.wappalyzer.enableTracking', true);
pref('extensions.wappalyzer.newInstall', true);
pref('extensions.wappalyzer.showApps', 1);
pref('extensions.wappalyzer.customApps', '');
pref('extensions.wappalyzer.version', '');
pref('extensions.wappalyzer.popupOnHover', true);
pref('extensions.wappalyzer.debug', false);
pref('extensions.wappalyzer.showIcons', true);
pref('extensions.wappalyzer.tracking', true);
pref('extensions.wappalyzer.addonBar', false);
pref('extensions.wappalyzer.version', '');
pref('extensions.wappalyzer.cat1', true);
pref('extensions.wappalyzer.cat2', true);
pref('extensions.wappalyzer.cat3', true);
pref('extensions.wappalyzer.cat4', true);
pref('extensions.wappalyzer.cat5', true);
pref('extensions.wappalyzer.cat6', true);
pref('extensions.wappalyzer.cat7', true);
pref('extensions.wappalyzer.cat8', true);
pref('extensions.wappalyzer.cat9', true);
pref('extensions.wappalyzer.cat10', true);
pref('extensions.wappalyzer.cat11', true);
pref('extensions.wappalyzer.cat12', true);
pref('extensions.wappalyzer.cat13', true);
pref('extensions.wappalyzer.cat14', true);
pref('extensions.wappalyzer.cat15', true);
pref('extensions.wappalyzer.cat16', true);
pref('extensions.wappalyzer.cat17', true);
pref('extensions.wappalyzer.cat18', true);
pref('extensions.wappalyzer.cat19', true);
pref('extensions.wappalyzer.cat20', true);
pref('extensions.wappalyzer.cat21', true);
pref('extensions.wappalyzer.cat22', true);
pref('extensions.wappalyzer.cat23', true);
pref('extensions.wappalyzer.cat24', true);
pref('extensions.wappalyzer.cat25', true);
pref('extensions.wappalyzer.cat1', true);
pref('extensions.wappalyzer.cat2', true);
pref('extensions.wappalyzer.cat3', true);
pref('extensions.wappalyzer.cat4', true);
pref('extensions.wappalyzer.cat5', true);
pref('extensions.wappalyzer.cat6', true);
pref('extensions.wappalyzer.cat7', true);
pref('extensions.wappalyzer.cat8', true);
pref('extensions.wappalyzer.cat9', true);
pref('extensions.wappalyzer.cat10', true);
pref('extensions.wappalyzer.cat11', true);
pref('extensions.wappalyzer.cat12', true);
pref('extensions.wappalyzer.cat13', true);
pref('extensions.wappalyzer.cat14', true);
pref('extensions.wappalyzer.cat15', true);
pref('extensions.wappalyzer.cat16', true);
pref('extensions.wappalyzer.cat17', true);
pref('extensions.wappalyzer.cat18', true);
pref('extensions.wappalyzer.cat19', true);
pref('extensions.wappalyzer.cat20', true);
pref('extensions.wappalyzer.cat21', true);
pref('extensions.wappalyzer.cat22', true);
pref('extensions.wappalyzer.cat23', true);
pref('extensions.wappalyzer.cat24', true);
pref('extensions.wappalyzer.cat25', true);

@ -16,7 +16,9 @@
</Description>
</em:targetApplication>
<!--
<em:optionsURL>chrome://wappalyzer/content/options.xul</em:optionsURL>
-->
<em:name>Wappalyzer</em:name>
<em:description>Wappalyzer is an add-on for Firefox that uncovers the technologies used on websites.</em:description>

@ -1,34 +1,39 @@
<!ENTITY wappalyzer.name "Wappalyzer">
<!ENTITY wappalyzer.name "Wappalyzer">
<!ENTITY wappalyzer.options "Options">
<!ENTITY wappalyzer.donate "Donate!">
<!ENTITY wappalyzer.feedback "Feedback">
<!ENTITY wappalyzer.github "Fork on Github">
<!ENTITY wappalyzer.twitter "Twitter">
<!ENTITY wappalyzer.website "Visit Wappalyzer">
<!ENTITY wappalyzer.showIcons "Show application icons">
<!ENTITY wappalyzer.tracking "Allow anonymous tracking">
<!ENTITY wappalyzer.addonBar "Place in addon-bar">
<!ENTITY wappalyzer.categories "Manage categories">
<!ENTITY wappalyzer.cat1 "CMS">
<!ENTITY wappalyzer.cat2 "Message boards">
<!ENTITY wappalyzer.cat3 "Database managers">
<!ENTITY wappalyzer.cat4 "Documentation tools">
<!ENTITY wappalyzer.cat5 "Widgets">
<!ENTITY wappalyzer.cat6 "Web shops">
<!ENTITY wappalyzer.cat7 "Photo galleries">
<!ENTITY wappalyzer.cat8 "Wikis">
<!ENTITY wappalyzer.cat9 "Hosting panels">
<!ENTITY wappalyzer.cat10 "Analytics">
<!ENTITY wappalyzer.cat11 "Blogs">
<!ENTITY wappalyzer.cat12 "JavaScript frameworks">
<!ENTITY wappalyzer.cat13 "Issue trackers">
<!ENTITY wappalyzer.cat14 "Video players">
<!ENTITY wappalyzer.cat15 "Comment systems">
<!ENTITY wappalyzer.cat16 "CAPTCHAs">
<!ENTITY wappalyzer.cat17 "Font scripts">
<!ENTITY wappalyzer.cat18 "Web frameworks">
<!ENTITY wappalyzer.cat19 "Miscellaneous">
<!ENTITY wappalyzer.cat20 "Editors">
<!ENTITY wappalyzer.cat21 "LMS">
<!ENTITY wappalyzer.cat22 "Web servers">
<!ENTITY wappalyzer.cat23 "Cache tools">
<!ENTITY wappalyzer.cat24 "Rich text editors">
<!ENTITY wappalyzer.cat25 "Javascript Graphics">
<!ENTITY wappalyzer.donate "Donate!">
<!ENTITY wappalyzer.feedback "Feedback">
<!ENTITY wappalyzer.github "Fork on Github">
<!ENTITY wappalyzer.twitter "Twitter">
<!ENTITY wappalyzer.gplus "Google Plus">
<!ENTITY wappalyzer.website "Visit wappalyzer.com">
<!ENTITY wappalyzer.cat1 "CMS">
<!ENTITY wappalyzer.cat2 "Message boards">
<!ENTITY wappalyzer.cat3 "Database managers">
<!ENTITY wappalyzer.cat4 "Documentation tools">
<!ENTITY wappalyzer.cat5 "Widgets">
<!ENTITY wappalyzer.cat6 "Web shops">
<!ENTITY wappalyzer.cat7 "Photo galleries">
<!ENTITY wappalyzer.cat8 "Wikis">
<!ENTITY wappalyzer.cat9 "Hosting panels">
<!ENTITY wappalyzer.cat10 "Analytics">
<!ENTITY wappalyzer.cat11 "Blogs">
<!ENTITY wappalyzer.cat12 "JavaScript frameworks">
<!ENTITY wappalyzer.cat13 "Issue trackers">
<!ENTITY wappalyzer.cat14 "Video players">
<!ENTITY wappalyzer.cat15 "Comment systems">
<!ENTITY wappalyzer.cat16 "CAPTCHAs">
<!ENTITY wappalyzer.cat17 "Font scripts">
<!ENTITY wappalyzer.cat18 "Web frameworks">
<!ENTITY wappalyzer.cat19 "Miscellaneous">
<!ENTITY wappalyzer.cat20 "Editors">
<!ENTITY wappalyzer.cat21 "LMS">
<!ENTITY wappalyzer.cat22 "Web servers">
<!ENTITY wappalyzer.cat23 "Cache tools">
<!ENTITY wappalyzer.cat24 "Rich text editors">
<!ENTITY wappalyzer.cat25 "Javascript Graphics">

@ -0,0 +1,9 @@
#wappalyzer-container {
margin: 0 3px;
}
#wappalyzer-container > image {
height: 16px;
margin-left: 3px;
width: 16px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -38,6 +38,7 @@ var wappalyzer = wappalyzer || (function() {
websiteURL: 'http://wappalyzer.com/',
twitterURL: 'https://twitter.com/Wappalyzer',
githubURL: 'https://github.com/ElbertF/Wappalyzer',
gplusURL: 'https://plus.google.com/107008529118023432137/posts',
firstRun: false,
upgraded: false