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/CMakeLists.txt40
-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
8 files changed, 655 insertions, 0 deletions
diff --git a/konqueror/sidebar/web_module/CMakeLists.txt b/konqueror/sidebar/web_module/CMakeLists.txt
new file mode 100644
index 000000000..a15866ebd
--- /dev/null
+++ b/konqueror/sidebar/web_module/CMakeLists.txt
@@ -0,0 +1,40 @@
+#################################################
+#
+# (C) 2010-2011 Serghei Amelian
+# serghei (DOT) amelian (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/konqueror/sidebar
+ ${CMAKE_SOURCE_DIR}/libkonq
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TDE_LIBRARY_DIRS}
+ ${TQT_LIBRARY_DIRS}
+)
+
+
+##### other data ################################
+
+install( FILES webmodule_add.desktop DESTINATION ${DATA_INSTALL_DIR}/konqsidebartng/add )
+install( FILES websidebar.html DESTINATION ${DATA_INSTALL_DIR}/konqsidebartng/websidebar )
+
+
+##### konqsidebar_web (module) ##################
+
+set( target konqsidebar_web )
+
+tde_add_kpart( ${target} AUTOMOC
+ SOURCES web_module.cpp
+ LINK konqsidebarplugin-shared konq-shared tdehtml-shared
+ DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/konqueror/sidebar/web_module/Makefile.am b/konqueror/sidebar/web_module/Makefile.am
new file mode 100644
index 000000000..55672f13e
--- /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_TDEPARTS) $(LIB_TDEHTML) ../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..6f268cbed
--- /dev/null
+++ b/konqueror/sidebar/web_module/TODO
@@ -0,0 +1,6 @@
+- Apparently _content works everywhere in Mozilla. Maybe this should go into
+TDEHTMLPart 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 TDEHTML.
+- Allow setting the useragent (only do this in a clean fashion!!)
+- Double check the TDEHTML 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..44a94f02c
--- /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 <tqfileinfo.h>
+#include <tqhbox.h>
+#include <tqspinbox.h>
+#include <tqtimer.h>
+
+#include <dom/html_inline.h>
+#include <kdebug.h>
+#include <kdialog.h>
+#include <tdeglobal.h>
+#include <tdelocale.h>
+#include <konq_pixmapprovider.h>
+#include <tdeparts/browserextension.h>
+#include <kstandarddirs.h>
+
+
+KonqSideBarWebModule::KonqSideBarWebModule(TDEInstance *instance, TQObject *parent, TQWidget *widgetParent, TQString &desktopName, const char* name)
+ : KonqSidebarPlugin(instance, parent, widgetParent, desktopName, name)
+{
+ _htmlPart = new TDEHTMLSideBar(universalMode());
+ connect(_htmlPart, TQT_SIGNAL(reload()), this, TQT_SLOT(reload()));
+ connect(_htmlPart, TQT_SIGNAL(completed()), this, TQT_SLOT(pageLoaded()));
+ connect(_htmlPart,
+ TQT_SIGNAL(setWindowCaption(const TQString&)),
+ this,
+ TQT_SLOT(setTitle(const TQString&)));
+ connect(_htmlPart,
+ TQT_SIGNAL(openURLRequest(const TQString&, KParts::URLArgs)),
+ this,
+ TQT_SLOT(urlClicked(const TQString&, KParts::URLArgs)));
+ connect(_htmlPart->browserExtension(),
+ TQT_SIGNAL(openURLRequest(const KURL&, const KParts::URLArgs&)),
+ this,
+ TQT_SLOT(formClicked(const KURL&, const KParts::URLArgs&)));
+ connect(_htmlPart,
+ TQT_SIGNAL(setAutoReload()), this, TQT_SLOT( setAutoReload() ));
+ connect(_htmlPart,
+ TQT_SIGNAL(openURLNewWindow(const TQString&, KParts::URLArgs)),
+ this,
+ TQT_SLOT(urlNewWindow(const TQString&, KParts::URLArgs)));
+ connect(_htmlPart,
+ TQT_SIGNAL(submitFormRequest(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&)),
+ this,
+ TQT_SIGNAL(submitFormRequest(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&)));
+
+ _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
+ TQTimer::singleShot(0, this, TQT_SLOT(loadFavicon()));
+}
+
+
+KonqSideBarWebModule::~KonqSideBarWebModule() {
+ delete _htmlPart;
+ _htmlPart = 0L;
+}
+
+
+TQWidget *KonqSideBarWebModule::getWidget() {
+ return _htmlPart->widget();
+}
+
+void KonqSideBarWebModule::setAutoReload(){
+ KDialogBase dlg(0, "", true, i18n("Set Refresh Timeout (0 disables)"),
+ KDialogBase::Ok|KDialogBase::Cancel);
+ TQHBox *hbox = dlg.makeHBoxMainWidget();
+
+ TQSpinBox *mins = new TQSpinBox( 0, 120, 1, hbox );
+ mins->setSuffix( i18n(" min") );
+ TQSpinBox *secs = new TQSpinBox( 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() == TQDialog::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 TQString &) {
+ return 0L;
+}
+
+
+void KonqSideBarWebModule::handleURL(const KURL &) {
+}
+
+
+void KonqSideBarWebModule::urlNewWindow(const TQString& url, KParts::URLArgs args)
+{
+ emit createNewWindow(KURL(url), args);
+}
+
+
+void KonqSideBarWebModule::urlClicked(const TQString& 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() {
+ TQString 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 TQString& 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 ) {
+ TQTimer::singleShot( reloadTimeout, this, TQT_SLOT( reload() ) );
+ }
+}
+
+
+extern "C" {
+ KDE_EXPORT KonqSidebarPlugin* create_konqsidebar_web(TDEInstance *instance, TQObject *parent, TQWidget *widget, TQString &desktopName, const char *name) {
+ return new KonqSideBarWebModule(instance, parent, widget, desktopName, name);
+ }
+}
+
+
+extern "C" {
+ KDE_EXPORT bool add_konqsidebar_web(TQString* fn, TQString* param, TQMap<TQString,TQString> *map) {
+ Q_UNUSED(param);
+ TDEGlobal::dirs()->addResourceType("websidebardata", TDEStandardDirs::kde_default("data") + "konqsidebartng/websidebar");
+ KURL url;
+ url.setProtocol("file");
+ TQStringList paths = TDEGlobal::dirs()->resourceDirs("websidebardata");
+ for (TQStringList::Iterator i = paths.begin(); i != paths.end(); ++i) {
+ if (TQFileInfo(*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-TDE-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..938677d8d
--- /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 <tdehtml_part.h>
+#include <kiconloader.h>
+#include <tdelocale.h>
+#include <konqsidebarplugin.h>
+#include <tdepopupmenu.h>
+#include <tqobject.h>
+
+
+// A wrapper for TDEHTMLPart to make it behave the way we want it to.
+class TDEHTMLSideBar : public TDEHTMLPart
+{
+ Q_OBJECT
+ public:
+ TDEHTMLSideBar(bool universal) : TDEHTMLPart() {
+ setStatusMessagesEnabled(false);
+ setMetaRefreshEnabled(true);
+ setJavaEnabled(false);
+ setPluginsEnabled(false);
+
+ setFormNotification(TDEHTMLPart::Only);
+ connect(this,
+ TQT_SIGNAL(formSubmitNotification(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&)),
+ this,
+ TQT_SLOT(formProxy(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&))
+ );
+
+
+ _linkMenu = new TDEPopupMenu(widget(),
+ "link context menu");
+ if (!universal) {
+ _linkMenu->insertItem(i18n("&Open Link"),
+ this, TQT_SLOT(loadPage()));
+ _linkMenu->insertItem(i18n("Open in New &Window"),
+ this, TQT_SLOT(loadNewWindow()));
+ } else {
+ _linkMenu->insertItem(i18n("Open in New &Window"),
+ this, TQT_SLOT(loadPage()));
+ }
+ _menu = new TDEPopupMenu(widget(), "context menu");
+ _menu->insertItem(SmallIcon("reload"), i18n("&Reload"),
+ this, TQT_SIGNAL(reload()));
+ _menu->insertItem(SmallIcon("reload"), i18n("Set &Automatic Reload"), this, TQT_SIGNAL(setAutoReload()));
+
+ connect(this,
+ TQT_SIGNAL(popupMenu(const TQString&,const TQPoint&)),
+ this,
+ TQT_SLOT(showMenu(const TQString&, const TQPoint&)));
+
+ }
+ virtual ~TDEHTMLSideBar() {}
+
+ signals:
+ void submitFormRequest(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&);
+ void openURLRequest(const TQString& url, KParts::URLArgs args);
+ void openURLNewWindow(const TQString& url, KParts::URLArgs args);
+ void reload();
+ void setAutoReload();
+
+ protected:
+ virtual void urlSelected( const TQString &url, int button,
+ int state, const TQString &_target,
+ KParts::URLArgs args = KParts::URLArgs()) {
+ if (button == Qt::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 == Qt::MidButton) {
+ emit openURLNewWindow(completeURL(url).url(),
+ args);
+ return;
+ }
+ // A refresh
+ if (button == 0 && _target.lower() == "_self") {
+ openURL(completeURL(url));
+ return;
+ }
+ TDEHTMLPart::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 TQString& url, const TQPoint& pos) {
+ if (url.isEmpty()) {
+ _menu->popup(pos);
+ } else {
+ _lastUrl = url;
+ _linkMenu->popup(pos);
+ }
+ }
+
+ void formProxy(const char *action,
+ const TQString& url,
+ const TQByteArray& formData,
+ const TQString& target,
+ const TQString& contentType,
+ const TQString& boundary) {
+ TQString t = target.lower();
+ TQString u;
+
+ if (TQCString(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(TDEHTMLPart::NoNotification);
+ submitFormProxy(action, u, formData, target,
+ contentType, boundary);
+ setFormNotification(TDEHTMLPart::Only);
+ }
+ }
+ private:
+ TDEPopupMenu *_menu, *_linkMenu;
+ TQString _lastUrl;
+};
+
+
+
+class KonqSideBarWebModule : public KonqSidebarPlugin
+{
+ Q_OBJECT
+ public:
+ KonqSideBarWebModule(TDEInstance *instance, TQObject *parent,
+ TQWidget *widgetParent, TQString &desktopName,
+ const char *name);
+ virtual ~KonqSideBarWebModule();
+
+ virtual TQWidget *getWidget();
+ virtual void *provides(const TQString &);
+
+ signals:
+ void submitFormRequest(const char*,const TQString&,const TQByteArray&,const TQString&,const TQString&,const TQString&);
+ 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 TQString& url, KParts::URLArgs args);
+ void formClicked(const KURL& url, const KParts::URLArgs& args);
+ void urlNewWindow(const TQString& url, KParts::URLArgs args);
+ void pageLoaded();
+ void loadFavicon();
+ void setTitle(const TQString&);
+ void setAutoReload();
+ void reload();
+
+ private:
+ TDEHTMLSideBar *_htmlPart;
+ KURL _url;
+ int reloadTimeout;
+ TQString _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..a42601c88
--- /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-TDE-KonqSidebarAddModule=konqsidebar_web
+X-TDE-KonqSidebarUniversal=true
diff --git a/konqueror/sidebar/web_module/websidebar.desktop b/konqueror/sidebar/web_module/websidebar.desktop
new file mode 100644
index 000000000..8a245e188
--- /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-TDE-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>