summaryrefslogtreecommitdiffstats
path: root/konqueror/sidebar/web_module
diff options
context:
space:
mode:
Diffstat (limited to 'konqueror/sidebar/web_module')
-rw-r--r--konqueror/sidebar/web_module/Makefile.am19
-rw-r--r--konqueror/sidebar/web_module/TODO6
-rw-r--r--konqueror/sidebar/web_module/web_module.cpp220
-rw-r--r--konqueror/sidebar/web_module/web_module.h202
-rw-r--r--konqueror/sidebar/web_module/webmodule_add.desktop79
-rw-r--r--konqueror/sidebar/web_module/websidebar.desktop78
-rw-r--r--konqueror/sidebar/web_module/websidebar.html11
7 files changed, 615 insertions, 0 deletions
diff --git a/konqueror/sidebar/web_module/Makefile.am b/konqueror/sidebar/web_module/Makefile.am
new file mode 100644
index 000000000..64675d351
--- /dev/null
+++ b/konqueror/sidebar/web_module/Makefile.am
@@ -0,0 +1,19 @@
+INCLUDES = -I$(srcdir)/../ -I$(srcdir)/../../../libkonq $(all_includes)
+
+kde_module_LTLIBRARIES = konqsidebar_web.la
+
+METASOURCES = AUTO
+
+konqsidebar_web_la_SOURCES = web_module.cpp
+konqsidebar_web_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+konqsidebar_web_la_LIBADD = $(LIB_KPARTS) $(LIB_KHTML) ../libkonqsidebarplugin.la ../../../libkonq/libkonq.la
+
+#plugindir=$(kde_datadir)/konqsidebartng/entries
+#plugin_DATA=websidebar.desktop
+
+pluginadddir=$(kde_datadir)/konqsidebartng/add
+pluginadd_DATA=webmodule_add.desktop
+
+htmldir=$(kde_datadir)/konqsidebartng/websidebar
+html_DATA=websidebar.html
+
diff --git a/konqueror/sidebar/web_module/TODO b/konqueror/sidebar/web_module/TODO
new file mode 100644
index 000000000..abf3260f9
--- /dev/null
+++ b/konqueror/sidebar/web_module/TODO
@@ -0,0 +1,6 @@
+- Apparently _content works everywhere in Mozilla. Maybe this should go into
+KHTMLPart afterall. That would solve the form post problem too.
+- Forms don't work. I don't know if they will for a long time since we can't
+ really filter them with KHTML.
+- Allow setting the useragent (only do this in a clean fashion!!)
+- Double check the KHTML extensions for security implications.
diff --git a/konqueror/sidebar/web_module/web_module.cpp b/konqueror/sidebar/web_module/web_module.cpp
new file mode 100644
index 000000000..ab77c40a0
--- /dev/null
+++ b/konqueror/sidebar/web_module/web_module.cpp
@@ -0,0 +1,220 @@
+/* This file is part of the KDE project
+ Copyright (C) 2003, George Staikos <staikos@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "web_module.h"
+#include <qfileinfo.h>
+#include <qhbox.h>
+#include <qspinbox.h>
+#include <qtimer.h>
+
+#include <dom/html_inline.h>
+#include <kdebug.h>
+#include <kdialog.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <konq_pixmapprovider.h>
+#include <kparts/browserextension.h>
+#include <kstandarddirs.h>
+
+
+KonqSideBarWebModule::KonqSideBarWebModule(KInstance *instance, QObject *parent, QWidget *widgetParent, QString &desktopName, const char* name)
+ : KonqSidebarPlugin(instance, parent, widgetParent, desktopName, name)
+{
+ _htmlPart = new KHTMLSideBar(universalMode());
+ connect(_htmlPart, SIGNAL(reload()), this, SLOT(reload()));
+ connect(_htmlPart, SIGNAL(completed()), this, SLOT(pageLoaded()));
+ connect(_htmlPart,
+ SIGNAL(setWindowCaption(const QString&)),
+ this,
+ SLOT(setTitle(const QString&)));
+ connect(_htmlPart,
+ SIGNAL(openURLRequest(const QString&, KParts::URLArgs)),
+ this,
+ SLOT(urlClicked(const QString&, KParts::URLArgs)));
+ connect(_htmlPart->browserExtension(),
+ SIGNAL(openURLRequest(const KURL&, const KParts::URLArgs&)),
+ this,
+ SLOT(formClicked(const KURL&, const KParts::URLArgs&)));
+ connect(_htmlPart,
+ SIGNAL(setAutoReload()), this, SLOT( setAutoReload() ));
+ connect(_htmlPart,
+ SIGNAL(openURLNewWindow(const QString&, KParts::URLArgs)),
+ this,
+ SLOT(urlNewWindow(const QString&, KParts::URLArgs)));
+ connect(_htmlPart,
+ SIGNAL(submitFormRequest(const char*,const QString&,const QByteArray&,const QString&,const QString&,const QString&)),
+ this,
+ SIGNAL(submitFormRequest(const char*,const QString&,const QByteArray&,const QString&,const QString&,const QString&)));
+
+ _desktopName = desktopName;
+
+ KSimpleConfig ksc(_desktopName);
+ ksc.setGroup("Desktop Entry");
+ reloadTimeout = ksc.readNumEntry("Reload", 0);
+ _url = ksc.readPathEntry("URL");
+ _htmlPart->openURL(_url );
+ // Must load this delayed
+ QTimer::singleShot(0, this, SLOT(loadFavicon()));
+}
+
+
+KonqSideBarWebModule::~KonqSideBarWebModule() {
+ delete _htmlPart;
+ _htmlPart = 0L;
+}
+
+
+QWidget *KonqSideBarWebModule::getWidget() {
+ return _htmlPart->widget();
+}
+
+void KonqSideBarWebModule::setAutoReload(){
+ KDialogBase dlg(0, "", true, i18n("Set Refresh Timeout (0 disables)"),
+ KDialogBase::Ok|KDialogBase::Cancel);
+ QHBox *hbox = dlg.makeHBoxMainWidget();
+
+ QSpinBox *mins = new QSpinBox( 0, 120, 1, hbox );
+ mins->setSuffix( i18n(" min") );
+ QSpinBox *secs = new QSpinBox( 0, 59, 1, hbox );
+ secs->setSuffix( i18n(" sec") );
+
+ if( reloadTimeout > 0 ) {
+ int seconds = reloadTimeout / 1000;
+ secs->setValue( seconds % 60 );
+ mins->setValue( ( seconds - secs->value() ) / 60 );
+ }
+
+ if( dlg.exec() == QDialog::Accepted ) {
+ int msec = ( mins->value() * 60 + secs->value() ) * 1000;
+ reloadTimeout = msec;
+ KSimpleConfig ksc(_desktopName);
+ ksc.setGroup("Desktop Entry");
+ ksc.writeEntry("Reload", reloadTimeout);
+ reload();
+ }
+}
+
+void *KonqSideBarWebModule::provides(const QString &) {
+ return 0L;
+}
+
+
+void KonqSideBarWebModule::handleURL(const KURL &) {
+}
+
+
+void KonqSideBarWebModule::urlNewWindow(const QString& url, KParts::URLArgs args)
+{
+ emit createNewWindow(KURL(url), args);
+}
+
+
+void KonqSideBarWebModule::urlClicked(const QString& url, KParts::URLArgs args)
+{
+ emit openURLRequest(KURL(url), args);
+}
+
+
+void KonqSideBarWebModule::formClicked(const KURL& url, const KParts::URLArgs& args)
+{
+ _htmlPart->browserExtension()->setURLArgs(args);
+ _htmlPart->openURL(url);
+}
+
+
+void KonqSideBarWebModule::loadFavicon() {
+ QString icon = KonqPixmapProvider::iconForURL(_url.url());
+ if (icon.isEmpty()) {
+ KonqFavIconMgr::downloadHostIcon(_url);
+ icon = KonqPixmapProvider::iconForURL(_url.url());
+ }
+
+ if (!icon.isEmpty()) {
+ emit setIcon(icon);
+
+ KSimpleConfig ksc(_desktopName);
+ ksc.setGroup("Desktop Entry");
+ if (icon != ksc.readPathEntry("Icon")) {
+ ksc.writePathEntry("Icon", icon);
+ }
+ }
+}
+
+
+void KonqSideBarWebModule::reload() {
+ _htmlPart->openURL(_url);
+}
+
+
+void KonqSideBarWebModule::setTitle(const QString& title) {
+ if (!title.isEmpty()) {
+ emit setCaption(title);
+
+ KSimpleConfig ksc(_desktopName);
+ ksc.setGroup("Desktop Entry");
+ if (title != ksc.readPathEntry("Name")) {
+ ksc.writePathEntry("Name", title);
+ }
+ }
+}
+
+
+void KonqSideBarWebModule::pageLoaded() {
+ if( reloadTimeout > 0 ) {
+ QTimer::singleShot( reloadTimeout, this, SLOT( reload() ) );
+ }
+}
+
+
+extern "C" {
+ KDE_EXPORT KonqSidebarPlugin* create_konqsidebar_web(KInstance *instance, QObject *parent, QWidget *widget, QString &desktopName, const char *name) {
+ return new KonqSideBarWebModule(instance, parent, widget, desktopName, name);
+ }
+}
+
+
+extern "C" {
+ KDE_EXPORT bool add_konqsidebar_web(QString* fn, QString* param, QMap<QString,QString> *map) {
+ Q_UNUSED(param);
+ KGlobal::dirs()->addResourceType("websidebardata", KStandardDirs::kde_default("data") + "konqsidebartng/websidebar");
+ KURL url;
+ url.setProtocol("file");
+ QStringList paths = KGlobal::dirs()->resourceDirs("websidebardata");
+ for (QStringList::Iterator i = paths.begin(); i != paths.end(); ++i) {
+ if (QFileInfo(*i + "websidebar.html").exists()) {
+ url.setPath(*i + "websidebar.html");
+ break;
+ }
+ }
+
+ if (url.path().isEmpty())
+ return false;
+ map->insert("Type", "Link");
+ map->insert("URL", url.url());
+ map->insert("Icon", "netscape");
+ map->insert("Name", i18n("Web SideBar Plugin"));
+ map->insert("Open", "true");
+ map->insert("X-KDE-KonqSidebarModule","konqsidebar_web");
+ fn->setLatin1("websidebarplugin%1.desktop");
+ return true;
+ }
+}
+
+
+#include "web_module.moc"
+
diff --git a/konqueror/sidebar/web_module/web_module.h b/konqueror/sidebar/web_module/web_module.h
new file mode 100644
index 000000000..58650b309
--- /dev/null
+++ b/konqueror/sidebar/web_module/web_module.h
@@ -0,0 +1,202 @@
+/* This file is part of the KDE project
+ Copyright (C) 2003 George Staikos <staikos@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef web_module_h
+#define web_module_h
+
+#include <assert.h>
+#include <khtml_part.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <konqsidebarplugin.h>
+#include <kpopupmenu.h>
+#include <qobject.h>
+
+
+// A wrapper for KHTMLPart to make it behave the way we want it to.
+class KHTMLSideBar : public KHTMLPart
+{
+ Q_OBJECT
+ public:
+ KHTMLSideBar(bool universal) : KHTMLPart() {
+ setStatusMessagesEnabled(false);
+ setMetaRefreshEnabled(true);
+ setJavaEnabled(false);
+ setPluginsEnabled(false);
+
+ setFormNotification(KHTMLPart::Only);
+ connect(this,
+ SIGNAL(formSubmitNotification(const char*,const QString&,const QByteArray&,const QString&,const QString&,const QString&)),
+ this,
+ SLOT(formProxy(const char*,const QString&,const QByteArray&,const QString&,const QString&,const QString&))
+ );
+
+
+ _linkMenu = new KPopupMenu(widget(),
+ "link context menu");
+ if (!universal) {
+ _linkMenu->insertItem(i18n("&Open Link"),
+ this, SLOT(loadPage()));
+ _linkMenu->insertItem(i18n("Open in New &Window"),
+ this, SLOT(loadNewWindow()));
+ } else {
+ _linkMenu->insertItem(i18n("Open in New &Window"),
+ this, SLOT(loadPage()));
+ }
+ _menu = new KPopupMenu(widget(), "context menu");
+ _menu->insertItem(SmallIcon("reload"), i18n("&Reload"),
+ this, SIGNAL(reload()));
+ _menu->insertItem(SmallIcon("reload"), i18n("Set &Automatic Reload"), this, SIGNAL(setAutoReload()));
+
+ connect(this,
+ SIGNAL(popupMenu(const QString&,const QPoint&)),
+ this,
+ SLOT(showMenu(const QString&, const QPoint&)));
+
+ }
+ virtual ~KHTMLSideBar() {}
+
+ signals:
+ void submitFormRequest(const char*,const QString&,const QByteArray&,const QString&,const QString&,const QString&);
+ void openURLRequest(const QString& url, KParts::URLArgs args);
+ void openURLNewWindow(const QString& url, KParts::URLArgs args);
+ void reload();
+ void setAutoReload();
+
+ protected:
+ virtual void urlSelected( const QString &url, int button,
+ int state, const QString &_target,
+ KParts::URLArgs args = KParts::URLArgs()) {
+ if (button == LeftButton ){
+ if (_target.lower() == "_self") {
+ openURL(url);
+ } else if (_target.lower() == "_blank") {
+ emit openURLNewWindow(completeURL(url).url(), args);
+ } else { // isEmpty goes here too
+ emit openURLRequest(completeURL(url).url(), args);
+ }
+ return;
+ }
+ if (button == MidButton) {
+ emit openURLNewWindow(completeURL(url).url(),
+ args);
+ return;
+ }
+ // A refresh
+ if (button == 0 && _target.lower() == "_self") {
+ openURL(completeURL(url));
+ return;
+ }
+ KHTMLPart::urlSelected(url,button,state,_target,args);
+ }
+
+ protected slots:
+ void loadPage() {
+ emit openURLRequest(completeURL(_lastUrl).url(),
+ KParts::URLArgs());
+ }
+
+ void loadNewWindow() {
+ emit openURLNewWindow(completeURL(_lastUrl).url(),
+ KParts::URLArgs());
+ }
+
+ void showMenu(const QString& url, const QPoint& pos) {
+ if (url.isEmpty()) {
+ _menu->popup(pos);
+ } else {
+ _lastUrl = url;
+ _linkMenu->popup(pos);
+ }
+ }
+
+ void formProxy(const char *action,
+ const QString& url,
+ const QByteArray& formData,
+ const QString& target,
+ const QString& contentType,
+ const QString& boundary) {
+ QString t = target.lower();
+ QString u;
+
+ if (QCString(action).lower() != "post") {
+ // GET
+ KURL kurl = completeURL(url);
+ kurl.setQuery(formData.data());
+ u = kurl.url();
+ } else {
+ u = completeURL(url).url();
+ }
+
+ // Some sites seem to use empty targets to send to the
+ // main frame.
+ if (t == "_content") {
+ emit submitFormRequest(action, u, formData,
+ target, contentType, boundary);
+ } else if (t.isEmpty() || t == "_self") {
+ setFormNotification(KHTMLPart::NoNotification);
+ submitFormProxy(action, u, formData, target,
+ contentType, boundary);
+ setFormNotification(KHTMLPart::Only);
+ }
+ }
+ private:
+ KPopupMenu *_menu, *_linkMenu;
+ QString _lastUrl;
+};
+
+
+
+class KonqSideBarWebModule : public KonqSidebarPlugin
+{
+ Q_OBJECT
+ public:
+ KonqSideBarWebModule(KInstance *instance, QObject *parent,
+ QWidget *widgetParent, QString &desktopName,
+ const char *name);
+ virtual ~KonqSideBarWebModule();
+
+ virtual QWidget *getWidget();
+ virtual void *provides(const QString &);
+
+ signals:
+ void submitFormRequest(const char*,const QString&,const QByteArray&,const QString&,const QString&,const QString&);
+ void openURLRequest(const KURL &url, const KParts::URLArgs &args);
+ void createNewWindow(const KURL &url, const KParts::URLArgs &args);
+ protected:
+ virtual void handleURL(const KURL &url);
+
+ private slots:
+ void urlClicked(const QString& url, KParts::URLArgs args);
+ void formClicked(const KURL& url, const KParts::URLArgs& args);
+ void urlNewWindow(const QString& url, KParts::URLArgs args);
+ void pageLoaded();
+ void loadFavicon();
+ void setTitle(const QString&);
+ void setAutoReload();
+ void reload();
+
+ private:
+ KHTMLSideBar *_htmlPart;
+ KURL _url;
+ int reloadTimeout;
+ QString _desktopName;
+};
+
+#endif
+
diff --git a/konqueror/sidebar/web_module/webmodule_add.desktop b/konqueror/sidebar/web_module/webmodule_add.desktop
new file mode 100644
index 000000000..78a9972e2
--- /dev/null
+++ b/konqueror/sidebar/web_module/webmodule_add.desktop
@@ -0,0 +1,79 @@
+[Desktop Entry]
+Type=Link
+URL=
+Icon=www
+Name=Web SideBar Module
+Name[af]=Web kantbalk module
+Name[ar]=وحدة شريط الشبكة الجانبي
+Name[az]=Veb Yan Çubuq Modulu
+Name[be]=Модуль cеціўнай бакавой панэлі
+Name[bg]=Модул за страничния панел на браузъра
+Name[bn]=ওয়েব সাইডবার মডিউল
+Name[bs]=Web sidebar modul
+Name[ca]=Mòdul web SideBar
+Name[cs]=Webový postranní panel
+Name[csb]=Moduł bòczny lëstwë WWW
+Name[cy]=Modiwl Bar Ochr Gwe
+Name[da]=Web-sidebjælke modul
+Name[de]=Web-Navigationsbereich
+Name[el]=Άρθρωμα πλευρικής μπάρας Ιστού
+Name[eo]=TTT-flankzona modulo
+Name[es]=Módulo de la barra lateral de web
+Name[et]=Veebi külgriba moodul
+Name[eu]=Web-eko alboko barraren modulua
+Name[fa]=پیمانۀ میله‌ جانبی وب
+Name[fi]=Verkkosivupalkkimoduuli
+Name[fr]=Module de barre de navigation sur le web
+Name[fy]=Web sydbalke module
+Name[ga]=Modúl Barra Taoibh Gréasáin
+Name[gl]=Módulo da Barra Lateral Web
+Name[he]=מודול שורת־צד מקוון
+Name[hi]=वेब बाज़ूपट्टी मॉड्यूल
+Name[hr]=Modul za web trake
+Name[hu]=Webes oldalsáv-modul
+Name[is]=Vefhliðarslá
+Name[it]=Modulo barra laterale web
+Name[ja]=ウェブサイドバーモジュール
+Name[ka]=გვერდით Web დაფის მოდული
+Name[kk]=Веб бүйір панель модулі
+Name[km]=ម៉ូឌុល​របារ​បណ្ដាញ
+Name[ko]=웹 사이드바 모듈
+Name[lt]=Šoninės žiniatinklio juostos modulis
+Name[lv]=Tīmekļa sānjoslas modulis
+Name[mk]=Модул - Веб-странична лента
+Name[mn]=Вэб самбарын модул
+Name[ms]=Modul Bar Sisi Web
+Name[mt]=Barra tal-ġenb għal-web
+Name[nb]=Modul for nett-sidestolpe
+Name[nds]=Sietpaneel för de Nettnavigatschoon
+Name[ne]=वेब छेउपट्टी मोड्युल
+Name[nl]=Webzijbalkmodule
+Name[nn]=Modul for nett-sidestolpe
+Name[pa]=ਵੈੱਬ ਬਾਹੀ ਮੈਡੀਊਲ
+Name[pl]=Moduł paska bocznego WWW
+Name[pt]=Módulo da Barra Lateral Web
+Name[pt_BR]=Módulo da Barra Lateral Web
+Name[ro]=Modul bară laterală web
+Name[ru]=Модуль боковой панели Web
+Name[rw]=Igice UmurongokuRuahande cy'Urubugamakuru
+Name[se]=Neahtta-bálddalasholga moduvla
+Name[sk]=Modul bočného Web panelu
+Name[sl]=Modul spletne stranske vrstice
+Name[sr]=Модул веб бочне траке
+Name[sr@Latn]=Modul veb bočne trake
+Name[sv]=Webbsidoradsmodul
+Name[ta]=வலை பக்கப்பட்டி பகுதி
+Name[tg]=Бахши навори канораи вэб
+Name[th]=โมดูลแถบด้านข้างสำหรับเว็บ
+Name[tr]=Web Yan Çubuk Modülü
+Name[tt]=Web YanTirä Modulı
+Name[uk]=Модуль бічної панелі Тенет
+Name[uz]=Veb yon paneli moduli
+Name[uz@cyrillic]=Веб ён панели модули
+Name[vi]=Mô đun Thanh bên Trình duyệt
+Name[wa]=Module di bår di costé waibe
+Name[zh_CN]=Web 侧边栏模块
+Name[zh_TW]=網頁邊列模組
+Open=false
+X-KDE-KonqSidebarAddModule=konqsidebar_web
+X-KDE-KonqSidebarUniversal=true
diff --git a/konqueror/sidebar/web_module/websidebar.desktop b/konqueror/sidebar/web_module/websidebar.desktop
new file mode 100644
index 000000000..30413e06a
--- /dev/null
+++ b/konqueror/sidebar/web_module/websidebar.desktop
@@ -0,0 +1,78 @@
+[Desktop Entry]
+Type=Link
+URL=
+Icon=www
+Name=Web SideBar Module
+Name[af]=Web kantbalk module
+Name[ar]=وحدة شريط الشبكة الجانبي
+Name[az]=Veb Yan Çubuq Modulu
+Name[be]=Модуль cеціўнай бакавой панэлі
+Name[bg]=Модул за страничния панел на браузъра
+Name[bn]=ওয়েব সাইডবার মডিউল
+Name[bs]=Web sidebar modul
+Name[ca]=Mòdul web SideBar
+Name[cs]=Webový postranní panel
+Name[csb]=Moduł bòczny lëstwë WWW
+Name[cy]=Modiwl Bar Ochr Gwe
+Name[da]=Web-sidebjælke modul
+Name[de]=Web-Navigationsbereich
+Name[el]=Άρθρωμα πλευρικής μπάρας Ιστού
+Name[eo]=TTT-flankzona modulo
+Name[es]=Módulo de la barra lateral de web
+Name[et]=Veebi külgriba moodul
+Name[eu]=Web-eko alboko barraren modulua
+Name[fa]=پیمانۀ میله‌ جانبی وب
+Name[fi]=Verkkosivupalkkimoduuli
+Name[fr]=Module de barre de navigation sur le web
+Name[fy]=Web sydbalke module
+Name[ga]=Modúl Barra Taoibh Gréasáin
+Name[gl]=Módulo da Barra Lateral Web
+Name[he]=מודול שורת־צד מקוון
+Name[hi]=वेब बाज़ूपट्टी मॉड्यूल
+Name[hr]=Modul za web trake
+Name[hu]=Webes oldalsáv-modul
+Name[is]=Vefhliðarslá
+Name[it]=Modulo barra laterale web
+Name[ja]=ウェブサイドバーモジュール
+Name[ka]=გვერდით Web დაფის მოდული
+Name[kk]=Веб бүйір панель модулі
+Name[km]=ម៉ូឌុល​របារ​បណ្ដាញ
+Name[ko]=웹 사이드바 모듈
+Name[lt]=Šoninės žiniatinklio juostos modulis
+Name[lv]=Tīmekļa sānjoslas modulis
+Name[mk]=Модул - Веб-странична лента
+Name[mn]=Вэб самбарын модул
+Name[ms]=Modul Bar Sisi Web
+Name[mt]=Barra tal-ġenb għal-web
+Name[nb]=Modul for nett-sidestolpe
+Name[nds]=Sietpaneel för de Nettnavigatschoon
+Name[ne]=वेब छेउपट्टी मोड्युल
+Name[nl]=Webzijbalkmodule
+Name[nn]=Modul for nett-sidestolpe
+Name[pa]=ਵੈੱਬ ਬਾਹੀ ਮੈਡੀਊਲ
+Name[pl]=Moduł paska bocznego WWW
+Name[pt]=Módulo da Barra Lateral Web
+Name[pt_BR]=Módulo da Barra Lateral Web
+Name[ro]=Modul bară laterală web
+Name[ru]=Модуль боковой панели Web
+Name[rw]=Igice UmurongokuRuahande cy'Urubugamakuru
+Name[se]=Neahtta-bálddalasholga moduvla
+Name[sk]=Modul bočného Web panelu
+Name[sl]=Modul spletne stranske vrstice
+Name[sr]=Модул веб бочне траке
+Name[sr@Latn]=Modul veb bočne trake
+Name[sv]=Webbsidoradsmodul
+Name[ta]=வலை பக்கப்பட்டி பகுதி
+Name[tg]=Бахши навори канораи вэб
+Name[th]=โมดูลแถบด้านข้างสำหรับเว็บ
+Name[tr]=Web Yan Çubuk Modülü
+Name[tt]=Web YanTirä Modulı
+Name[uk]=Модуль бічної панелі Тенет
+Name[uz]=Veb yon paneli moduli
+Name[uz@cyrillic]=Веб ён панели модули
+Name[vi]=Mô đun Thanh bên Trình duyệt
+Name[wa]=Module di bår di costé waibe
+Name[zh_CN]=Web 侧边栏模块
+Name[zh_TW]=網頁邊列模組
+Open=false
+X-KDE-KonqSidebarModule=konqsidebar_web
diff --git a/konqueror/sidebar/web_module/websidebar.html b/konqueror/sidebar/web_module/websidebar.html
new file mode 100644
index 000000000..111356054
--- /dev/null
+++ b/konqueror/sidebar/web_module/websidebar.html
@@ -0,0 +1,11 @@
+<html>
+<body>
+<div align="center" width="80%">
+<font size="+2">
+Web SideBar Extension
+</font>
+<hr />
+<br />
+Select a URL with the context menu for the icon of this extension.
+</body>
+</html>