aboutsummaryrefslogtreecommitdiff
path: root/Application
diff options
context:
space:
mode:
Diffstat (limited to 'Application')
-rw-r--r--Application/Controllers/AcquisitioncardsController.php131
-rw-r--r--Application/Controllers/BaseController.php303
-rw-r--r--Application/Controllers/BluetoothController.php131
-rw-r--r--Application/Controllers/ClientController.php55
-rw-r--r--Application/Controllers/ContactController.php43
-rw-r--r--Application/Controllers/CreditsController.php43
-rw-r--r--Application/Controllers/DownloadController.php275
-rw-r--r--Application/Controllers/EthernetcardsController.php131
-rw-r--r--Application/Controllers/FaqController.php41
-rw-r--r--Application/Controllers/FingerprintreadersController.php131
-rw-r--r--Application/Controllers/GenericController.php1001
-rw-r--r--Application/Controllers/HardwareController.php43
-rw-r--r--Application/Controllers/HelpController.php41
-rw-r--r--Application/Controllers/HistoryController.php650
-rw-r--r--Application/Controllers/HomeController.php47
-rw-r--r--Application/Controllers/HostcontrollersController.php137
-rw-r--r--Application/Controllers/ImageController.php41
-rw-r--r--Application/Controllers/IssuesController.php203
-rw-r--r--Application/Controllers/MeetController.php338
-rw-r--r--Application/Controllers/ModemsController.php131
-rw-r--r--Application/Controllers/MyController.php214
-rw-r--r--Application/Controllers/NewsController.php67
-rw-r--r--Application/Controllers/NotebooksController.php159
-rw-r--r--Application/Controllers/PrintersController.php154
-rw-r--r--Application/Controllers/ProjectController.php42
-rw-r--r--Application/Controllers/RaidadaptersController.php131
-rw-r--r--Application/Controllers/RssController.php64
-rw-r--r--Application/Controllers/ScannersController.php127
-rw-r--r--Application/Controllers/SdcardreadersController.php131
-rw-r--r--Application/Controllers/SearchController.php267
-rw-r--r--Application/Controllers/SoundcardsController.php127
-rw-r--r--Application/Controllers/SpecialController.php216
-rw-r--r--Application/Controllers/ThreegcardsController.php127
-rw-r--r--Application/Controllers/UsersController.php352
-rw-r--r--Application/Controllers/VideocardsController.php127
-rw-r--r--Application/Controllers/WebcamsController.php127
-rw-r--r--Application/Controllers/WifiController.php127
-rw-r--r--Application/Controllers/WikiController.php644
-rwxr-xr-xApplication/Hooks/AfterInitialization.php10
-rwxr-xr-xApplication/Hooks/BeforeChecks.php20
-rwxr-xr-xApplication/Hooks/BeforeInitialization.php10
-rwxr-xr-xApplication/Hooks/index.html1
-rw-r--r--Application/Include/distributions.php91
-rw-r--r--Application/Include/hardware.php576
-rw-r--r--Application/Include/languages.php2363
-rw-r--r--Application/Include/license.php93
-rw-r--r--Application/Include/myFunctions.php542
-rw-r--r--Application/Include/params.php228
-rw-r--r--Application/Include/vendorTranslations.php4247
-rw-r--r--Application/Include/vendors.php4191
-rw-r--r--Application/Include/version.php138
-rw-r--r--Application/Include/wikiFormatting.php356
-rw-r--r--Application/Models/AcquisitioncardsModel.php68
-rw-r--r--Application/Models/BaseModel.php43
-rw-r--r--Application/Models/BluetoothModel.php68
-rw-r--r--Application/Models/BoxesModel.php42
-rw-r--r--Application/Models/DeletionModel.php53
-rw-r--r--Application/Models/DistrosModel.php34
-rw-r--r--Application/Models/EthernetcardsModel.php68
-rw-r--r--Application/Models/FingerprintreadersModel.php68
-rw-r--r--Application/Models/GenericModel.php103
-rw-r--r--Application/Models/HardwareModel.php348
-rw-r--r--Application/Models/HistoryModel.php56
-rw-r--r--Application/Models/HostcontrollersModel.php69
-rw-r--r--Application/Models/IssuesModel.php116
-rw-r--r--Application/Models/MessagesModel.php73
-rw-r--r--Application/Models/ModemsModel.php68
-rw-r--r--Application/Models/NewsModel.php44
-rw-r--r--Application/Models/NotebooksModel.php94
-rw-r--r--Application/Models/ParamsModel.php43
-rw-r--r--Application/Models/PrintersModel.php70
-rw-r--r--Application/Models/ProfileModel.php78
-rw-r--r--Application/Models/RaidadaptersModel.php68
-rw-r--r--Application/Models/RevisionsModel.php50
-rw-r--r--Application/Models/ScannersModel.php68
-rw-r--r--Application/Models/SdcardreadersModel.php68
-rw-r--r--Application/Models/SoundcardsModel.php68
-rw-r--r--Application/Models/TalkModel.php116
-rw-r--r--Application/Models/ThreegcardsModel.php68
-rwxr-xr-xApplication/Models/UsersModel.php295
-rw-r--r--Application/Models/VendorsModel.php82
-rw-r--r--Application/Models/VideocardsModel.php68
-rw-r--r--Application/Models/WebcamsModel.php72
-rw-r--r--Application/Models/WifiModel.php68
-rw-r--r--Application/Models/WikiModel.php319
-rw-r--r--Application/Models/WikirevisionsModel.php45
-rw-r--r--Application/Models/WikitalkModel.php112
-rw-r--r--Application/Modules/ModBase.php41
-rw-r--r--Application/Modules/ModImage.php45
-rw-r--r--Application/Modules/ModLink.php18
-rw-r--r--Application/Modules/ModLinkimage.php18
-rw-r--r--Application/Modules/ModRaw.php18
-rw-r--r--Application/Modules/ModTopLink.php32
-rw-r--r--Application/Modules/index.html1
-rw-r--r--Application/Strings/Lang/It/DbCondStrings.php34
-rw-r--r--Application/Strings/Lang/It/ModelStrings.php36
-rw-r--r--Application/Strings/Lang/It/UploadStrings.php44
-rw-r--r--Application/Strings/Lang/It/ValCondStrings.php92
-rw-r--r--Application/Strings/Lang/It/index.html1
-rw-r--r--Application/Strings/Lang/index.html1
-rw-r--r--Application/Strings/index.html1
-rw-r--r--Application/Views/Desktop/Client/info.php30
-rw-r--r--Application/Views/Desktop/Client/license.php25
-rw-r--r--Application/Views/Desktop/Contact/index.php39
-rw-r--r--Application/Views/Desktop/Contact/index_de.php39
-rw-r--r--Application/Views/Desktop/Contact/index_es.php39
-rw-r--r--Application/Views/Desktop/Contact/index_fr.php39
-rw-r--r--Application/Views/Desktop/Contact/index_gr.php39
-rw-r--r--Application/Views/Desktop/Contact/index_it.php39
-rw-r--r--Application/Views/Desktop/Credits/index.php65
-rw-r--r--Application/Views/Desktop/Credits/index_es.php65
-rw-r--r--Application/Views/Desktop/Credits/index_fr.php63
-rw-r--r--Application/Views/Desktop/Credits/index_gr.php65
-rw-r--r--Application/Views/Desktop/Credits/index_it.php66
-rw-r--r--Application/Views/Desktop/Download/index.php114
-rw-r--r--Application/Views/Desktop/Download/xml.php22
-rw-r--r--Application/Views/Desktop/Hardware/left.php92
-rw-r--r--Application/Views/Desktop/Help/index.php447
-rw-r--r--Application/Views/Desktop/Help/index_de.php443
-rw-r--r--Application/Views/Desktop/Help/index_es.php440
-rw-r--r--Application/Views/Desktop/Help/index_fr.php432
-rw-r--r--Application/Views/Desktop/Help/index_it.php436
-rw-r--r--Application/Views/Desktop/History/viewall.php40
-rw-r--r--Application/Views/Desktop/Home/left.php85
-rw-r--r--Application/Views/Desktop/Home/left_de.php86
-rw-r--r--Application/Views/Desktop/Home/left_es.php85
-rw-r--r--Application/Views/Desktop/Home/left_fr.php88
-rw-r--r--Application/Views/Desktop/Home/left_gr.php87
-rw-r--r--Application/Views/Desktop/Home/left_it.php88
-rw-r--r--Application/Views/Desktop/Issues/view.php249
-rw-r--r--Application/Views/Desktop/Issues/viewall.php122
-rw-r--r--Application/Views/Desktop/Meet/contributions.php79
-rw-r--r--Application/Views/Desktop/Meet/hardware.php30
-rw-r--r--Application/Views/Desktop/Meet/issues.php31
-rw-r--r--Application/Views/Desktop/Meet/list_template.php50
-rw-r--r--Application/Views/Desktop/Meet/meet.php114
-rw-r--r--Application/Views/Desktop/Meet/messages.php31
-rw-r--r--Application/Views/Desktop/Meet/talk.php32
-rw-r--r--Application/Views/Desktop/Meet/wiki.php29
-rw-r--r--Application/Views/Desktop/Meet/wikitalk.php31
-rw-r--r--Application/Views/Desktop/My/email.php33
-rw-r--r--Application/Views/Desktop/My/goodbye.php63
-rw-r--r--Application/Views/Desktop/My/panel.php64
-rw-r--r--Application/Views/Desktop/My/password.php33
-rw-r--r--Application/Views/Desktop/My/profile.php33
-rw-r--r--Application/Views/Desktop/News/index.php51
-rw-r--r--Application/Views/Desktop/Notebooks/.svn/entries96
-rw-r--r--Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base156
-rw-r--r--Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base120
-rw-r--r--Application/Views/Desktop/Notebooks/form.php156
-rw-r--r--Application/Views/Desktop/Notebooks/page.php120
-rw-r--r--Application/Views/Desktop/Project/index.php48
-rw-r--r--Application/Views/Desktop/Project/index_de.php49
-rw-r--r--Application/Views/Desktop/Project/index_es.php49
-rw-r--r--Application/Views/Desktop/Project/index_fr.php48
-rw-r--r--Application/Views/Desktop/Project/index_gr.php48
-rw-r--r--Application/Views/Desktop/Project/index_it.php48
-rw-r--r--Application/Views/Desktop/Rss/modifications.php46
-rw-r--r--Application/Views/Desktop/Rss/notapproved.php41
-rw-r--r--Application/Views/Desktop/Search/form.php111
-rw-r--r--Application/Views/Desktop/Search/lspci_results.php89
-rw-r--r--Application/Views/Desktop/Search/results.php87
-rw-r--r--Application/Views/Desktop/Special/modactions.php95
-rw-r--r--Application/Views/Desktop/Special/modifications.php45
-rw-r--r--Application/Views/Desktop/Special/pages_deleted.php45
-rwxr-xr-xApplication/Views/Desktop/Users/add.php72
-rw-r--r--Application/Views/Desktop/Users/change.php30
-rw-r--r--Application/Views/Desktop/Users/confirmation.php44
-rw-r--r--Application/Views/Desktop/Users/forgot.php57
-rwxr-xr-xApplication/Views/Desktop/Users/login.php67
-rwxr-xr-xApplication/Views/Desktop/Users/logout.php27
-rw-r--r--Application/Views/Desktop/Users/notice.php96
-rw-r--r--Application/Views/Desktop/Wiki/climb.php52
-rw-r--r--Application/Views/Desktop/Wiki/differences.php64
-rw-r--r--Application/Views/Desktop/Wiki/form.php105
-rw-r--r--Application/Views/Desktop/Wiki/history.php74
-rw-r--r--Application/Views/Desktop/Wiki/modifications.php45
-rw-r--r--Application/Views/Desktop/Wiki/not_found.php34
-rw-r--r--Application/Views/Desktop/Wiki/page.php154
-rw-r--r--Application/Views/Desktop/Wiki/pages.php45
-rw-r--r--Application/Views/Desktop/Wiki/talk.php173
-rw-r--r--Application/Views/Desktop/bottom_left.php29
-rw-r--r--Application/Views/Desktop/catalogue.php131
-rw-r--r--Application/Views/Desktop/cleared.php28
-rw-r--r--Application/Views/Desktop/climb.php37
-rw-r--r--Application/Views/Desktop/dialog.php102
-rw-r--r--Application/Views/Desktop/differences.php49
-rw-r--r--Application/Views/Desktop/footer.php45
-rw-r--r--Application/Views/Desktop/form.php160
-rw-r--r--Application/Views/Desktop/header.php120
-rw-r--r--Application/Views/Desktop/history.php63
-rw-r--r--Application/Views/Desktop/if_page_deleted.php60
-rw-r--r--Application/Views/Desktop/license_notice.php32
-rw-r--r--Application/Views/Desktop/moderator_dialog.php69
-rw-r--r--Application/Views/Desktop/noscript_distributions.php33
-rw-r--r--Application/Views/Desktop/not_found.php34
-rw-r--r--Application/Views/Desktop/page.php141
-rw-r--r--Application/Views/Desktop/right.php165
-rw-r--r--Application/Views/Desktop/suggest_dialog.php43
-rw-r--r--Application/Views/Desktop/talk.php163
-rw-r--r--Application/Views/Desktop/top_left.php190
-rw-r--r--Application/Views/Desktop/wiki_page.php153
-rw-r--r--Application/Views/Desktop/xml_response.php28
-rw-r--r--Application/Views/Mobile/Contact/index.php41
-rw-r--r--Application/Views/Mobile/Contact/index_de.php41
-rw-r--r--Application/Views/Mobile/Contact/index_es.php41
-rw-r--r--Application/Views/Mobile/Contact/index_fr.php41
-rw-r--r--Application/Views/Mobile/Contact/index_gr.php41
-rw-r--r--Application/Views/Mobile/Contact/index_it.php41
-rw-r--r--Application/Views/Mobile/Credits/index.php65
-rw-r--r--Application/Views/Mobile/Credits/index_es.php65
-rw-r--r--Application/Views/Mobile/Credits/index_fr.php63
-rw-r--r--Application/Views/Mobile/Credits/index_gr.php65
-rw-r--r--Application/Views/Mobile/Credits/index_it.php66
-rw-r--r--Application/Views/Mobile/Hardware/left.php127
-rw-r--r--Application/Views/Mobile/Home/left.php87
-rw-r--r--Application/Views/Mobile/Home/left_de.php86
-rw-r--r--Application/Views/Mobile/Home/left_es.php86
-rw-r--r--Application/Views/Mobile/Home/left_fr.php88
-rw-r--r--Application/Views/Mobile/Home/left_gr.php87
-rw-r--r--Application/Views/Mobile/Home/left_it.php88
-rw-r--r--Application/Views/Mobile/Notebooks/page.php119
-rw-r--r--Application/Views/Mobile/Project/index.php50
-rw-r--r--Application/Views/Mobile/Project/index_de.php51
-rw-r--r--Application/Views/Mobile/Project/index_es.php51
-rw-r--r--Application/Views/Mobile/Project/index_fr.php50
-rw-r--r--Application/Views/Mobile/Project/index_gr.php50
-rw-r--r--Application/Views/Mobile/Project/index_it.php50
-rw-r--r--Application/Views/Mobile/bottom_left.php29
-rw-r--r--Application/Views/Mobile/catalogue.php105
-rw-r--r--Application/Views/Mobile/dialog.php22
-rw-r--r--Application/Views/Mobile/footer.php64
-rw-r--r--Application/Views/Mobile/header.php104
-rw-r--r--Application/Views/Mobile/if_page_deleted.php60
-rw-r--r--Application/Views/Mobile/moderator_dialog.php21
-rw-r--r--Application/Views/Mobile/page.php134
-rw-r--r--Application/Views/Mobile/right.php22
-rw-r--r--Application/Views/Mobile/top_left.php43
-rwxr-xr-xApplication/index.html1
239 files changed, 34969 insertions, 0 deletions
diff --git a/Application/Controllers/AcquisitioncardsController.php b/Application/Controllers/AcquisitioncardsController.php
new file mode 100644
index 0000000..e373682
--- /dev/null
+++ b/Application/Controllers/AcquisitioncardsController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class AcquisitioncardsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Acquisitioncards::$select;
+ $worksField = 'compatibility';
+ $interfaceOptions = Acquisitioncards::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('AcquisitioncardsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['AcquisitioncardsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'acquisition-card';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility-desc',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Acquisition cards';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No acquisition card found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/BaseController.php b/Application/Controllers/BaseController.php
new file mode 100644
index 0000000..ac2be1f
--- /dev/null
+++ b/Application/Controllers/BaseController.php
@@ -0,0 +1,303 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class BaseController extends Controller
+{
+
+ protected $lang;
+ protected $islogged = 'no';
+ protected $ismoderator = false;
+ protected $isadmin = false;
+ protected $querySanitized = true;
+ protected $token = 'token';
+ protected $_updating = 'no';
+
+ protected $_configXml = null;
+
+ protected $_topMenuClasses = array(
+ "home" => null,
+ "hardware" => null,
+ "credits" => null,
+ "issues" => null,
+ "contact" => null,
+ "search" => null,
+ "news" => null,
+ "download" => null,
+ "help" => null,
+ "wiki" => null,
+ "faq" => null,
+ "project" => null,
+ );
+
+ public function __construct($model, $controller, $queryString) {
+ parent::__construct($model, $controller, $queryString);
+
+ header("Cache-Control: no-cache");
+
+ $this->model('BoxesModel');
+ $this->model('HistoryModel');
+ $this->model('ParamsModel');
+ $this->model('UsersModel');
+
+ $this->load('header');
+ $this->load('footer','last');
+
+ $this->session('registered');
+ $this->s['registered']->checkStatus();
+
+ $data['username'] = null;
+ $data['user_groups'] = null;
+ $data['islogged'] = 'no';
+ $data['token'] = 'token';
+ $data['ismoderator'] = false;
+ $data['isadmin'] = false;
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ $data['username'] = $this->s['registered']->status['user'];
+ $groups = $this->s['registered']->status['groups'];
+ $groups[] = 'registered';
+ $data['user_groups'] = implode(',',$groups);
+
+ $data['islogged'] = 'yes';
+ $this->islogged = $data['islogged'];
+
+ $data['token'] = $this->s['registered']->status['token'];
+ $this->token = $data['token'];
+
+ $data['ismoderator'] = in_array('moderator',$this->s['registered']->status['groups']) ? true : false;
+ $this->ismoderator = $data['ismoderator'];
+
+ $data['isadmin'] = in_array('admin',$this->s['registered']->status['groups']) ? true : false;
+ $this->isadmin = $data['isadmin'];
+ }
+
+ $data['lang'] = 'en';
+ $this->lang = 'en';
+
+ if (isset($this->_queryString[0]))
+ {
+ $lang = (strcmp($this->_queryString[0],'') !== 0) ? $this->_queryString[0] : 'en';
+ $data['lang'] = Lang::sanitize($lang);
+ $this->lang = $data['lang'];
+ Lang::$current = $data['lang'];
+ }
+
+ $data['langIcon'] = Lang::getIcon(Lang::$current);
+ $data['langLabel'] = Lang::getLabel(Lang::$current);
+
+ //set desktop or mobile version
+ Version::set();
+ //subfolder of the Views folder where to look for view files
+ Params::$viewSubfolder = Version::getViewSubfolder();
+
+ $data['tm'] = $this->_topMenuClasses;
+
+ $this->_queryString = $this->sanitizeQueryString($this->_queryString);
+
+ $data['querySanitized'] = $this->querySanitized;
+ $data['queryString'] = Url::createUrl($this->_queryString);
+
+ //check ft they are updating the website
+ $updating = $this->m['ParamsModel']->select('updating')->where(array('id_par'=>1))->toList('updating')->send();
+
+ $data['updating_flag'] = 'no';
+ if (count($updating)>0)
+ {
+ $data['updating_flag'] = $updating[0];
+ $this->_updating = $data['updating_flag'];
+ }
+
+ //get the configuration xml
+ $xmlRes = $this->m['ParamsModel']->select('boxes_xml')->where(array('id_par'=>1))->toList('boxes_xml')->send();
+ if (count($xmlRes)>0)
+ {
+ $configXml = htmlspecialchars_decode($xmlRes[0],ENT_QUOTES);
+
+ if (Website::$useXmlConfigFile)
+ {
+ $xmlConfigFile = rtrim(Website::$xmlConfigFileFolder,'/') . '/config.xml';
+ if (@simplexml_load_file($xmlConfigFile))
+ {
+ $this->_configXml = simplexml_load_file($xmlConfigFile);
+ }
+ }
+ else
+ {
+ if (@simplexml_load_string($configXml))
+ {
+ $this->_configXml = simplexml_load_string($configXml);
+ }
+ }
+ }
+
+ //elements of the top menu from the config.xml file
+ //help link
+ $mod = new BoxParser($this->getBox(array("top_menu","help_page_link")));
+ $data["topMenuHelpLink"] = $mod->modules[0]->render($this->_topMenuClasses["help"]);
+ //faq link
+ $mod = new BoxParser($this->getBox(array("top_menu","faq_link")));
+ $data["topMenuFaqLink"] = $mod->modules[0]->render($this->_topMenuClasses["faq"]);
+
+ //link to the "discover your hardware" wiki page
+ $data['discoverYourHardwareLink'] = $this->getModule(array('right_column','discover_your_hardware'));
+
+ Distributions::setAllowedList();
+
+ $this->append($data);
+ }
+
+ //get the right box from the configuration xml
+ protected function getBox($xmlPath,$xmlString = null)
+ {
+ if (!isset($xmlString))
+ {
+ $xmlString = $this->_configXml;
+ }
+
+ if (is_array($xmlPath))
+ {
+ if (isset($xmlString))
+ {
+ $tempXml = $xmlString->{$xmlPath[0]};
+ if (count($xmlPath) === 1)
+ {
+ if (isset($tempXml->{$this->lang}))
+ {
+ return $tempXml->{$this->lang}->asXml();
+ }
+ else if (isset($tempXml->{"en"}))
+ {
+ return $tempXml->{"en"}->asXml();
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ array_shift($xmlPath);
+ return $this->getBox($xmlPath,$tempXml);
+ }
+ }
+ }
+ return null;
+ }
+
+// get the HTML of a module from the xml configuration string
+// $xmlPath: array conitaining the path
+ protected function getModule($xmlPath)
+ {
+ $tracksHelpLabel = null;
+ $xml = $this->getBox($xmlPath);
+ if ($xml)
+ {
+ $box_news = new BoxParser($xml);
+ $tracksHelpLabel = $box_news->render();
+ }
+ return $tracksHelpLabel;
+ }
+
+ protected function right($lang = 'en')
+ {
+ $hard = new HardwareModel();
+
+ $data['stat'] = $hard->clear()->select('type,count(*) AS numb')->where(array('-deleted'=>'no','cleared'=>'no'))->groupBy('type')->toList('type','aggregate.numb')->send();
+
+ $logged = $this->s['registered']->getUsersLogged();
+
+ $data['numbLogged'] = count($logged);
+
+ //render the boxes inside the right column
+ $data['htmlRightBox'] = $this->getModule(array('right_column'));
+
+ $data['language_links'] = $this->buildLanguageLinks($this->lang);
+
+ $data['lastModif'] = $this->m['HistoryModel']
+ ->clear()->select()
+ ->inner('hardware')
+ ->on('hardware.id_hard=history.id')
+ ->where(array('type'=>'hardware','gr'=>'registered','deleted'=>'no','cleared'=>'no',))
+ ->orderBy('id_history desc')
+ ->limit(5)
+ ->send();
+
+ $this->append($data);
+ $this->load('right');
+ }
+
+ protected function sanitizeQueryString($queryArray)
+ {
+ $resArray = array();
+ foreach ($queryArray as $item)
+ {
+ if (preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$item))
+ {
+ $resArray[] = sanitizeAll($item);
+ }
+ else
+ {
+ $this->querySanitized = false;
+ return array('en');
+ }
+ }
+ return $resArray;
+ }
+
+ protected function buildLanguageLinks($lang)
+ {
+ $status = $this->_queryString;
+ $cPage = $this->querySanitized ? $this->currPage : $this->baseUrl."/home/index";
+
+ $mobileDataRole = Version::get() === "mobile" ? "data-role='listview'" : null;
+
+ $link = "<ul $mobileDataRole class='languages_link_box'>\n";
+ foreach (Lang::$complete as $abbr => $fullName)
+ {
+ $linkClass = (strcmp($abbr,$lang) === 0) ? "class='current_lang'" : null;
+ $status[0] = $abbr;
+ $href = Url::createUrl($status);
+ $fullNameArray = explode(',',$fullName);
+ $text = "<img class='ui-li-icon' src='".$this->baseUrl."/Public/Img/Famfamfam/".$fullNameArray[0]."'><span>".$fullNameArray[1]."</span>";
+
+ $mobileRel = Version::get() === "mobile" ? "rel='external'" : null;
+ $link .= "\t<li><a $mobileRel $linkClass href='".$cPage.$href."'>$text</a></li>\n";
+ }
+ $link .= "</ul>\n";
+ return $link;
+ }
+
+ protected function cleverLoad($file)
+ {
+ $fileInt = $file."_".$this->lang;
+ if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder . DS . ucwords($this->controller) . DS . $fileInt . '.php'))
+ {
+ $this->load($fileInt);
+ }
+ else
+ {
+ $this->load($file);
+ }
+ }
+
+}
diff --git a/Application/Controllers/BluetoothController.php b/Application/Controllers/BluetoothController.php
new file mode 100644
index 0000000..eae4b74
--- /dev/null
+++ b/Application/Controllers/BluetoothController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class BluetoothController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Bluetooth::$select;
+ $worksField = 'bluetooth_works';
+ $interfaceOptions = Bluetooth::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('BluetoothModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['BluetoothModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'bluetooth';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,bluetooth_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'bluetooth_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'bluetooth-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Bluetooth';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No bluetooth devices found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'bluetooth_works' => $this->viewArgs['bluetooth_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/ClientController.php b/Application/Controllers/ClientController.php
new file mode 100644
index 0000000..51966c9
--- /dev/null
+++ b/Application/Controllers/ClientController.php
@@ -0,0 +1,55 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ClientController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ parent::__construct($model, $controller, $queryString);
+ }
+
+ public function licenseinfo($lang = 'en')
+ {
+ header ("Content-Type:text/xml");
+
+ $data["xml"] = "<?xml version='1.0' encoding='UTF-8'?>\n";
+
+ $this->append($data);
+ $this->clean();
+ $this->load("license");
+ }
+
+ public function userinfo($lang = 'en')
+ {
+ header ("Content-Type:text/xml");
+
+ $this->s['registered']->checkStatus();
+
+ $data['user_status'] = strcmp($this->islogged,'yes') === 0 ? 'logged' : 'not-logged';
+
+ $this->append($data);
+ $this->clean();
+ $this->load('info');
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/ContactController.php b/Application/Controllers/ContactController.php
new file mode 100644
index 0000000..197ec9a
--- /dev/null
+++ b/Application/Controllers/ContactController.php
@@ -0,0 +1,43 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ContactController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['contact'] = " class='currentitem ui-btn-active'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $data['title'] = 'contact - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function index($lang = 'en')
+ {
+ $this->cleverLoad('index');
+ $this->right();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/CreditsController.php b/Application/Controllers/CreditsController.php
new file mode 100644
index 0000000..4dbcc4a
--- /dev/null
+++ b/Application/Controllers/CreditsController.php
@@ -0,0 +1,43 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class CreditsController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['credits'] = " class='currentitem ui-btn-active'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $data['title'] = 'credits - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function index($lang = 'en')
+ {
+ $this->cleverLoad('index');
+ $this->right();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/DownloadController.php b/Application/Controllers/DownloadController.php
new file mode 100644
index 0000000..b221095
--- /dev/null
+++ b/Application/Controllers/DownloadController.php
@@ -0,0 +1,275 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class DownloadController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['download'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('HardwareModel');
+
+ $data['title'] = 'download - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function index($lang = 'en')
+ {
+ $this->cleverLoad('index');
+ $this->right($lang);
+ }
+
+ //get the xml of the archive
+ private function getXml($res)
+ {
+ $xml = null;
+ $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
+ $xml .= "<hardware>\n";
+ $xml .= "\t<general_information>\n";
+ $xml .= "\t\t<credits>h-node project</credits>\n";
+ $xml .= "\t\t<link>".Website::$generalName."</link>\n";
+ $xml .= "\t\t<date>".date("Y-m-d H:i:s")."</date>\n";
+ $xml .= "\t\t<license>".License::getInsideXml()."</license>\n";
+ $xml .= "\t</general_information>\n";
+
+ foreach ($res as $row)
+ {
+ $type = $row['hardware']['type'];
+ $xml .= "\t<device>\n";
+
+ $xml .= "\t\t<id>".$row['hardware']['id_hard']."</id>\n";
+ $xml .= "\t\t<type>".$row['hardware']['type']."</type>\n";
+
+ if ($type === 'notebook' or $type === 'printer' or $type === 'host-controller' )
+ {
+ $xml .= "\t\t<subtype>".$row['hardware']['subtype']."</subtype>\n";
+ }
+ if ($type === 'notebook')
+ {
+ $xml .= "\t\t<architecture>".translate($row['hardware']['architecture'])."</architecture>\n";
+ $xml .= "\t\t<free_bios>".$row['hardware']['bios']."</free_bios>\n";
+ $xml .= "\t\t<can_free_systems_be_installed>".$row['hardware']['can_free_systems_be_installed']."</can_free_systems_be_installed>\n";
+ $xml .= "\t\t<prevent_wifi>".$row['hardware']['prevent_wifi']."</prevent_wifi>\n";
+ }
+
+ $xml .= "\t\t<model_name>".$row['hardware']['model']."</model_name>\n";
+
+ if ($type !== 'notebook')
+ {
+ $xml .= "\t\t<other_names><![CDATA[".$row['hardware']['other_names']."]]></other_names>\n";
+ $xml .= "\t\t<vendorid_productid>".$row['hardware']['pci_id']."</vendorid_productid>\n";
+ }
+
+ $xml .= "\t\t<vendor>".$row['hardware']['vendor']."</vendor>\n";
+ $xml .= "\t\t<kernel_libre>".$row['hardware']['kernel']."</kernel_libre>\n";
+ $xml .= "\t\t<distribution>".$row['hardware']['distribution']."</distribution>\n";
+ $xml .= "\t\t<year>".$row['hardware']['comm_year']."</year>\n";
+
+ if ($type !== 'notebook')
+ {
+ $xml .= "\t\t<interface>".$row['hardware']['interface']."</interface>\n";
+ }
+
+ if ($type === 'notebook' or $type === 'printer' or $type === 'scanner')
+ {
+ $xml .= "\t\t<compatibility>".$row['hardware']['compatibility']."</compatibility>\n";
+ }
+ else if ($type === '3G-card' or $type === 'wifi')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['wifi_works']."</it_works>\n";
+ }
+ else if ($type === 'soundcard')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['sound_card_works']."</it_works>\n";
+ }
+ else if ($type === 'bluetooth')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['bluetooth_works']."</it_works>\n";
+ }
+ else if ($type === 'webcam')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['webcam_works']."</it_works>\n";
+ }
+ else if ($type === 'videocard')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['video_card_works']."</it_works>\n";
+ }
+ else if ($type === 'acquisition-card' or $type === 'modem' or $type === 'RAID-adapter' or $type === 'host-controller')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['compatibility']."</it_works>\n";
+ }
+ else if ($type === 'fingerprint-reader')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['fingerprint_works']."</it_works>\n";
+ }
+ else if ($type === 'ethernet-card')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['ethernet_card_works']."</it_works>\n";
+ }
+ else if ($type === 'sd-card-reader')
+ {
+ $xml .= "\t\t<it_works>".$row['hardware']['sd_card_works']."</it_works>\n";
+ }
+
+ if ($type === 'printer')
+ {
+ $xml .= "\t\t<it_tracks_users>".$row['hardware']['it_tracks_users']."</it_tracks_users>\n";
+ }
+
+ if ($type === 'notebook')
+ {
+ $xml .= "\t\t<wifi_card>".$row['hardware']['wifi_type']."</wifi_card>\n";
+ $xml .= "\t\t<videocard>".$row['hardware']['video_card_type']."</videocard>\n";
+ $xml .= "\t\t<webcam>".$row['hardware']['webcam_type']."</webcam>\n";
+ $xml .= "\t\t<wifi_works>".$row['hardware']['wifi_works']."</wifi_works>\n";
+ $xml .= "\t\t<videocard_works>".$row['hardware']['video_card_works']."</videocard_works>\n";
+ $xml .= "\t\t<webcam_works>".$row['hardware']['webcam_works']."</webcam_works>\n";
+ }
+
+ if ($type !== "notebook")
+ {
+ $xml .= "\t\t<driver>".$row['hardware']['driver']."</driver>\n";
+ }
+
+ $xml .= "\t\t<description><![CDATA[".$row['hardware']['description']."]]></description>\n";
+
+ $xml .= "\t\t<link>".$this->baseUrl."/".Hardware::getControllerFromType($type)."/view/".$this->lang."/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model'])."</link>\n";
+ $xml .= "\t\t<permalink>".$this->baseUrl."/".Hardware::getControllerFromType($type)."/view/".$this->lang."/".$row['hardware']['id_hard']."</permalink>\n";
+ $xml .= "\t\t<created_by>".$this->baseUrl."/".Hardware::getControllerFromType($type)."/history/".$this->lang."/".$row['hardware']['id_hard']."</created_by>\n";
+
+ $xml .= "\t</device>\n";
+ }
+
+ $xml .= "</hardware>\n";
+
+ return $xml;
+ }
+
+ protected function printXml($lang = 'en', $whereArray)
+ {
+ header ("Content-Type:text/xml");
+
+// header("Content-Type: application/force-download");
+// header("Content-Type: application/octet-stream");
+// header("Content-Type: application/download");
+
+ $filename = array_key_exists('type',$whereArray) ? $whereArray['type'] : "all";
+ header("Content-Disposition: attachment; filename=h-node-".$filename.".xml;");
+
+ $res = $this->m['HardwareModel']->clear()->select()->where($whereArray)->aWhere(array("cleared"=>"no"))->orderBy("type,hardware.id_hard")->send();
+
+ $data['xml'] = $this->getXml($res);
+
+ $this->append($data);
+ $this->clean();
+ $this->load('xml');
+ }
+
+ public function all($lang = 'en')
+ {
+ $this->printXml($lang, array('-deleted'=>'no'));
+ }
+
+ public function notebooks($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'notebook','-deleted'=>'no'));
+ }
+
+ public function wifi($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'wifi','-deleted'=>'no'));
+ }
+
+ public function videocards($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'videocard','-deleted'=>'no'));
+ }
+
+ public function printers($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'printer','-deleted'=>'no'));
+ }
+
+ public function scanners($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'scanner','-deleted'=>'no'));
+ }
+
+ public function threegcards($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'3G-card','-deleted'=>'no'));
+ }
+
+ public function soundcards($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'soundcard','-deleted'=>'no'));
+ }
+
+ public function webcams($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'webcam','-deleted'=>'no'));
+ }
+
+ public function bluetooth($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'bluetooth','-deleted'=>'no'));
+ }
+
+ public function acquisitioncards($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'acquisition-card','-deleted'=>'no'));
+ }
+
+ public function fingerprintreaders($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'fingerprint-reader','-deleted'=>'no'));
+ }
+
+ public function ethernetcards($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'ethernet-card','-deleted'=>'no'));
+ }
+
+ public function sdcardreaders($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'sd-card-reader','-deleted'=>'no'));
+ }
+
+ public function modems($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'modem','-deleted'=>'no'));
+ }
+
+ public function raidadapters($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'RAID-adapter','-deleted'=>'no'));
+ }
+
+ public function hostcontrollers($lang = 'en')
+ {
+ $this->printXml($lang, array('type'=>'host-controller','-deleted'=>'no'));
+ }
+}
diff --git a/Application/Controllers/EthernetcardsController.php b/Application/Controllers/EthernetcardsController.php
new file mode 100644
index 0000000..0425122
--- /dev/null
+++ b/Application/Controllers/EthernetcardsController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class EthernetcardsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Ethernetcards::$select;
+ $worksField = 'ethernet_card_works';
+ $interfaceOptions = Ethernetcards::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('EthernetcardsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['EthernetcardsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'ethernet-card';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,ethernet_card_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'ethernet_card_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'ethernet-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Ethernet cards';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No ethernet devices found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'ethernet_card_works' => $this->viewArgs['ethernet_card_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/FaqController.php b/Application/Controllers/FaqController.php
new file mode 100644
index 0000000..45ebab2
--- /dev/null
+++ b/Application/Controllers/FaqController.php
@@ -0,0 +1,41 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class FaqController extends WikiController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ $this->_topMenuClasses['faq'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->_topMenuClasses['wiki'] = null;
+
+ $data['tm'] = $this->_topMenuClasses;
+
+ $data['title'] = 'FAQ page - '.Website::$generalName;
+
+ $this->append($data);
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/FingerprintreadersController.php b/Application/Controllers/FingerprintreadersController.php
new file mode 100644
index 0000000..c3de0d7
--- /dev/null
+++ b/Application/Controllers/FingerprintreadersController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class FingerprintreadersController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Fingerprintreaders::$select;
+ $worksField = 'fingerprint_works';
+ $interfaceOptions = Fingerprintreaders::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('FingerprintreadersModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['FingerprintreadersModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'fingerprint-reader';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,fingerprint_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'fingerprint_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'fingerprint-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Fingerprint reader';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No fingerprint readers found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'fingerprint_works' => $this->viewArgs['fingerprint_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/GenericController.php b/Application/Controllers/GenericController.php
new file mode 100644
index 0000000..00848c3
--- /dev/null
+++ b/Application/Controllers/GenericController.php
@@ -0,0 +1,1001 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class GenericController extends BaseController
+{
+
+ protected $_controllerName = null; //as in the URL
+
+ public $orderPopup;
+
+ public function __construct($model, $controller, $queryString) {
+
+ $this->_topMenuClasses['hardware'] = " class='currentitem ui-btn-active'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('VendorsModel');
+
+ $popup = new Popup();
+ $popup->name = gtext('sort by');
+
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility');
+
+ switch ($this->controller)
+ {
+ case 'printers':
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'notebooks':
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'scanners':
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'wifi':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('wifi works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','wifi-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'videocards':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('video card works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','video-card-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'threegcards':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('wifi works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','wifi-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'soundcards':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('sound card works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','sound-card-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'webcams':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('webcam works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','webcam-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'bluetooth':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('bluetooth works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','bluetooth-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'acquisitioncards':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'fingerprintreaders':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('fingerprint works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','fingerprint-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'ethernetcards':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('ethernet works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','ethernet-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'sdcardreaders':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('sdcard works'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','sdcard-works');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'modems':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'raidadapters':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ case 'hostcontrollers':
+ $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc'));
+ $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc');
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ default:
+ array_pop($popNames);
+ array_pop($popValues);
+ $popup->itemsName = $popNames;
+ $popup->itemsValue = $popValues;
+ break;
+ }
+
+ $this->orderPopup = $popup;
+
+// $data['howToCompileLabel'] = null;
+ $data['isApproved'] = true;
+
+ $data['tracksHelpLabel'] = $this->getModule(array('devices',$this->controller,'form','it_tracks_users'));
+ $data['howToCompileLabel'] = $this->getModule(array('devices','all','form','how_to_compile'));
+ $data['modelNameLabel'] = $this->getModule(array('devices','all','form','model_name_entry_help_label'));
+ $data['vendoridProductidLabel'] = $this->getModule(array('devices','not_notebook','form','vendorid_productid_label'));
+ $data['descriptionLabel'] = $this->getModule(array('devices','all','form','description_entry_help_label'));
+ $data['preventWifiLabel'] = $this->getModule(array('devices','notebook','form','prevent_wifi_label'));
+
+ $this->append($data);
+ }
+
+ protected function insert($lang = 'en', $token = '')
+ {
+ $this->shift(2);
+
+ if ( strcmp($this->_updating,'no') !== 0 ) $this->redirect('users/login/'.$this->lang,0);
+
+ $clean['token'] = sanitizeAlphanum($token);
+
+ $data['descriptionPreview'] = null; //contains the HTML of the preview of the description entry
+
+ $data['notice'] = null;
+ $data['submission_response'] = 'error';
+
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . " <span class='last_tree_element'>".gtext("Insert")."</span>";
+
+ $this->s['registered']->checkStatus();
+
+ if ($this->s['registered']->status['status'] === 'logged' or Website::$allowAnonymousSubmission === "yes")
+ {
+// if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..');
+
+// if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->checkDist())
+ {
+ $pci_id = $this->request->post('pci_id','','sanitizeAll');
+ $interface = $this->request->post('interface','not-defined','sanitizeAll');
+
+ if ($this->checkVendorId($interface))
+ {
+ if (strcmp($this->m['HardwareModel']->type,'notebook') !== 0)
+ {
+ $this->m['HardwareModel']->values['vendor'] = sanitizeAll($this->m['VendorsModel']->getName($pci_id,$interface));
+
+ $this->m['HardwareModel']->databaseConditions['insert']['+checkUnique'] = 'pci_id|<i>VendorID:ProductID</i> is already present in the database. This means that the device you are trying to insert is already in the database. See here: '.$this->getAlreadyExixtsLink($pci_id);
+ }
+
+ //insert the new device
+ $this->m['HardwareModel']->updateTable('insert');
+
+ if ($this->m['HardwareModel']->queryResult)
+ {
+ if (strcmp($this->controller,'notebooks') === 0)
+ {
+ @session_start();
+ $_SESSION['notebook_inserted'] = 'yes';
+ }
+
+ $data['submission_response'] = 'executed';
+ }
+
+ $this->viewRedirect($this->m['HardwareModel']->lastId);
+
+ }
+ }
+ }
+
+ $data['descriptionPreview'] = $this->getPreview();
+
+ $data['notice'] = $this->m['HardwareModel']->notice;
+
+ $data['submitName'] = "insertAction";
+ $data['hiddenInput'] = null;
+
+ $data['values'] = $this->m['HardwareModel']->getFormValues('insert','sanitizeHtml');
+ $this->append($data);
+
+ if (!isset($_POST['from_client']))
+ {
+ $this->load('top_left');
+ $this->load('license_notice');
+ $this->load('form');
+ $this->load('bottom_left');
+ $this->right();
+ }
+ else
+ {
+ header ("Content-Type:text/xml");
+ $this->clean();
+ $this->load('xml_response');
+ }
+ }
+ else
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/catalogue/".$this->lang,0);
+ }
+ }
+
+ public function del($lang = 'en', $token = '')
+ {
+ header('Content-type: text/html; charset=UTF-8');
+
+ $this->shift(2);
+
+ $this->clean();
+
+ $clean['token'] = sanitizeAlphanum($token);
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token");
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked");
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+ $clean['id_hard'] = $this->request->post('id_hard',0,'forceInt');
+
+ $this->model("DeletionModel");
+
+ $numb = $this->m['DeletionModel']->where(array("id_hard"=>$clean['id_hard'],"created_by"=>$clean['id_user']))->rowNumber();
+
+ if ($numb === 0)
+ {
+ $id_dup = $this->request->post('id_duplicate',0,'forceInt');
+ $object = $this->request->post('object','','sanitizeAll');
+
+ if ($id_dup === 0 and strcmp($object,'duplication') === 0)
+ {
+ echo "you have no specified the device duplicated by this model";
+ }
+ else
+ {
+ $this->m['DeletionModel']->setFields('id_hard:forceInt,object,message,id_duplicate:forceInt','sanitizeAll');
+ $this->m['DeletionModel']->values['created_by'] = $clean['id_user'];
+
+ $this->m['DeletionModel']->updateTable('insert');
+ if ($this->m['DeletionModel']->queryResult)
+ {
+ $hard = new HardwareModel();
+ $c = $hard->where(array('id_hard'=>$clean['id_hard'],'ask_for_del'=>'yes'))->rowNumber();
+ if ($c < 1)
+ {
+ $hard->db->update('hardware','ask_for_del',array('yes'),'id_hard='.$clean['id_hard']);
+ }
+ echo "operation executed";
+ }
+ else
+ {
+ echo "one error occurred, please try later";
+ }
+ }
+ }
+ else
+ {
+ echo "you have already asked for the deletion of this device";
+ }
+ }
+ }
+
+ protected function update($lang = 'en', $token = '')
+ {
+ $this->shift(2);
+
+ $clean['token'] = sanitizeAlphanum($token);
+
+ $data['descriptionPreview'] = null; //contains the HTML of the preview of the description entry
+
+ $data['notice'] = null;
+ $data['submission_response'] = 'error';
+
+ $this->s['registered']->checkStatus();
+
+ if (isset($_POST['id_hard']))
+ {
+ //get the id
+ $clean['id_hard'] = isset($_POST['id_hard']) ? (int)$_POST['id_hard'] : 0;
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..');
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ $deleted = $this->m['HardwareModel']->select("hardware.deleted")->where(array("id_hard"=>$clean['id_hard']))->limit(1)->toList('deleted')->send();
+
+ if (strcmp($deleted[0],'no') === 0)
+ {
+ $ne_name = $this->m['HardwareModel']->getTheModelName($clean['id_hard']);
+ $name = encodeUrl($ne_name);
+ $data['name'] = $name;
+ $data['ne_name'] = $ne_name;
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . $this->getViewLink($clean['id_hard'],$ne_name) . " &raquo; <span class='last_tree_element'>".gtext("Edit")."</span>";
+
+ if (isset($_POST['updateAction']))
+ {
+ if ($this->checkDist())
+ {
+ $pci_id = $this->request->post('pci_id','','sanitizeAll');
+ $interface = $this->request->post('interface','not-defined','sanitizeAll');
+
+ if ($this->checkVendorId($interface))
+ {
+ if (strcmp($this->m['HardwareModel']->type,'notebook') !== 0)
+ {
+ $this->m['HardwareModel']->values['vendor'] = sanitizeAll($this->m['VendorsModel']->getName($pci_id,$interface));
+
+ $this->m['HardwareModel']->databaseConditions['update']['+checkUniqueCompl'] = 'pci_id|<i>VendorID:ProductID</i> is already present in the database. This means that the device you are trying to insert is already in the database. See here: '.$this->getAlreadyExixtsLink($pci_id);
+ }
+
+ //carry out the update database action
+ $this->m['HardwareModel']->updateTable('update');
+
+ if ($this->m['HardwareModel']->queryResult)
+ {
+ $data['submission_response'] = 'executed';
+ }
+ $this->viewRedirect($this->m['HardwareModel']->lastId);
+ }
+ }
+ }
+
+ $data['descriptionPreview'] = $this->getPreview();
+
+ $data['notice'] = $this->m['HardwareModel']->notice;
+
+ $data['id_hard'] = $clean['id_hard'];
+ $data['submitName'] = "updateAction";
+ // echo $this->m['HardwareModel']->fields;
+ $data['values'] = $this->m['HardwareModel']->getFormValues('update','sanitizeHtml');
+ $data['hiddenInput'] = "<input type='hidden' name='id_hard' value='".$clean['id_hard']."'>\n";
+
+ $this->append($data);
+
+ if (!isset($_POST['from_client']))
+ {
+ $this->load('top_left');
+ $this->load('license_notice');
+ $this->load('form');
+ $this->load('bottom_left');
+ $this->right();
+ }
+ else
+ {
+ header ("Content-Type:text/xml");
+ $this->clean();
+ $this->load('xml_response');
+ }
+ }
+ else
+ {
+ $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'deleted..');
+ }
+ }
+ else
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/view/".$this->lang."/".$clean['id_hard'],0);
+ }
+ }
+ else
+ {
+ $this->redirect($this->controller.'/catalogue/'.$this->lang);
+ }
+ }
+
+ //get the preview of the description entry
+ protected function getPreview()
+ {
+ if (isset($_POST['previewAction']))
+ {
+ $this->m['HardwareModel']->result = false;
+ return $this->request->post('description','','sanitizeHtml');
+ }
+ return null;
+ }
+
+ protected function checkVendorId($interface)
+ {
+ if (strcmp($this->m['HardwareModel']->type,'notebook') === 0) return true;
+
+ if (array_key_exists('pci_id',$_POST))
+ {
+ if (strcmp($_POST['pci_id'],"") !== 0)
+ {
+ if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$_POST['pci_id']))
+ {
+ if ($this->m['VendorsModel']->check($_POST['pci_id'],$interface))
+ {
+ return true;
+ }
+ else
+ {
+ $this->m['HardwareModel']->result = false;
+ $this->m['HardwareModel']->notice = "<div class='alert'>Your vendor has not been found.<br /><br />Your vendorid code is not present in the list. If it is a USB device, please choose the right interface (USB), otherwise the system will check inside the PCI ID vendors' list. If it is not a USB device, and you are not sure about the right interface, choose not-defined, and it should work fine (the system will check inside the PCI ID vendors' list if you choose an interface other than USB). <br/><br />If your vendor has not been found yet, please open an issue <a href='".$this->baseUrl."/issues/viewall/".Lang::$current."'>here</a> in order to ask the insertion of your vendor.<br /><br />If your vendor has not been found you could also send your PCI ID or USB ID to the PCI ID repository (http://pciids.sourceforge.net/) or to the USB ID repository (http://www.linux-usb.org/usb-ids.html).</div>\n";
+ return false;
+ }
+ }
+ else
+ {
+ $this->m['HardwareModel']->result = false;
+ $this->m['HardwareModel']->notice = "<div class='alert'><i>VendorID:ProductID</i> has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}</div>";
+ }
+ }
+ else
+ {
+ $this->m['HardwareModel']->result = false;
+ $this->m['HardwareModel']->notice = "<div class='alert'>Vendorid:Productid code not defined..</div>\n";
+ return false;
+ }
+ }
+ $this->m['HardwareModel']->result = false;
+ return false;
+ }
+
+ protected function checkDist()
+ {
+ if (array_key_exists('distribution',$_POST))
+ {
+ if (strcmp($_POST['distribution'],"") !== 0)
+ {
+ if (Distributions::check($_POST['distribution']))
+ {
+ return true;
+ }
+ else
+ {
+ $this->m['HardwareModel']->result = false;
+ $this->m['HardwareModel']->notice = "<div class='alert'>Distribution not allowed..</div>\n";
+ return false;
+ }
+ }
+ else
+ {
+ $this->m['HardwareModel']->result = false;
+ $this->m['HardwareModel']->notice = "<div class='alert'>Distribution not defined..</div>\n";
+ return false;
+ }
+ }
+ $this->m['HardwareModel']->result = false;
+ return false;
+ }
+
+ protected function viewRedirect($id)
+ {
+ $clean['id'] = (int)$id;
+
+ if ($this->m['HardwareModel']->queryResult)
+ {
+ if (!isset($_POST['from_client']))
+ {
+ $name = encodeUrl($this->m['HardwareModel']->getTheModelName($clean['id']));
+ $this->redirect($this->controller.'/view/'.$this->lang.'/'.$clean['id'].'/'.$name.$this->viewStatus);
+ }
+ }
+ }
+
+ //load the view files
+ protected function loadViewAll($viewName = null)
+ {
+ $this->load('top_left');
+ $viewArray = explode(',',$viewName);
+ foreach ($viewArray as $viewFile)
+ {
+ $this->load($viewFile);
+ }
+ $this->load('bottom_left');
+ $this->right();
+ }
+
+ protected function catalogue($lang = 'en')
+ {
+ $data['title'] = $this->controller.' - '.Website::$generalName;
+
+ Params::$nullQueryValue = 'undef';
+
+ $data['tree'] = plural($this->controller);
+
+ //look for a string in the model name or in the other_names if the string is different from undef
+ if (strcmp($this->viewArgs['search_string'],"undef") !== 0)
+ {
+ $nWhere = array(
+ 'OR' => array(
+ 'model' => "like '%".$this->viewArgs['search_string']."%'",
+ 'other_names' => "like '%".$this->viewArgs['search_string']."%'",
+ ),
+ );
+ $this->mod->aWhere($nWhere);
+ }
+
+ $this->mod->aWhere(array("deleted"=>"no","cleared"=>"no"));
+
+ $this->mod->popupBuild();
+ $popup = $this->mod->popupArray;
+ $popup['sort-by'] = $this->orderPopup;
+
+ $this->helper('Popup',$this->controller.'/catalogue/'.$this->lang,$popup,'inclusive','page');
+
+ $this->h['Popup']->allString = gtext("All");
+
+ //create the HTML of the popup
+ $data['popup'] = $this->h['Popup']->render();
+
+ if (strcmp($this->controller,'notebooks') === 0)
+ {
+ $this->mod->popupArray = array();
+ $this->mod->morePopups();
+ $this->mod->popupBuild();
+ $this->h['Popup']->popupArray = $this->mod->popupArray;
+ $data['popupMore'] = $this->h['Popup']->render();
+ }
+
+ $this->mod->orderBy = getOrderByClause($this->viewArgs['sort-by']);
+ $recordNumber = $this->mod->rowNumber();
+
+ $data['recordNumber'] = $recordNumber;
+
+ //load the Pages helper
+ $this->helper('Pages',$this->controller.'/catalogue/'.$this->lang,'page');
+ $page = $this->viewArgs['page'];
+ //set the limit clause
+ $this->mod->limit = $this->h['Pages']->getLimit($page,$recordNumber,10);
+
+ $data['table'] = $this->mod->getAll();
+// echo $this->mod->getQuery();
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+ $data['numberOfPages'] = $this->h['Pages']->getNumbOfPages();
+
+ $data['topNotice'] = $this->getModule(array('devices',$this->controller,'catalogue'));
+
+ $data['popupLabel'] = $this->mod->getPopupLabel($this->viewArgs);
+
+ $data["search_string_form_value"] = strcmp($this->viewArgs['search_string'],Params::$nullQueryValue) === 0 ? "" : $this->viewArgs['search_string'];
+
+ //set search_string to undef to clean the model name filter
+ $temp = $this->viewArgs;
+ $temp['page'] = 1;
+ $temp['search_string'] = "undef";
+ $data['clearViewStatus'] = Url::createUrl($temp);
+
+ $this->append($data);
+
+ $this->loadViewAll('catalogue');
+ }
+
+ protected function passWhoAskedForDeletion($id_hard)
+ {
+ $clean['id_hard'] = (int)$id_hard;
+
+ $deletion = new DeletionModel();
+ $data['deletion'] = $deletion->select()->where(array('id_hard'=>$clean['id_hard']))->send();
+ $data['deletionUsers'] = $deletion->getList($data['deletion'],'created_by');
+
+ $this->append($data);
+ }
+
+ public function cleared($lang = 'en')
+ {
+ $data['title'] = 'page permanently deleted - '.Website::$generalName;
+
+ $data['tree'] = "device page permanently deleted";
+
+ $this->append($data);
+
+ $this->loadViewAll('cleared');
+ }
+
+ protected function view($lang = 'en', $id_hard = 0, $name = null)
+ {
+ $this->shift(3);
+
+ //set the history_page to 1 in the viewStatus
+ $this->viewArgs['history_page'] = 1;
+ $this->buildStatus();
+
+ $clean['id_hard'] = (int)$id_hard;
+ $data['id_hard'] = $clean['id_hard'];
+ $data['ne_name'] = null;
+ $data['name'] = null;
+ $data['tree'] = null;
+ $data['isDeleted'] = false;
+
+ $data['md_javascript'] = "moderator_dialog(\"devicehide\",\"device\");moderator_dialog(\"deviceshow\",\"device\");moderator_dialog(\"deviceapprove\",\"device_app\");moderator_dialog(\"deviceclear\",\"device_cl\");";
+
+ if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ if ($this->mod->checkType($clean['id_hard']))
+ {
+ $this->mod->setWhereQueryClause(array("id_hard" => $clean['id_hard']));
+ $data['table'] = $this->mod->getAll();
+
+ if (count($data['table']) > 0)
+ {
+
+ $data['talk_number'] = $this->m['TalkModel']->select('count(*) as numb,id_hard')->where(array('id_hard'=>$clean['id_hard'],'deleted'=>'no'))->rowNumber();
+
+ $data['ne_name'] = $data['table'][0]['hardware']['model'];
+ $data['name'] = encodeUrl($data['ne_name']);
+ $data['title'] = $data['ne_name'].' - '.Website::$generalName;
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; <span class='last_tree_element'>".$data['ne_name']."</span>";
+ $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']);
+ $data['isApproved'] = strcmp($data['table'][0]['hardware']['approved'],'yes') === 0 ? true : false;
+
+ $data['tracksHelpTop'] = $this->getModule(array('devices',$this->controller,'page','it_tracks_users'));
+ $data['tracksHelpLabel'] = $this->getModule(array('devices',$this->controller,'form','it_tracks_users'));
+
+ $this->passWhoAskedForDeletion($clean['id_hard']);
+ }
+
+ $this->append($data);
+
+ @session_start();
+ if ( isset($_SESSION['notebook_inserted']) and strcmp($this->controller,'notebooks') === 0 )
+ {
+ $viewFilesList = 'suggest_dialog,dialog,page,if_page_deleted,moderator_dialog';
+ unset($_SESSION['notebook_inserted']);
+ }
+ else
+ {
+ $viewFilesList = 'dialog,page,if_page_deleted,moderator_dialog';
+ }
+
+ $this->loadViewAll($viewFilesList);
+ }
+ else
+ {
+// $this->redirect($this->_controller.'/'.);
+ }
+ }
+
+ protected function history($lang = 'en', $id = 0)
+ {
+ $this->shift(2);
+ $clean['id'] = (int)$id;
+ $data['id'] = $clean['id'];
+ $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id']);
+ $data['name'] = encodeUrl($data['ne_name']);
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . $this->getViewLink($clean['id'],$data['ne_name'])." &raquo; <span class='last_tree_element'>".gtext("History")."</span>";
+
+ $data['title'] = 'history - '.Website::$generalName;
+
+ $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id']);
+
+ if ($this->m['HardwareModel']->isCleared($clean['id'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ //get the first revision
+ $res = $this->m['RevisionsModel']->db->select('revisions','id_rev','id_hard='.$clean['id'],null,'id_rev',1);
+ if (count($res) > 0)
+ {
+ $data['firstRev'] = $res[0]['revisions']['id_rev'];
+ }
+
+ $res1 = $this->m['HardwareModel']->db->select('hardware','update_date,updated_by','id_hard='.$clean['id']);
+
+ $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id']));
+
+ //load the Pages helper
+ $this->helper('Pages',$this->controller.'/history/'.$this->lang.'/'.$clean['id'],'history_page');
+ //get the number of records
+ $recordNumber = $this->m['RevisionsModel']->rowNumber();
+ $page = $this->viewArgs['history_page'];
+ //set the limit clause
+ $this->m['RevisionsModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+ $res2 = $this->m['RevisionsModel']->getFields('update_date,updated_by,id_rev');
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+
+ $data['rev1'] = $res1;
+ $data['rev2'] = $res2;
+
+ $this->passWhoAskedForDeletion($clean['id']);
+
+ $this->append($data);
+ $this->loadViewAll('history,if_page_deleted');
+ }
+
+ protected function revision($lang = 'en', $id_rev = 0)
+ {
+ $this->shift(2);
+ $clean['id_rev'] = (int)$id_rev;
+
+ $this->m['RevisionsModel']->setWhereQueryClause(array("id_rev" => $clean['id_rev']));
+ $data['table'] = $this->m['RevisionsModel']->getAll();
+
+ $data['id_hard'] = 0;
+ $data['updated_by'] = null;
+ $data['update_date'] = null;
+ $data['name'] = null;
+ $data['ne_name'] = null;
+ $data['tree'] = null;
+ $data['isDeleted'] = false;
+ $data['title'] = 'revision - '.Website::$generalName;
+
+ if (count($data['table']) > 0)
+ {
+ $data['id_hard'] = (int)$data['table'][0]['revisions']['id_hard'];
+
+ if ($this->m['HardwareModel']->isCleared($data['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($data['id_hard']);
+ $data['name'] = encodeUrl($data['ne_name']);
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . $this->getViewLink($data['id_hard'],$data['ne_name'])." &raquo; " . $this->getHistoryLink($data['id_hard']) . " &raquo; <span class='last_tree_element'>".gtext("Revision")."</span>";
+
+ $data['updated_by'] = $data['table'][0]['revisions']['updated_by'];
+ $data['update_date'] = $data['table'][0]['revisions']['update_date'];
+
+ $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($data['id_hard']);
+ }
+
+ $this->append($data);
+ $this->loadViewAll('page');
+ }
+
+ protected function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ $this->shift(3);
+
+ $data['title'] = 'differences - '.Website::$generalName;
+
+ $clean['id_hard'] = (int)$id_hard;
+ $clean['id_rev'] = (int)$id_rev;
+
+ $data['id_hard'] = $clean['id_hard'];
+ $ne_name = $this->m['HardwareModel']->getTheModelName((int)$data['id_hard']);
+ $data['name'] = encodeUrl($ne_name);
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . $this->getViewLink($data['id_hard'],$ne_name)." &raquo; " . $this->getHistoryLink($clean['id_hard']) . " &raquo; <span class='last_tree_element'>".gtext("Differences")."</span>";
+
+ $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']);
+ $data['showDiff'] = false;
+
+ $diffArray = array();
+
+ if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ if (strcmp($clean['id_hard'],0) !== 0 and strcmp($clean['id_rev'],0) !== 0)
+ {
+ $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id_hard'],'id_rev' => '<='.$clean['id_rev']));
+ $this->m['RevisionsModel']->limit = 2;
+ $res = $this->m['RevisionsModel']->getAll();
+ if (count($res) > 1)
+ {
+ $newArray = $res[0]['revisions'];
+ $oldArray = $res[1]['revisions'];
+
+ $data['update_new'] = $newArray['update_date'];
+ $data['update_old'] = $oldArray['update_date'];
+ $data['updated_by'] = $newArray['updated_by'];
+
+ $diffArray = $this->mod->getDiffArray($oldArray, $newArray);
+
+ $data['showDiff'] = true;
+ }
+ }
+ else if (strcmp($clean['id_hard'],0) !== 0 and strcmp($clean['id_rev'],0) === 0)
+ {
+ $this->mod->setWhereQueryClause(array('id_hard' => $clean['id_hard']));
+ $lastRes = $this->mod->getAll();
+
+ if (count($lastRes) > 0)
+ {
+ $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id_hard']));
+ $this->m['RevisionsModel']->limit = 1;
+ $revRes = $this->m['RevisionsModel']->getAll();
+
+ if (count($revRes) > 0)
+ {
+ $newArray = $lastRes[0]['hardware'];
+ $oldArray = $revRes[0]['revisions'];
+
+ $data['update_new'] = $newArray['update_date'];
+ $data['update_old'] = $oldArray['update_date'];
+ $data['updated_by'] = $newArray['updated_by'];
+
+ $diffArray = $this->mod->getDiffArray($oldArray, $newArray);
+
+ $data['showDiff'] = true;
+ }
+ }
+
+ }
+
+ $data['fieldsWithBreaks'] = $this->mod->fieldsWithBreaks;
+ $data['diffArray'] = $diffArray;
+
+ $this->append($data);
+ $this->loadViewAll('differences');
+ }
+
+ protected function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ $this->shift(3);
+
+ $data['title'] = 'make current - '.Website::$generalName;
+
+ $clean['token'] = sanitizeAlphanum($token);
+
+ $clean['id_rev'] = (int)$id_rev;
+ $clean['id_hard'] = (int)$this->m['RevisionsModel']->getIdHard($clean['id_rev']);
+
+ if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ if ($clean['id_hard'] !== 0)
+ {
+ $deleted = $this->m['HardwareModel']->select("hardware.deleted")->where(array("id_hard"=>$clean['id_hard']))->limit(1)->toList('deleted')->send();
+
+ $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']);
+
+ $data['id_rev'] = $clean['id_rev'];
+ $data['id_hard'] = $clean['id_hard'];
+ $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id_hard']);
+ $data['name'] = encodeUrl($data['ne_name']);
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . $this->getViewLink($data['id_hard'],$data['ne_name'])." &raquo; " . $this->getHistoryLink($clean['id_hard']) . " &raquo; <span class='last_tree_element'>make current</span>";
+
+ $data['notice'] = null;
+ $this->s['registered']->checkStatus();
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..');
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if ($this->m['HardwareModel']->isDeleted($clean['id_hard'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'this device page has been deleted..');
+
+ if (isset($_POST['confirmAction']))
+ {
+ $this->m['HardwareModel']->makeCurrent($clean['id_rev']);
+
+ $this->viewRedirect($this->m['HardwareModel']->lastId);
+
+ $data['notice'] = $this->m['HardwareModel']->notice;
+ }
+
+ $this->append($data);
+ $this->loadViewAll('climb');
+ }
+ else
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/view/".$this->lang."/".$clean['id_hard'],0);
+ }
+ }
+ }
+
+ protected function talk($lang = 'en', $id_hard = 0, $token = 'token')
+ {
+ $this->shift(3);
+
+ $this->m['TalkModel']->setFields('title,message','sanitizeAll');
+
+ $data['title'] = 'talk - '.Website::$generalName;
+
+ $clean['token'] = sanitizeAlphanum($token);
+ $clean['id_hard'] = (int)$id_hard;
+ $data['id_hard'] = $clean['id_hard'];
+ $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id_hard']);
+ $data['name'] = encodeUrl($data['ne_name']);
+ $data['tree'] = $this->getSpecHardLink() . " &raquo; " . $this->getViewLink($clean['id_hard'],$data['ne_name'])." &raquo; <span class='last_tree_element'>".gtext("Talk")."</span>";
+
+ $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']);
+
+ if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0);
+
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..');
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if ($this->m['HardwareModel']->isDeleted($clean['id_hard'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'this device page has been deleted..');
+
+ $this->m['TalkModel']->values['created_by'] = $this->s['registered']->status['id_user'];
+ $this->m['TalkModel']->values['id_hard'] = $clean['id_hard'];
+
+ $this->m['TalkModel']->updateTable('insert');
+ }
+ }
+
+ //if preview
+ if (isset($_POST['previewAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..');
+
+ $data['preview_message'] = $this->request->post('message','','sanitizeHtml');
+ $this->m['TalkModel']->result = false;
+ }
+ }
+
+ $data['table'] = $this->m['TalkModel']->select()->where(array('id_hard'=>$clean['id_hard']))->orderBy('id_talk')->send();
+
+ $data['values'] = $this->m['TalkModel']->getFormValues('insert','sanitizeHtml');
+ $data['notice'] = $this->m['TalkModel']->notice;
+
+// javascript for moderator
+ $data['md_javascript'] = "moderator_dialog(\"hide\",\"talk\");moderator_dialog(\"show\",\"talk\");";
+ $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_hard'];
+
+ $this->passWhoAskedForDeletion($clean['id_hard']);
+
+ $this->append($data);
+ $this->loadViewAll('talk,if_page_deleted,moderator_dialog');
+ }
+
+ //get the link to the device page from vendorid:productid code
+ protected function getAlreadyExixtsLink($code)
+ {
+ $hw = new HardwareModel();
+ $info = $hw->getModelByCode($code);
+
+ if ($info)
+ {
+ return $this->getViewLink($info['id_hard'],$info['model'],Hardware::getControllerFromType($info['type']));
+ }
+ return '';
+ }
+
+ protected function getViewLink($id,$ne_name,$controller = null)
+ {
+ $contr = isset($controller) ? $controller : $this->controller;
+
+ return "<a href='".$this->baseUrl.'/'.$contr.'/view/'.$this->lang.'/'.$id.'/'.encodeUrl($ne_name).$this->viewStatus."'>".$ne_name."</a>";
+ }
+
+ protected function getHistoryLink($id)
+ {
+ return "<a href='".$this->baseUrl.'/'.$this->controller.'/history/'.$this->lang.'/'.$id.'/'.$this->viewStatus."'>".gtext("History")."</a>";
+ }
+
+ protected function getSpecHardLink()
+ {
+ return "<a href='".$this->baseUrl.'/'.$this->controller.'/catalogue/'.$this->lang.$this->viewStatus."'>".plural($this->controller)."</a>";
+ }
+
+ protected function goToLoginForm()
+ {
+ if ($this->querySanitized)
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/".$this->action.Url::createUrl($this->_queryString));
+ }
+ else
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=home/index".Url::createUrl($this->_queryString));
+ }
+ }
+
+}
diff --git a/Application/Controllers/HardwareController.php b/Application/Controllers/HardwareController.php
new file mode 100644
index 0000000..a75c4fe
--- /dev/null
+++ b/Application/Controllers/HardwareController.php
@@ -0,0 +1,43 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HardwareController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['hardware'] = " class='currentitem ui-btn-active'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $data['title'] = 'hardware - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->load('left');
+ $this->right();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/HelpController.php b/Application/Controllers/HelpController.php
new file mode 100644
index 0000000..658b547
--- /dev/null
+++ b/Application/Controllers/HelpController.php
@@ -0,0 +1,41 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HelpController extends WikiController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ $this->_topMenuClasses['help'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->_topMenuClasses['wiki'] = null;
+
+ $data['tm'] = $this->_topMenuClasses;
+
+ $data['title'] = 'help page - '.Website::$generalName;
+
+ $this->append($data);
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/HistoryController.php b/Application/Controllers/HistoryController.php
new file mode 100644
index 0000000..e50b7e1
--- /dev/null
+++ b/Application/Controllers/HistoryController.php
@@ -0,0 +1,650 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HistoryController extends BaseController
+{
+
+ public static $typeTable = array(
+ 'message' => 'message',
+ 'talk' => 'talk',
+ 'user' => 'user',
+ 'issue' => 'issue',
+ 'wiki_talk' => 'wiki talk',
+ 'page' => 'wiki page',
+ 'page_del' => 'wiki page',
+ 'device' => 'device page',
+ 'device_app' => 'device page',
+ 'device_cl' => 'device page',
+ 'issue_del' => 'issue', //registered
+ 'issue_ins' => 'issue', //registered
+ 'message_ins' => 'message', //registered
+ 'talk_ins' => 'talk', //registered
+ 'wiki_talk_ins' => 'wiki talk',//registered
+ 'hardware' => 'hardware', //registered
+ 'wiki' => 'wiki', //registered
+ );
+
+ public static $actionTable = array(
+ 'hide' => 'hide',
+ 'show' => 'show',
+ 'block' => 'block',
+ 'unblock' => 'unblock',
+ 'open' => 'open',
+ 'close' => 'close',
+ 'pageblock' => 'block',
+ 'pageunblock' => 'unblock',
+ 'pagehide' => 'hide',
+ 'pageshow' => 'show',
+ 'devicehide' => 'hide',
+ 'deviceshow' => 'show',
+ 'deviceapprove' => 'approve',
+ 'deviceclear' => 'perm deleted',
+ 'issuehide' => 'hide',
+ 'issueshow' => 'show',
+ 'insert' => 'insert', //registered
+ 'update' => 'update', //registered
+ );
+
+ protected $strings = array(
+
+ 'hide' => array(
+
+ 'action' => 'hide',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The message has been hidden. Just reload the page',
+ 'error_string' => 'Error: the message is already hidden',
+
+ ),
+
+ 'show' => array(
+
+ 'action' => 'show',
+ 'check_status' => 'yes',
+ 'to_status' => 'no',
+ 'exec_string' => 'The message is no more hidden. Just reload the page',
+ 'error_string' => 'Error: the message is already visible',
+
+ ),
+
+ 'block' => array(
+
+ 'action' => 'block',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The user has been blocked. Just reload the page',
+ 'error_string' => 'Error: the user is already blocked',
+
+ ),
+
+ 'unblock' => array(
+
+ 'action' => 'unblock',
+ 'check_status' => 'yes',
+ 'to_status' => 'no',
+ 'exec_string' => 'The user is no more blocked. Just reload the page',
+ 'error_string' => 'Error: the user is already un-blocked',
+
+ ),
+
+ 'open' => array(
+
+ 'action' => 'open',
+ 'check_status' => 'closed',
+ 'to_status' => 'opened',
+ 'exec_string' => 'The issue has been opened. Just reload the page',
+ 'error_string' => 'Error: the issue is already opened',
+
+ ),
+
+ 'close' => array(
+
+ 'action' => 'close',
+ 'check_status' => 'opened',
+ 'to_status' => 'closed',
+ 'exec_string' => 'The issue has been closed. Just reload the page',
+ 'error_string' => 'Error: the issue is already closed',
+
+ ),
+
+ 'pageblock' => array(
+
+ 'action' => 'pageblock',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The wiki page has been blocked. Just reload the page',
+ 'error_string' => 'Error: the wiki page is already blocked',
+
+ ),
+
+ 'pageunblock' => array(
+
+ 'action' => 'pageunblock',
+ 'check_status' => 'yes',
+ 'to_status' => 'no',
+ 'exec_string' => 'The wiki page is no more blocked. Just reload the page',
+ 'error_string' => 'Error: the wiki page is already un-blocked',
+
+ ),
+
+ 'pagehide' => array(
+
+ 'action' => 'pagehide',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The wiki page has been hidden. Just reload the page',
+ 'error_string' => 'Error: the wiki page is already hidden',
+
+ ),
+
+ 'pageshow' => array(
+
+ 'action' => 'pageshow',
+ 'check_status' => 'yes',
+ 'to_status' => 'no',
+ 'exec_string' => 'The wiki page is no more hidden. Just reload the page',
+ 'error_string' => 'Error: the wiki page is already visible',
+
+ ),
+
+ 'issuehide' => array(
+
+ 'action' => 'issuehide',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The issue has been hidden. Just reload the page',
+ 'error_string' => 'Error: the issue is already hidden',
+
+ ),
+
+ 'issueshow' => array(
+
+ 'action' => 'issueshow',
+ 'check_status' => 'yes',
+ 'to_status' => 'no',
+ 'exec_string' => 'The issue is no more hidden. Just reload the page',
+ 'error_string' => 'Error: the issue is already visible',
+
+ ),
+
+ 'devicehide' => array(
+
+ 'action' => 'devicehide',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The device page has been hidden. Just reload the page',
+ 'error_string' => 'Error: the device page is already hidden',
+ 'allowed_only_if' => array('cleared'=>'no'),
+
+ ),
+
+ 'deviceshow' => array(
+
+ 'action' => 'deviceshow',
+ 'check_status' => 'yes',
+ 'to_status' => 'no',
+ 'exec_string' => 'The device page is no more hidden. Just reload the page',
+ 'error_string' => 'Error: the device page is already visible',
+ 'allowed_only_if' => array('cleared'=>'no'),
+
+ ),
+
+ 'deviceapprove' => array(
+
+ 'action' => 'deviceapprove',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The device page has been approved. Just reload the page',
+ 'error_string' => 'Error: the device page is already approved',
+ 'allowed_only_if' => array('cleared'=>'no'),
+
+ ),
+
+ 'deviceclear' => array(
+
+ 'action' => 'deviceclear',
+ 'check_status' => 'no',
+ 'to_status' => 'yes',
+ 'exec_string' => 'The device page has been permanently deleted. Just reload the page',
+ 'error_string' => 'Error: the device page has already been permanently deleted',
+ 'method' => 'permanentlyDelete',
+
+ ),
+ );
+
+ protected $types = array(
+
+ 'message' => array(
+
+ 'clean_type' => 'message',
+ 'model_name' => 'MessagesModel',
+ 'id_name' => 'id_mes',
+ 'field_name' => 'deleted',
+ 'actions' => array('hide','show'),
+ 'group' => 'moderator',
+
+ ),
+
+ 'talk' => array(
+
+ 'clean_type' => 'talk',
+ 'model_name' => 'TalkModel',
+ 'id_name' => 'id_talk',
+ 'field_name' => 'deleted',
+ 'actions' => array('hide','show'),
+ 'group' => 'moderator',
+
+ ),
+
+ 'user' => array(
+
+ 'clean_type' => 'user',
+ 'model_name' => 'UsersModel',
+ 'id_name' => 'id_user',
+ 'field_name' => 'blocked',
+ 'actions' => array('block','unblock'),
+ 'group' => 'admin',
+
+ ),
+
+ 'issue' => array(
+
+ 'clean_type' => 'issue',
+ 'model_name' => 'IssuesModel',
+ 'id_name' => 'id_issue',
+ 'field_name' => 'status',
+ 'actions' => array('open','close'),
+ 'group' => 'moderator',
+ 'types_to_show' => 'issue,issue_del',
+
+ ),
+
+ 'wiki_talk' => array(
+
+ 'clean_type' => 'wiki_talk',
+ 'model_name' => 'WikitalkModel',
+ 'id_name' => 'id_talk',
+ 'field_name' => 'deleted',
+ 'actions' => array('hide','show'),
+ 'group' => 'moderator',
+
+ ),
+
+ //page blocked or not
+ 'page' => array(
+
+ 'clean_type' => 'page',
+ 'model_name' => 'WikiModel',
+ 'id_name' => 'id_wiki',
+ 'field_name' => 'blocked',
+ 'actions' => array('pageblock','pageunblock'),
+ 'group' => 'admin',
+ 'types_to_show' => 'page,page_del',
+
+ ),
+
+ //page hidden or not
+ 'page_del' => array(
+
+ 'clean_type' => 'page_del',
+ 'model_name' => 'WikiModel',
+ 'id_name' => 'id_wiki',
+ 'field_name' => '-deleted',
+ 'actions' => array('pagehide','pageshow'),
+ 'group' => 'admin',
+
+ ),
+
+ //issue hidden or not
+ 'issue_del' => array(
+
+ 'clean_type' => 'issue_del',
+ 'model_name' => 'IssuesModel',
+ 'id_name' => 'id_issue',
+ 'field_name' => 'deleted',
+ 'actions' => array('issuehide','issueshow'),
+ 'group' => 'moderator',
+
+ ),
+
+ //device page blocked or not
+ 'device' => array(
+
+ 'clean_type' => 'device',
+ 'model_name' => 'HardwareModel',
+ 'id_name' => 'id_hard',
+ 'field_name' => '-deleted',
+ 'actions' => array('devicehide','deviceshow'),
+ 'group' => 'admin',
+ 'types_to_show' => 'device_app,device,device_cl',
+
+ ),
+
+ //device page approved
+ 'device_app' => array(
+
+ 'clean_type' => 'device_app',
+ 'model_name' => 'HardwareModel',
+ 'id_name' => 'id_hard',
+ 'field_name' => 'approved',
+ 'actions' => array('deviceapprove'),
+ 'group' => 'admin',
+
+ ),
+
+ //device page cleared
+ 'device_cl' => array(
+
+ 'clean_type' => 'device_cl',
+ 'model_name' => 'HardwareModel',
+ 'id_name' => 'id_hard',
+ 'field_name' => 'cleared',
+ 'actions' => array('deviceclear'),
+ 'group' => 'admin',
+
+ ),
+ );
+
+ public function __construct($model, $controller, $queryString)
+ {
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('HistoryModel');
+ $this->model('UsersModel');
+
+ }
+
+ public function hide($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'hide');
+ }
+
+ public function show($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'show');
+ }
+
+ public function block($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'block');
+ }
+
+ public function unblock($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'unblock');
+ }
+
+ public function open($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'open');
+ }
+
+ public function close($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'close');
+ }
+
+ public function pageblock($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'pageblock');
+ }
+
+ public function pageunblock($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'pageunblock');
+ }
+
+ public function pagehide($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'pagehide');
+ }
+
+ public function pageshow($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'pageshow');
+ }
+
+ public function devicehide($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'devicehide');
+ }
+
+ public function deviceshow($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'deviceshow');
+ }
+
+ public function deviceapprove($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'deviceapprove');
+ }
+
+ public function deviceclear($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'deviceclear');
+ }
+
+ public function issuehide($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'issuehide');
+ }
+
+ public function issueshow($lang = 'en', $token = '')
+ {
+ $this->generic($lang, $token, 'issueshow');
+ }
+
+ protected function generic($lang = 'en', $token = '', $action = 'hide')
+ {
+ header('Content-type: text/html; charset=UTF-8');
+
+ $this->shift(2);
+
+ $this->clean();
+
+ $clean['token'] = sanitizeAlphanum($token);
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token");
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked");
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+ $clean['id'] = $this->request->post('id',0,'forceInt');
+ $type = $this->request->post('type','','sanitizeAll');
+ $message = $this->request->post('message','');
+
+ $modelName = 'error';
+
+ if (array_key_exists($type,$this->types))
+ {
+ if (in_array($action,$this->types[$type]['actions']))
+ {
+ $clean['group'] = $this->types[$type]['group'];
+ if (in_array($clean['group'],$this->s['registered']->status['groups']))
+ {
+ $modelName = $this->types[$type]['model_name'];
+ $clean['type'] = $this->types[$type]['clean_type'];
+ $clean['id_name'] = $this->types[$type]['id_name'];
+ $clean['field_name'] = $this->types[$type]['field_name'];
+
+ //load the right model
+ $this->model($modelName);
+ $model = $this->m[$modelName];
+
+ $model->select()->where(array($clean['id_name'] => $clean['id'],$clean['field_name'] => $this->strings[$action]['check_status']));
+
+ if (isset($this->strings[$action]['allowed_only_if']) and is_array($this->strings[$action]['allowed_only_if']))
+ {
+ $model->aWhere($this->strings[$action]['allowed_only_if']);
+ }
+
+ $count = $model->rowNumber();
+
+ if ($count > 0)
+ {
+ if (eg_strlen($message) < 500)
+ {
+ //drop the - char if present
+ $clean['field_name'] = str_replace('-',null,$clean['field_name']);
+
+ //hide the message
+ $model->values = array($clean['field_name'] => $this->strings[$action]['to_status']);
+
+ if (isset($this->strings[$action]['method']))
+ {
+ call_user_func(array($model, $this->strings[$action]['method']),$clean['id']);
+ }
+ else
+ {
+ $model->pUpdate($clean['id']);
+ }
+
+ if ($model->queryResult)
+ {
+ $this->m['HistoryModel']->setFields('id:forceInt,type,message','sanitizeAll');
+ $this->m['HistoryModel']->values['created_by'] = $clean['id_user'];
+ $this->m['HistoryModel']->values['gr'] = $clean['group'];
+ $this->m['HistoryModel']->values['action'] = $this->strings[$action]['action'];
+ $this->m['HistoryModel']->updateTable('insert');
+
+ echo $this->strings[$action]['exec_string'];
+ }
+ else
+ {
+ echo "error: one error occurred, please retry later";
+ }
+ }
+ else
+ {
+ echo "error: the message has too many characters or wrong type";
+ }
+ }
+ else
+ {
+ echo $this->strings[$action]['error_string'];
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public function viewall($lang = 'en', $type = 'message', $id = 0)
+ {
+ header('Content-type: text/html; charset=UTF-8');
+
+ $this->shift(3);
+
+ $this->clean();
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user']))
+ {
+ $clean['id'] = (int)$id;
+ if (array_key_exists($type,$this->types))
+ {
+ $clean['group'] = $this->types[$type]['group'];
+ if (in_array($clean['group'],$this->s['registered']->status['groups']))
+ {
+ $clean['type'] = $this->types[$type]['clean_type'];
+ $clean['typeInWhereClause'] = "'".$clean['type']."'";
+
+ if (array_key_exists('types_to_show',$this->types[$type]))
+ {
+ $clean['typeInWhereClause'] = "'".implode("','",explode(',',$this->types[$type]['types_to_show']))."'";
+ }
+
+ switch ($clean['type'])
+ {
+ case 'user':
+ $data['object'] = 'user';
+ $data['box_class'] = 'details_of_actions_inner_user';
+ break;
+ case 'page':
+ $data['object'] = 'wiki page';
+ $data['box_class'] = 'details_of_actions_inner_user';
+ break;
+ case 'device':
+ $data['object'] = 'device page';
+ $data['box_class'] = 'details_of_actions_inner_user';
+ break;
+ case 'device_app':
+ $data['object'] = 'device page';
+ $data['box_class'] = 'details_of_actions_inner_user';
+ break;
+ case 'page_del':
+ $data['object'] = 'wiki page';
+ $data['box_class'] = 'details_of_actions_inner_user';
+ break;
+ case 'issue':
+ $data['object'] = 'issue';
+ $data['box_class'] = 'details_of_actions_inner_user';
+ break;
+ default:
+ $data['object'] = 'message';
+ $data['box_class'] = 'details_of_actions_inner';
+ break;
+ }
+
+ $data['res'] = $this->m['HistoryModel']
+ ->select()
+ ->where(
+ array
+ (
+ 'id'=>$clean['id'],
+ 'type'=>"in(".$clean['typeInWhereClause'].")",
+ 'gr'=>$clean['group'])
+ )
+ ->send();
+// echo $this->m['HistoryModel']->getQuery();
+
+ $data['md_action'] = array(
+ 'hide' => 'hidden',
+ 'show' => 'restored',
+ 'block' => 'blocked',
+ 'unblock' => 'un-blocked',
+ 'open' => 'opened again',
+ 'close' => 'closed',
+ 'pageblock' => 'blocked',
+ 'pageunblock' => 'un-blocked',
+ 'pagehide' => 'hidden',
+ 'pageshow' => 'restored',
+ 'devicehide' => 'hidden',
+ 'deviceshow' => 'restored',
+ 'deviceapprove' => 'approved',
+ 'deviceclear' => 'permanently deleted',
+ 'issuehide' => 'hidden',
+ 'issueshow' => 'restored',
+ );
+
+ $this->append($data);
+ $this->load('viewall');
+ }
+ }
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/HomeController.php b/Application/Controllers/HomeController.php
new file mode 100644
index 0000000..3c47547
--- /dev/null
+++ b/Application/Controllers/HomeController.php
@@ -0,0 +1,47 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HomeController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['home'] = " class='currentitem ui-btn-active'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $data['title'] = 'home - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function index($lang = 'en')
+ {
+// get the news container
+ $data['htmlNewsBox'] = $this->getModule(array('top_news'));
+
+ $this->append($data);
+ $this->cleverLoad('left');
+ $this->right($lang);
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/HostcontrollersController.php b/Application/Controllers/HostcontrollersController.php
new file mode 100644
index 0000000..3655aa1
--- /dev/null
+++ b/Application/Controllers/HostcontrollersController.php
@@ -0,0 +1,137 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HostcontrollersController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Hostcontrollers::$select;
+ $worksField = 'compatibility';
+ $interfaceOptions = Hostcontrollers::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('HostcontrollersModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['HostcontrollersModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'host-controller';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->strongConditions['insert']["+++++checkIsStrings|".Hostcontrollers::subtypeList()] = "subtype";
+
+ $this->m['HardwareModel']->strongConditions['update'] = $this->m['HardwareModel']->strongConditions['insert'];
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,subtype,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'subtype:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility-desc',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Host controller';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No Host Controller found";
+
+ $data['subtypeHelpLabel'] = "PCMCIA, USB, Firewire, HECI";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'subtype' => $this->viewArgs['subtype'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/ImageController.php b/Application/Controllers/ImageController.php
new file mode 100644
index 0000000..6774b4a
--- /dev/null
+++ b/Application/Controllers/ImageController.php
@@ -0,0 +1,41 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ImageController extends Controller {
+
+ public function captcha()
+ {
+ session_start();
+
+ $params = array(
+ 'fontPath' => ROOT.'/External/Fonts/FreeFont/FreeMono.ttf',
+ 'boxHeight' => 100,
+ 'boxWidth' => 200,
+ 'undulation'=> true,
+ 'align' => false
+ );
+
+ $captcha = new Image_Gd_Captcha($params);
+ $captcha->render();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/IssuesController.php b/Application/Controllers/IssuesController.php
new file mode 100644
index 0000000..6f7b74b
--- /dev/null
+++ b/Application/Controllers/IssuesController.php
@@ -0,0 +1,203 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class IssuesController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['issues'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('IssuesModel');
+ $this->model('MessagesModel');
+ $this->model('UsersModel');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'token:sanitizeAlphanum' => $this->token,
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'issues - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function viewall($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->m['IssuesModel']->setFields('title,topic,priority,message','sanitizeAll');
+
+ $data['preview_message'] = null;
+
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..');
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ //set the page to 1 in the viewStatus
+ $this->viewArgs['page'] = 1;
+ $this->buildStatus();
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+
+ $this->m['IssuesModel']->values['created_by'] = $clean['id_user'];
+ $this->m['IssuesModel']->values['status'] = 'opened';
+ $this->m['IssuesModel']->values['update_date'] = date('Y-m-d H:i:s');
+ $this->m['IssuesModel']->updateTable('insert');
+
+ }
+ }
+
+ //if preview
+ if (isset($_POST['previewAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..');
+
+ $data['preview_message'] = $this->request->post('message','','sanitizeHtml');
+ $this->m['IssuesModel']->result = false;
+ }
+ }
+
+ $data['notice'] = $this->m['IssuesModel']->notice;
+
+ $this->viewArgs['token'] = $this->token;
+ $this->buildStatus();
+
+ $this->m['IssuesModel']->setForm('issues/viewall/'.$this->lang.$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit'));
+
+ $values = $this->m['IssuesModel']->getFormValues('insert','sanitizeHtml');
+
+ $data['form'] = $this->m['IssuesModel']->form->render($values);
+
+ //load the Pages helper
+ $this->helper('Pages',$this->controller.'/viewall/'.$this->lang,'page');
+ //get the number of records
+ $this->m['IssuesModel']->from('issues')->left('messages')->using('id_issue')->groupBy('issues.id_issue')->orderBy('issues.update_date desc');
+
+ if ($this->islogged === "no")
+ {
+ $this->m['IssuesModel']->where(array("n!issues.deleted"=>"no"));
+ }
+
+ $recordNumber = $this->m['IssuesModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+ //set the limit clause
+ $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+ $data['table'] = $this->m['IssuesModel']->select('issues.*,messages.message,count(*) as numb_mess')->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-4,10);
+
+ $this->append($data);
+ $this->load('viewall');
+ $this->right();
+ }
+
+ public function view($lang = 'en', $id_issue = 0)
+ {
+ $this->m['MessagesModel']->setFields('message','sanitizeAll');
+
+ $this->shift(2);
+
+ $clean['id_issue'] = (int)$id_issue;
+ $data['id_issue'] = $clean['id_issue'];
+ $data['preview_message'] = null;
+
+ //if submit
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..');
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+
+ $this->m['MessagesModel']->values['created_by'] = $clean['id_user'];
+ $this->m['MessagesModel']->values['id_issue'] = $clean['id_issue'];
+ $this->m['MessagesModel']->updateTable('insert');
+
+ if ($this->m['MessagesModel']->queryResult)
+ {
+ $this->m['IssuesModel']->values = array('update_date' => date('Y-m-d H:i:s'));
+ $this->m['IssuesModel']->update($clean['id_issue']);
+
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Refresh: 0;url='.$domainName.$_SERVER['REQUEST_URI']);
+ exit;
+ }
+ }
+ }
+
+ //if preview
+ if (isset($_POST['previewAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..');
+
+ $data['preview_message'] = $this->request->post('message','','sanitizeHtml');
+ $this->m['MessagesModel']->result = false;
+ }
+ }
+
+ $data['notice'] = $this->m['MessagesModel']->notice;
+
+ $this->viewArgs['token'] = $this->token;
+ $this->buildStatus();
+
+ //create the form
+ $this->m['MessagesModel']->setForm('issues/view/'.$this->lang."/".$clean['id_issue'].$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit'));
+
+ $values = $this->m['MessagesModel']->getFormValues('insert','sanitizeHtml');
+
+ $data['form'] = $this->m['MessagesModel']->form->render($values);
+
+ //retrieve the values from the table
+ $data['table'] = $this->m['IssuesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send();
+
+// javascript for moderator
+ $data['md_javascript'] = "moderator_dialog(\"hide\",\"message\");moderator_dialog(\"show\",\"message\");moderator_dialog(\"open\",\"issue\");moderator_dialog(\"close\",\"issue\");moderator_dialog(\"issuehide\",\"issue_del\");moderator_dialog(\"issueshow\",\"issue_del\");";
+ $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_issue'];
+
+ if (count($data['table']) > 0)
+ {
+ $data['messages'] = $this->m['MessagesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send();
+
+ $this->append($data);
+ $this->load('view');
+ $this->load('moderator_dialog');
+ $this->right();
+ }
+ }
+
+}
diff --git a/Application/Controllers/MeetController.php b/Application/Controllers/MeetController.php
new file mode 100644
index 0000000..808b951
--- /dev/null
+++ b/Application/Controllers/MeetController.php
@@ -0,0 +1,338 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class MeetController extends BaseController
+{
+ private $whereArray = array(
+ 'has_confirmed' => 0,
+ 'deleted' => 'no',
+ );
+
+ public function __construct($model, $controller, $queryString)
+ {
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('ProfileModel');
+ $this->model('HardwareModel');
+ $this->model('IssuesModel');
+ $this->model('MessagesModel');
+ $this->model('TalkModel');
+ $this->model('WikiModel');
+ $this->model('WikitalkModel');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'meet - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ //public page of the user
+ public function user($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "meet ".$clean['user']." - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']);
+ $data['meet_id_user'] = $clean['id_user'];
+
+ $data['isBlocked'] = $this->m['UsersModel']->isBlocked($clean['id_user']);
+
+ $this->whereArray['username'] = $clean['user'];
+
+ $data['table'] = $this->m['ProfileModel']->select('regusers.e_mail,regusers.username,profile.*')->from('regusers inner join profile')->on('regusers.id_user = profile.created_by')->where($this->whereArray)->send();
+
+ $data['meet_username'] = $clean['user'];
+
+// javascript for moderator
+ $data['md_javascript'] = "moderator_dialog(\"block\",\"user\");moderator_dialog(\"unblock\",\"user\");";
+
+ $this->append($data);
+ $this->load('meet');
+ $this->load('moderator_dialog');
+ $this->right();
+ }
+
+ }
+
+ //contributions menu
+ public function contributions($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = $clean['user']." contributions - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']);
+
+ $this->whereArray['username'] = $clean['user'];
+
+ $data['meet_username'] = $clean['user'];
+
+ $hardNumb = $this->m['HardwareModel']->select()->where($this->whereArray)->rowNumber();
+
+ $issuesNumb = $this->m['IssuesModel']->select('id_issue')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber();
+
+ $messNumb = $this->m['MessagesModel']->select('id_mes,messages.id_issue,messages.creation_date')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber();
+
+ $talkNumb = $this->m['TalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber();
+
+ $wikiNumb = $this->m['WikiModel']->where($this->whereArray)->rowNumber();
+
+ $wikiTalkNumb = $this->m['WikitalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber();
+
+ $data['hasHardware'] = $hardNumb > 0 ? true : false;
+ $data['hasIssues'] = $issuesNumb > 0 ? true : false;
+ $data['hasMessages'] = $messNumb > 0 ? true : false;
+ $data['hasTalk'] = $talkNumb > 0 ? true : false;
+ $data['hasWiki'] = $wikiNumb > 0 ? true : false;
+ $data['hasWikiTalk'] = $wikiTalkNumb > 0 ? true : false;
+
+ $this->append($data);
+ $this->load('contributions');
+ $this->right();
+ }
+
+ }
+
+ //hardware contributions
+ public function hardware($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "hardware contributions - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ $this->whereArray['username'] = $clean['user'];
+
+ $data['table'] = $this->m['HardwareModel']->select('hardware.*,regusers.username')->where($this->whereArray)->send();
+
+ $data['meet_username'] = $clean['user'];
+
+ $data['tree_last_string'] = "hardware contributions";
+ $data['page_explanation_title'] = "hardware contributions of";
+
+ $this->append($data);
+ $this->load('list_template');
+ $this->right();
+ }
+
+ }
+
+ //issues opened
+ public function issues($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "issues submitted - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ //load the Pages helper
+ $this->helper('Pages','meet/issues/'.$this->lang.'/'.$clean['user'],'page');
+
+ $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']);
+
+ $this->m['IssuesModel']->select('id_issue')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_issue desc');
+
+ $recordNumber = $this->m['IssuesModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+
+ $data['table'] = $this->m['IssuesModel']->select('id_issue,creation_date,title')->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $data['meet_username'] = $clean['user'];
+
+ $data['tree_last_string'] = "issues opened";
+ $data['page_explanation_title'] = "issues opened by";
+
+ $this->append($data);
+ $this->load('list_template');
+ $this->right();
+ }
+
+ }
+
+ //messages submitted
+ public function messages($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "messages submitted - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ //load the Pages helper
+ $this->helper('Pages','meet/messages/'.$this->lang.'/'.$clean['user'],'page');
+
+ $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']);
+
+ $this->m['MessagesModel']->from('messages inner join issues')->on('messages.id_issue=issues.id_issue')->select('id_mes,messages.id_issue,messages.creation_date,title')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_mes desc');
+
+ $recordNumber = $this->m['MessagesModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['MessagesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+
+ $data['table'] = $this->m['MessagesModel']->send();
+
+ $data['meet_username'] = $clean['user'];
+
+ $data['tree_last_string'] = "messages submitted";
+ $data['page_explanation_title'] = "messages submitted by";
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $this->append($data);
+ $this->load('list_template');
+ $this->right();
+ }
+ }
+
+ //messages in the talk page of the devices
+ public function talk($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "talk messages submitted - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ //load the Pages helper
+ $this->helper('Pages','meet/talk/'.$this->lang.'/'.$clean['user'],'page');
+
+ $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']);
+
+ $this->m['TalkModel']->inner('hardware')->using('id_hard')->select('talk.*,hardware.*')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_talk desc');
+
+ $recordNumber = $this->m['TalkModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['TalkModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+
+ $data['table'] = $this->m['TalkModel']->send();
+
+ $data['meet_username'] = $clean['user'];
+
+ $data['tree_last_string'] = "talk messages (hardware pages)";
+ $data['page_explanation_title'] = "talk messages (hardware pages) submitted by";
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $this->append($data);
+ $this->load('list_template');
+ $this->right();
+ }
+ }
+
+ //hardware contributions
+ public function wiki($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "wiki contributions - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ //load the Pages helper
+ $this->helper('Pages','meet/wiki/'.$this->lang.'/'.$clean['user'],'page');
+
+ $this->whereArray['username'] = $clean['user'];
+
+ $data['table'] = $this->m['WikiModel']->select('wiki.*,regusers.username')->where($this->whereArray)->orderBy('wiki.id_wiki desc');
+
+ $recordNumber = $this->m['WikiModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['WikiModel']->send();
+
+ $data['meet_username'] = $clean['user'];
+
+ $data['tree_last_string'] = "wiki contributions";
+ $data['page_explanation_title'] = "wiki contributions of";
+
+ $data['pageList'] = $this->h['Pages']->render($page-5,11);
+
+ $this->append($data);
+ $this->load('list_template');
+ $this->right();
+ }
+
+ }
+
+ //messages in the talk page of the wiki pages
+ public function wikitalk($lang = 'en', $user = '')
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+ $data['title'] = "talk messages submitted - ".Website::$generalName;
+
+ $this->shift(2);
+
+ if ($this->m['UsersModel']->userExists($clean['user']))
+ {
+ //load the Pages helper
+ $this->helper('Pages','meet/wikitalk/'.$this->lang.'/'.$clean['user'],'page');
+
+ $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']);
+
+ $this->m['WikitalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_talk desc');
+
+ $recordNumber = $this->m['WikitalkModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['WikitalkModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+
+ $data['table'] = $this->m['WikitalkModel']->send();
+
+ $data['meet_username'] = $clean['user'];
+
+ $data['tree_last_string'] = "talk messages (wiki pages)";
+ $data['page_explanation_title'] = "talk messages (wiki pages) submitted by";
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $this->append($data);
+ $this->load('list_template');
+ $this->right();
+ }
+ }
+} \ No newline at end of file
diff --git a/Application/Controllers/ModemsController.php b/Application/Controllers/ModemsController.php
new file mode 100644
index 0000000..2b308b6
--- /dev/null
+++ b/Application/Controllers/ModemsController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ModemsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Modems::$select;
+ $worksField = 'compatibility';
+ $interfaceOptions = Modems::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('ModemsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['ModemsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'modem';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility-desc',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Modems';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No modems found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/MyController.php b/Application/Controllers/MyController.php
new file mode 100644
index 0000000..69b8da7
--- /dev/null
+++ b/Application/Controllers/MyController.php
@@ -0,0 +1,214 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class MyController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString) {
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('UsersModel');
+ $this->model('ProfileModel');
+
+ $argKeys = array(
+ 'token:sanitizeAlphanum' => 'token'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'my panel';
+ $this->append($data);
+ }
+
+ public function home($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['title'] = 'my panel - '.Website::$generalName;
+
+ $this->s['registered']->check();
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+ $data['username'] = $this->m['UsersModel']->getUser($clean['id_user']);
+
+ $data['userBlocked'] = $this->m['UsersModel']->isBlocked($clean['id_user']);
+
+ $this->append($data);
+ $this->load('panel');
+ $this->right($this->lang);
+ }
+
+ public function password($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['title'] = 'password - '.Website::$generalName;
+
+ $this->s['registered']->check();
+
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..');
+
+ $this->m['UsersModel']->setFields('password:sha1','none');
+
+ $this->m['UsersModel']->strongConditions['update'] = array('checkEqual'=>'password,confirmation');
+
+ $data['notice'] = null;
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+
+ if (isset($_POST['updateAction'])) {
+ $pass = $this->s['registered']->getPassword();
+ if (sha1($_POST['old']) === $pass)
+ {
+ $this->m['UsersModel']->updateTable('update',$clean['id_user']);
+ $data['notice'] = $this->m['UsersModel']->notice;
+ if ($this->m['UsersModel']->queryResult)
+ {
+ $this->s['registered']->logout();
+ $this->redirect('home/index/'.$this->lang,2,'logout');
+ }
+ }
+ else
+ {
+ $data['notice'] = "<div class='alert'>The old password is wrong</div>\n";
+ }
+ }
+
+ $values = $this->m['UsersModel']->selectId($clean['id_user']);
+ $values['old'] = '';
+ $values['confirmation'] = '';
+
+ $action = array('updateAction'=>'save');
+ $form = new Form_Form('my/password/'.$this->lang.$this->viewStatus,$action);
+ $form->setEntry('old','Password');
+ $form->entry['old']->labelString = 'old password:';
+ $form->setEntry('password','Password');
+ $form->setEntry('confirmation','Password');
+ $data['form'] = $form->render($values,'old,password,confirmation');
+
+ $this->append($data);
+
+ $this->load('password');
+ $this->right();
+ }
+
+ public function email($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['title'] = 'email - '.Website::$generalName;
+
+ $this->s['registered']->check();
+
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..');
+
+ $this->m['UsersModel']->setFields('e_mail','sanitizeAll');
+
+ $this->m['UsersModel']->strongConditions['update'] = array('checkMail'=>'e_mail');
+
+ $this->m['UsersModel']->databaseConditions['update'] = array('checkUniqueCompl'=>'e_mail');
+
+ $data['notice'] = null;
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+
+ $this->m['UsersModel']->updateTable('update',$clean['id_user']);
+ $data['notice'] = $this->m['UsersModel']->notice;
+
+ $values = $this->m['UsersModel']->selectId($clean['id_user']);
+
+ $action = array('updateAction'=>'save');
+ $form = new Form_Form('my/email/'.$this->lang.$this->viewStatus,$action);
+ $form->setEntry('e_mail','InputText');
+ $form->entry['e_mail']->labelString = 'your e-mail address:';
+ $data['form'] = $form->render($values,'e_mail');
+
+ $this->append($data);
+
+ $this->load('email');
+ $this->right();
+ }
+
+ public function profile($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['title'] = 'profile - '.Website::$generalName;
+
+ $this->s['registered']->check();
+
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..');
+
+ $this->m['ProfileModel']->setFields('real_name,website,where_you_are,birth_date,fav_distro,projects,publish_mail,send_notification,description','sanitizeAll');
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+
+ $res = $this->m['ProfileModel']->db->select('profile','id_prof','created_by='.$clean['id_user']);
+ $clean['id_prof'] = (int)$res[0]['profile']['id_prof'];
+
+ $this->m['ProfileModel']->values['update_date'] = date('Y-m-d H:i:s');
+ $this->m['ProfileModel']->updateTable('update',$clean['id_prof']);
+ $data['notice'] = $this->m['ProfileModel']->notice;
+
+ $values = $this->m['ProfileModel']->getFormValues('update','sanitizeHtml',$clean['id_prof']);
+
+ $this->m['ProfileModel']->setForm('my/profile/'.$this->lang.$this->viewStatus,array('updateAction'=>'save'),'POST');
+ $data['form'] = $this->m['ProfileModel']->form->render($values);
+
+ $this->append($data);
+
+ $this->load('profile');
+ $this->right();
+ }
+
+ public function goodbye($lang = 'en')
+ {
+ $data['title'] = 'delete - '.Website::$generalName;
+
+ session_start();
+
+ $this->shift(1);
+
+ $this->s['registered']->check();
+
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..');
+
+ $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
+
+ if (isset($_POST['closeAction']))
+ {
+ $this->s['registered']->logout();
+ $this->m['UsersModel']->close($clean['id_user']);
+
+ if ($this->m['UsersModel']->queryResult)
+ {
+ $this->redirect('users/notice/'.$this->lang);
+ }
+
+ }
+
+ $this->append($data);
+ $this->load('goodbye');
+ $this->right();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/NewsController.php b/Application/Controllers/NewsController.php
new file mode 100644
index 0000000..1d500c9
--- /dev/null
+++ b/Application/Controllers/NewsController.php
@@ -0,0 +1,67 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class NewsController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['news'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('NewsModel');
+
+ $data['title'] = 'news - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function index($lang = 'en')
+ {
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $this->shift(1);
+
+ $this->helper('Pages',$this->controller.'/index/'.$this->lang,'page');
+ $this->h['Pages']->nextString = 'older news';
+ $this->h['Pages']->previousString = 'latest news';
+ $page = $this->viewArgs['page'];
+ $recordNumber = $this->m['NewsModel']->rowNumber();
+ $data['recordNumber'] = $recordNumber;
+
+ //set the limit clause
+ $limit = $this->h['Pages']->getLimit($page,$recordNumber,10);
+
+ $data['table'] = $this->m['NewsModel']->select()->limit($limit)->send();
+ $data['pageList'] = $this->h['Pages']->render($page,0);
+
+ $this->append($data);
+ $this->load('index');
+ $this->right($lang);
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/NotebooksController.php b/Application/Controllers/NotebooksController.php
new file mode 100644
index 0000000..1daf894
--- /dev/null
+++ b/Application/Controllers/NotebooksController.php
@@ -0,0 +1,159 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class NotebooksController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('NotebooksModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['NotebooksModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'notebook';
+
+ //hardware conditions
+ $this->m['HardwareModel']->strongConditions['update'] = array(
+ "checkIsStrings|".Notebooks::vendorsList() => "vendor",
+ "checkNotEmpty" => "model|you have to fill the <i>model name</i> entry",
+ "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the <i>model name</i> entry",
+ "+checkIsStrings|".Notebooks::compatibilityList() => "compatibility",
+ "checkLength|190" => "model",
+ "+checkLength|299" => "distribution",
+ "++checkIsStrings|".Hardware::getCommYears() => "comm_year",
+ "+++checkIsStrings|".Notebooks::$subtypeSelect => "subtype",
+ "++++checkIsStrings|".Notebooks::wifiList() => "wifi_works",
+ "+++++checkIsStrings|".Notebooks::videoList() => "video_card_works",
+ "++++++checkIsStrings|".Notebooks::biosList() => "bios",
+ "+++++++checkIsStrings|".Notebooks::webcamList() => "webcam_works",
+ "++++++++checkIsStrings|".Notebooks::architectureList() => "architecture",
+ "+++++++++checkIsStrings|".Notebooks::installableList() => "can_free_systems_be_installed",
+ "++++++++++checkIsStrings|".Notebooks::preventWifiList() => "prevent_wifi",
+ );
+
+ $this->m['HardwareModel']->strongConditions['insert'] = $this->m['HardwareModel']->strongConditions['update'];
+
+ $this->m['HardwareModel']->softConditions['update'] = array(
+ "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the <i>kernel</i> entry",
+ "checkLength|40000" => "description",
+ "++checkLength|99" => "video_card_type,wifi_type",
+ "+++checkLength|99" => "kernel",
+ "+checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "video_card_type|only the following characters are allowed for the <i>videocard</i> entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]",
+ "++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "wifi_type|only the following characters are allowed for the <i>wifi</i> entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]",
+ "+++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "webcam_type|only the following characters are allowed for the <i>webcam</i> entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]",
+ );
+
+ $this->m['HardwareModel']->softConditions['insert'] = $this->m['HardwareModel']->softConditions['update'];
+
+ $this->m['HardwareModel']->setFields('vendor,model,compatibility,kernel,description,distribution,video_card_type,video_card_works,wifi_type,wifi_works,comm_year,subtype,bios,can_free_systems_be_installed,webcam_type,webcam_works,architecture,prevent_wifi','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'subtype:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility',
+ 'bios:sanitizeString' => 'undef',
+ 'architecture:sanitizeString' => 'undef',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['worksField'] = 'compatibility';
+
+ $data['notFoundString'] = "No notebooks found";
+
+ $data['title'] = 'Notebooks';
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'subtype' => $this->viewArgs['subtype'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'bios' => $this->viewArgs['bios'],
+ 'architecture' => $this->viewArgs['architecture'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/PrintersController.php b/Application/Controllers/PrintersController.php
new file mode 100644
index 0000000..8610314
--- /dev/null
+++ b/Application/Controllers/PrintersController.php
@@ -0,0 +1,154 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class PrintersController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('PrintersModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['PrintersModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'printer';
+
+ //hardware conditions
+ $this->m['HardwareModel']->strongConditions['update'] = array(
+ "checkNotEmpty" => "model|you have to fill the <i>model name</i> entry",
+ "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the <i>model name</i> entry",
+ "+checkMatch|".Hardware::$regExpressions['vendorid_productid'] => "pci_id|<i>VendorID:ProductID</i> has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}",
+ "checkLength|190" => "model",
+ "+checkLength|299" => "distribution",
+ "+checkIsStrings|".Printer::compatibilityList() => "compatibility",
+ "++checkIsStrings|".Hardware::getCommYears() => "comm_year",
+ "+++checkIsStrings|".Printer::$interface => "interface",
+ "++++checkIsStrings|".Printer::$subtype => "subtype",
+ "+++++checkIsStrings|".Printer::$trackSelect => "it_tracks_users",
+ );
+
+ $this->m['HardwareModel']->strongConditions['insert'] = $this->m['HardwareModel']->strongConditions['update'];
+
+ $this->m['HardwareModel']->softConditions['update'] = array(
+ "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the <i>kernel</i> entry",
+ "checkLength|40000" => "description",
+ "+checkLength|49" => "driver",
+ "++checkLength|99" => "kernel",
+ "++checkMatch|".Hardware::$regExpressions['driver'] => "driver|only the following characters are allowed for the <i>driver</i> entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]",
+ "+++checkLength|1000" => "other_names|the <i>other names</i> entry exceeds the value of 1000 characters",
+ );
+
+ $this->m['HardwareModel']->softConditions['insert'] = $this->m['HardwareModel']->softConditions['update'];
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,compatibility,distribution,comm_year,pci_id,driver,interface,subtype,other_names,it_tracks_users','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'printers';
+
+ $data['intefaceOptions'] = Printer::$interface;
+ $data['worksOptions'] = Printer::$compatibility;
+ $data['worksField'] = 'compatibility';
+
+ $data['notFoundString'] = "No printers found";
+
+ $data['subtypeHelpLabel'] = "laser, inkjet, ..";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/ProjectController.php b/Application/Controllers/ProjectController.php
new file mode 100644
index 0000000..234fb59
--- /dev/null
+++ b/Application/Controllers/ProjectController.php
@@ -0,0 +1,42 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ProjectController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ $this->_topMenuClasses['project'] = " class='currentitem ui-btn-active'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $data['title'] = 'project - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function index($lang = 'en')
+ {
+ $this->cleverLoad('index');
+ $this->right();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/RaidadaptersController.php b/Application/Controllers/RaidadaptersController.php
new file mode 100644
index 0000000..be248b4
--- /dev/null
+++ b/Application/Controllers/RaidadaptersController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class RaidadaptersController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Raidadapters::$select;
+ $worksField = 'compatibility';
+ $interfaceOptions = Raidadapters::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('RaidadaptersModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['RaidadaptersModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'RAID-adapter';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility-desc',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Acquisition cards';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No RAID adapter found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/RssController.php b/Application/Controllers/RssController.php
new file mode 100644
index 0000000..0a74695
--- /dev/null
+++ b/Application/Controllers/RssController.php
@@ -0,0 +1,64 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class RssController extends SpecialController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ parent::__construct($model, $controller, $queryString);
+
+ $data['title'] = 'RSS - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function modifications($lang = 'en')
+ {
+ header ("Content-Type:application/rss+xml");
+ parent::modifications($lang);
+
+ $data['statusnetText'] = null;
+ $this->append($data);
+
+ $this->clean();
+ $this->load('modifications');
+ }
+
+ //RSS feeds for identi.ca or StatusNet
+ public function statusnet($lang = 'en')
+ {
+ $this->modifications($lang);
+
+ $data['statusnetText'] = Website::$statusnetGroupText;
+ $this->append($data);
+ }
+
+ public function notapproved($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->pagelist($lang,'notapproved');
+ $this->clean();
+ $this->load('notapproved');
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/ScannersController.php b/Application/Controllers/ScannersController.php
new file mode 100644
index 0000000..80dc229
--- /dev/null
+++ b/Application/Controllers/ScannersController.php
@@ -0,0 +1,127 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ScannersController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('ScannersModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['ScannersModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'scanner';
+
+ $this->m['HardwareModel']->setConditions(Printer::compatibilityList(),'compatibility',Printer::$interface);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,compatibility,distribution,comm_year,pci_id,driver,interface,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'compatibility:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'compatibility',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'scanners';
+
+ $data['intefaceOptions'] = Printer::$interface;
+ $data['worksOptions'] = Printer::$compatibility;
+ $data['worksField'] = 'compatibility';
+
+ $data['notFoundString'] = "No scanners found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'compatibility' => $this->viewArgs['compatibility'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/SdcardreadersController.php b/Application/Controllers/SdcardreadersController.php
new file mode 100644
index 0000000..9d156cf
--- /dev/null
+++ b/Application/Controllers/SdcardreadersController.php
@@ -0,0 +1,131 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class SdcardreadersController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $worksOptions = Sdcardreaders::$select;
+ $worksField = 'sd_card_works';
+ $interfaceOptions = Sdcardreaders::$interface;
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('SdcardreadersModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['SdcardreadersModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'sd-card-reader';
+
+ $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,sd_card_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'sd_card_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'sdcard-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'SD card readers';
+
+ $data['intefaceOptions'] = $interfaceOptions;
+ $data['worksOptions'] = $worksOptions;
+ $data['worksField'] = $worksField;
+
+ $data['notFoundString'] = "No SD card readers found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'sd_card_works' => $this->viewArgs['sd_card_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/SearchController.php b/Application/Controllers/SearchController.php
new file mode 100644
index 0000000..1892f70
--- /dev/null
+++ b/Application/Controllers/SearchController.php
@@ -0,0 +1,267 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class SearchController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['search'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('HardwareModel');
+
+ $data['title'] = 'search - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function form($lang = 'en')
+ {
+ $this->cleverLoad('form');
+ $this->right();
+ }
+
+ public function results($lang = 'en')
+ {
+ Params::$nullQueryValue = 'undef';
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'action:sanitizeAlphanum' => 'search',
+ 'type:sanitizeString' => 'notebook',
+ 'model:sanitizeString' => 'undef',
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $this->shift(1);
+
+ if (strcmp($this->viewArgs['action'],'search') === 0)
+ {
+ Params::$whereClauseSymbolArray = array('like');
+
+ $this->m['HardwareModel']->logicalOperators = array('AND','OR');
+
+ $whereClause = array(
+ 'type' => $this->viewArgs['type'],
+ 'level1' => array(
+ 'model' => "like '%".$this->viewArgs['model']."%'",
+ 'other_names' => "like '%".$this->viewArgs['model']."%'",
+ ),
+// 'model' => "like '%".$this->viewArgs['model']."%'",
+// 'other_names' => "like '%".$this->viewArgs['model']."%'",
+ '-deleted' => "no",
+ 'cleared' => "no",
+ );
+
+ $recordNumber = $this->m['HardwareModel']->clear()->where($whereClause)->orderBy("id_hard desc")->rowNumber();
+
+ $data['recordNumber'] = $recordNumber;
+
+ //load the Pages helper
+ $this->helper('Pages',$this->controller.'/results/'.$this->lang,'page');
+ $page = $this->viewArgs['page'];
+ //set the limit clause
+ $limit = $this->h['Pages']->getLimit($page,$recordNumber,10);
+
+ $data['table'] = $this->m['HardwareModel']->clear()->select('id_hard,model,type,comm_year,other_names')->where($whereClause)->limit($limit)->orderBy("id_hard desc")->send();
+// echo $this->m['HardwareModel']->getQuery();
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $this->append($data);
+ $this->cleverLoad('results');
+ $this->right();
+ }
+
+ }
+
+ public function pciid($lang = 'en')
+ {
+ if (isset($_POST['pciid']))
+ {
+ $clean['pciid'] = $this->request->post('pciid','','sanitizePciid');
+ $data['table'] = $this->m['HardwareModel']->clear()->select()->where(array('pci_id'=>$clean['pciid']))->send();
+ $data['recordNumber'] = 0;
+
+ $this->append($data);
+ $this->cleverLoad('results');
+ $this->right();
+ }
+ }
+
+ public function lspci($lang = 'en')
+ {
+ if (isset($_POST['lspci']))
+ {
+ $data['notice'] = null;
+
+ $lspci = $this->request->post('lspci','','sanitizeHtml');
+ $lspciResult = array();
+ $flag = true;
+
+ if (strlen($lspci)<50000)
+ {
+ $lspci = nl2br($lspci);
+ $lspciArray = explode('<br />',$lspci);
+ reset($lspciArray);
+ while(current($lspciArray) !== false)
+ {
+ $item = current($lspciArray);
+ if( preg_match( '/Slot\:(.*)([0-9a-zA-Z]{2}\:[0-9a-zA-Z]{2}\.[0-9a-zA-Z]{1})/i', $item ) )
+// if (stristr($item,'Slot'))
+ {
+ $temp = array();
+// class
+ if (next($lspciArray) !== false)
+ {
+ $item = trim(current($lspciArray));
+ if( preg_match( '/Class\:(.*)\[(.*)\]/i', $item, $matches ) )
+ {
+ $temp['className'] = sanitizeAll($matches[1]);
+ $temp['classId'] = sanitizeAll($matches[2]);
+ }
+ else
+ {
+ $temp['className'] = "unknown";
+ $temp['classId'] = "unknown";
+ }
+ }
+ else
+ {
+ $flag = false;
+ break;
+ }
+
+// vendor
+ if (next($lspciArray) !== false)
+ {
+ $item = trim(current($lspciArray));
+ if( preg_match( '/Vendor\:(.*)\[(.*)\]/i', $item, $matches ) )
+ {
+ $temp['vendorName'] = sanitizeAll($matches[1]);
+ $temp['vendorId'] = sanitizeAll($matches[2]);
+ }
+ else
+ {
+ $temp['vendorName'] = "unknown";
+ $temp['vendorId'] = "unknown";
+ }
+ }
+ else
+ {
+ $flag = false;
+ break;
+ }
+
+// device
+ if (next($lspciArray) !== false)
+ {
+ $item = trim(current($lspciArray));
+ if( preg_match( '/Device\:(.*)\[(.*)\]/i', $item, $matches ) )
+ {
+ $temp['deviceName'] = sanitizeAll($matches[1]);
+ $temp['deviceId'] = sanitizeAll($matches[2]);
+ }
+ else
+ {
+ $temp['deviceName'] = "unknown";
+ $temp['deviceId'] = "unknown";
+ }
+ }
+ else
+ {
+ $flag = false;
+ break;
+ }
+
+ $lspciResult[] = $temp;
+ }
+ next($lspciArray);
+ }
+ if (count($lspciResult) === 0 or $flag === false)
+ {
+ $data['notice'] = "<div class='alert'>".gtext('the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again')."</div>\n";
+ $flag = false;
+ }
+ }
+ else
+ {
+ $data['notice'] = "<div class='alert'>the lspci output is too long</div>\n";
+ $flag = false;
+ }
+
+ $data['flag'] = $flag;
+
+ $data['table'] = array();
+ $data['notFoundDevices'] = array();
+
+ if ($flag)
+ {
+ $lspciFiltered = array();
+ $vendorIDProductIDArray = array();
+ foreach ($lspciResult as $device)
+ {
+ if (array_key_exists($device['classId'],Hardware::$deviceClasses))
+ {
+ $vendorIDProductIDArray[] = sanitizePciid($device['vendorId'].":".$device['deviceId']);
+ $lspciFiltered[] = $device;
+ }
+ }
+ if (count($vendorIDProductIDArray) > 0)
+ {
+ $whereString = "'".implode("','",$vendorIDProductIDArray)."'";
+ $data['table'] = $this->m['HardwareModel']->select()->where(array('pci_id'=>"in($whereString)"))->send();
+
+ $foundPciidArray = $this->m['HardwareModel']
+ ->select('pci_id')
+ ->where(array('pci_id'=>"in($whereString)"))
+ ->toList('pci_id')
+ ->send();
+
+ $notFoundDevices = array(); //list of devices not found inside the database
+ $notFoundPciIdList = array(); //to check that it does not take the same device twice
+
+ foreach ($lspciFiltered as $device)
+ {
+ if (!in_array($device['vendorId'].":".$device['deviceId'],$foundPciidArray))
+ {
+ if (!in_array($device['vendorId'].":".$device['deviceId'],$notFoundPciIdList))
+ {
+ $notFoundDevices[] = $device;
+ $notFoundPciIdList[] = $device['vendorId'].":".$device['deviceId'];
+ }
+ }
+ }
+
+ $data['notFoundDevices'] = $notFoundDevices;
+ }
+
+ }
+ $this->append($data);
+ $this->cleverLoad('lspci_results');
+ $this->right();
+ }
+ }
+} \ No newline at end of file
diff --git a/Application/Controllers/SoundcardsController.php b/Application/Controllers/SoundcardsController.php
new file mode 100644
index 0000000..fff5e77
--- /dev/null
+++ b/Application/Controllers/SoundcardsController.php
@@ -0,0 +1,127 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class SoundcardsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('SoundcardsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['SoundcardsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'soundcard';
+
+ $this->m['HardwareModel']->setConditions(Soundcards::$audioSelect,'sound_card_works',Soundcards::$interface);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,sound_card_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'sound_card_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'sound-card-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Soundcard';
+
+ $data['intefaceOptions'] = Soundcards::$interface;
+ $data['worksOptions'] = Soundcards::$audioSelect;
+ $data['worksField'] = 'sound_card_works';
+
+ $data['notFoundString'] = "No sound cards found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'sound_card_works' => $this->viewArgs['sound_card_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/SpecialController.php b/Application/Controllers/SpecialController.php
new file mode 100644
index 0000000..4acbb5e
--- /dev/null
+++ b/Application/Controllers/SpecialController.php
@@ -0,0 +1,216 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class SpecialController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('HistoryModel');
+ $this->model('HardwareModel');
+
+ $data['title'] = gtext('last modifications').' - '.Website::$generalName;
+ $this->append($data);
+
+ Params::$nullQueryValue = 'undef';
+
+ $this->setArgKeys(array('page:forceNat'=>1,'username:sanitizeAll'=>'undef'));
+ }
+
+ protected function last($lang = 'en',$action = 'modifications')
+ {
+ switch ($action)
+ {
+ case 'modactions':
+ $data['title'] = 'last moderations - '.Website::$generalName;
+ $data['viewTitle'] = 'List of actions carried out by moderators';
+ $data['user_status'] = 'MODERATOR';
+
+ $whereClauseArray = array(
+ 'gr' => 'moderator',
+ );
+
+ $viewFile = 'modactions';
+
+ break;
+ case 'adminactions':
+ $data['title'] = 'last admin actions - '.Website::$generalName;
+ $data['viewTitle'] = 'List of actions carried out by administrators';
+ $data['user_status'] = 'ADMINISTRATOR';
+
+ $whereClauseArray = array(
+ 'gr' => 'admin',
+ );
+
+ $viewFile = 'modactions';
+
+ break;
+
+ case 'usersactions':
+ $data['title'] = 'last registered users actions - '.Website::$generalName;
+ $data['viewTitle'] = 'List of actions carried out by registered users';
+ $data['user_status'] = 'USER';
+
+ $whereClauseArray = array(
+ 'gr' => 'registered',
+ );
+
+ $viewFile = 'modactions';
+
+ break;
+ }
+ $whereClauseArray['username'] = $this->viewArgs['username'];
+
+ $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page');
+
+ $this->m['HistoryModel']->clear()->left('regusers')->on('history.created_by=regusers.id_user')->select("history.*,regusers.username")->where($whereClauseArray)->orderBy('id_history desc');
+
+ $recordNumber = $this->m['HistoryModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['HistoryModel']->send();
+
+// echo $this->m['HistoryModel']->getQuery();
+
+ $data['pageList'] = $this->h['Pages']->render($page-5,11);
+
+ //the value of the filter
+ $data['filterValue'] = strcmp($this->viewArgs['username'],'undef') === 0 ? null : $this->viewArgs['username'];
+
+ $this->append($data);
+ $this->load($viewFile);
+ $this->right();
+ }
+
+ public function modifications($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['title'] = 'last modifications - '.Website::$generalName;
+
+ $whereClauseArray = array(
+ 'gr' => 'registered',
+ 'type' => 'hardware',
+ 'deleted' => 'no',
+ 'cleared' => 'no',
+ );
+
+ $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page');
+
+ $this->m['HistoryModel']->clear()->select('history.*,hardware.*')->inner('hardware')->on('hardware.id_hard=history.id')->where($whereClauseArray)->orderBy('id_history desc');
+
+ $recordNumber = $this->m['HistoryModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['HistoryModel']->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-5,11);
+
+ $this->append($data);
+ $this->load('modifications');
+ $this->right();
+ }
+
+ public function modactions($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->s['registered']->check('moderator');
+
+ $this->last($lang = 'en','modactions');
+ }
+
+ public function adminactions($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->s['registered']->check('admin');
+
+ $this->last($lang = 'en','adminactions');
+ }
+
+ public function usersactions($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->s['registered']->check('moderator');
+
+ $this->last($lang = 'en','usersactions');
+ }
+
+ protected function pagelist($lang = 'en', $type)
+ {
+ switch ($type)
+ {
+ case 'deleted':
+ $whereArray = array('-deleted'=>'yes','approved'=>'yes');
+ $data['titleString'] = 'hidden device pages';
+ break;
+ case 'notapproved':
+ $whereArray = array('approved'=>'no');
+ $data['titleString'] = 'Device pages that have to be approved';
+ break;
+ }
+
+ $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page');
+
+ $this->m['HardwareModel']->clear()->select()->where($whereArray)->orderBy('id_hard desc');
+
+ $recordNumber = $this->m['HardwareModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['HardwareModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['HardwareModel']->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-5,11);
+
+ $this->append($data);
+ $this->load('pages_deleted');
+ $this->right();
+ }
+
+ public function deleted($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->s['registered']->check('admin');
+
+ $this->pagelist($lang,'deleted');
+ }
+
+ public function notapproved($lang = 'en')
+ {
+ $this->shift(1);
+
+ $this->s['registered']->check('admin');
+
+ $this->pagelist($lang,'notapproved');
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/ThreegcardsController.php b/Application/Controllers/ThreegcardsController.php
new file mode 100644
index 0000000..3824fe0
--- /dev/null
+++ b/Application/Controllers/ThreegcardsController.php
@@ -0,0 +1,127 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ThreegcardsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('ThreegcardsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['ThreegcardsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = '3G-card';
+
+ $this->m['HardwareModel']->setConditions(Wifi::$wifiSelect,'wifi_works',ThreeGcards::interfaceList());
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,wifi_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'wifi_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'wifi-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = '3G card';
+
+ $data['intefaceOptions'] = Wifi::$interface;
+ $data['worksOptions'] = Wifi::$wifiSelect;
+ $data['worksField'] = 'wifi_works';
+
+ $data['notFoundString'] = "No 3G cards found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'wifi_works' => $this->viewArgs['wifi_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/UsersController.php b/Application/Controllers/UsersController.php
new file mode 100644
index 0000000..741eaf4
--- /dev/null
+++ b/Application/Controllers/UsersController.php
@@ -0,0 +1,352 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class UsersController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('UsersModel');
+ $this->model('ProfileModel');
+ $this->model('HardwareModel');
+
+ $data['title'] = 'Login';
+ $this->append($data);
+ }
+
+ public function login($lang = 'en')
+ {
+ $data = array();
+
+ if ( strcmp($this->_updating,'no') === 0 )
+ {
+ $data['flag'] = isset($type) ? 'setted' : null;
+
+ $data['title'] = 'Login - '.Website::$generalName;
+
+ $redirect = $this->request->get('redirect','','sanitizeAll');
+
+ $data['action'] = Url::getRoot("users/login/".$this->lang."?redirect=$redirect");
+
+ $data['notice'] = null;
+
+ $this->s['registered']->checkStatus();
+
+ if ($this->s['registered']->status['status']=='logged') { //check if already logged
+ $this->redirect('home/index/'.Lang::$current,3,'You are already logged...');
+ die();
+ }
+ if (isset($_POST['username']) and isset($_POST['password']))
+ {
+ $username = ctype_alnum($_POST['username']) ? sanitizeAll($_POST['username']) : '';
+ $choice = $this->s['registered']->login($username,$_POST['password']);
+
+ switch($choice) {
+ case 'logged':
+ $this->redirect('home/index/'.Lang::$current,3,'You are already logged...');
+ break;
+ case 'accepted':
+ if (strcmp($redirect,'') !== 0)
+ {
+ $redirect = html_entity_decode($redirect,ENT_QUOTES,DEFAULT_CHARSET);
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Location:'.$domainName."/".$redirect);
+ }
+ else
+ {
+ $this->redirect('home/index/'.Lang::$current,0);
+ }
+ break;
+ case 'login-error':
+ $data['notice'] = '<div class="alert">Wrong username or password</div>';
+ break;
+ case 'wait':
+ $data['notice'] = '<div class="alert">You have to wait 5 seconds before you can try to login another time</div>';
+ break;
+ }
+ }
+ }
+
+ $this->append($data);
+ $this->load('login');
+ }
+
+ public function logout($lang = 'en')
+ {
+ $res = $this->s['registered']->logout();
+
+ if ($res === 'not-logged')
+ {
+ $data['notice'] = "<div class='alert'>You can't logout because you are not logged...</div>\n";
+ }
+ else if ($res === 'was-logged')
+ {
+ $this->redirect('home/index/'.Lang::$current,0);
+ }
+ else if ($res === 'error')
+ {
+
+ }
+
+ $this->append($data);
+ $this->load('logout');
+ }
+
+ public function add($lang = 'en')
+ {
+ $data['title'] = 'create account - '.Website::$generalName;
+
+ if ( strcmp($this->_updating,'no') === 0 )
+ {
+ //start session for captcha
+ session_start();
+
+ if ( isset($_SESSION['status']) ) unset($_SESSION['status']);
+
+ $this->shift(1);
+
+ $this->m['UsersModel']->strongConditions['insert'] = array(
+ "checkAlphanum" => "username",
+ "checkLength|35" => "username",
+ "checkMail" => "e_mail",
+ "+checkLength|60" => "e_mail",
+ "checkEqual" => "password,confirmation",
+ "checkMatch|/^[a-zA-Z0-9\_\-\!]+$/" => "password,confirmation|characters allowed for the password: a-z A-Z 0-9 - _ !"
+ );
+
+ $this->m['UsersModel']->databaseConditions['insert'] = array(
+ "checkUnique" => "username",
+ "+checkUnique" => "e_mail"
+ );
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ $this->redirect('home/index/'.$this->lang,2,'you are already logged..');
+ }
+ else
+ {
+ $data['notice'] = null;
+
+ $this->m['UsersModel']->setFields('username:sanitizeAll,e_mail:sanitizeAll,password:sha1','none');
+
+ $this->m['UsersModel']->updateTable('insert');
+
+ $data['notice'] = $this->m['UsersModel']->notice;
+
+ $values = $this->m['UsersModel']->getFormValues('insert','sanitizeHtml');
+ $values['confirmation'] = '';
+
+ $data['values'] = $values;
+
+ $this->append($data);
+
+ $this->load('add');
+ $this->right();
+ }
+ }
+ else
+ {
+ $this->redirect('users/login/'.$this->lang,0);
+ }
+ }
+
+ public function confirm($lang = 'en', $id_user = 0, $confirmation_token = '')
+ {
+ $data['title'] = 'confirm account - '.Website::$generalName;
+
+ if ( strcmp($this->_updating,'no') === 0 )
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ $this->redirect('home/index/'.$this->lang,2,'you are already logged..');
+ }
+ else
+ {
+ $clean['id_user'] = (int)$id_user;
+ $clean['confirmation_token'] = sanitizeAlphanum($confirmation_token);
+
+ $data['status_confirm'] = false;
+
+ $res = $this->m['UsersModel']->select('id_user,creation_time')->where(array("id_user"=>$clean['id_user'],"confirmation_token"=>$clean['confirmation_token'],"has_confirmed"=>1,"deleted"=>"no"))->send();
+
+ // echo $this->m['UsersModel']->getQuery();
+
+ if (count($res) > 0)
+ {
+ $now = time();
+ $checkTime = $res[0]['regusers']['creation_time'] + Account::$confirmTime;
+ if ($checkTime > $now)
+ {
+ $this->m['UsersModel']->values = array('has_confirmed' => 0, 'creation_time' => 0);
+ if ($this->m['UsersModel']->update($clean['id_user']))
+ {
+ $data['status_confirm'] = true;
+
+ //ad a record in the profile table
+ $this->m['ProfileModel']->values = array('created_by' => $clean['id_user']);
+ $this->m['ProfileModel']->insert();
+
+ }
+ }
+ }
+
+ // var_dump($data['status_confirm']);
+
+ $this->append($data);
+ $this->load('confirmation');
+ $this->right();
+ }
+ }
+ else
+ {
+ $this->redirect('users/login/'.$this->lang,0);
+ }
+ }
+
+ public function change($lang = 'en', $id_user = 0, $forgot_token = '')
+ {
+ session_start();
+
+ $data['title'] = 'change password - '.Website::$generalName;
+
+ if ( strcmp($this->_updating,'no') === 0 )
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ $this->redirect('home/index/'.$this->lang,2,'you are already logged..');
+ }
+ else
+ {
+ $clean['id_user'] = (int)$id_user;
+ $clean['forgot_token'] = sanitizeAlphanum($forgot_token);
+
+ $res = $this->m['UsersModel']->select('username,id_user,forgot_time,e_mail')->where(array("id_user"=>$clean['id_user'],"forgot_token"=>$clean['forgot_token'],"has_confirmed"=>0,"deleted"=>"no"))->send();
+
+ if (count($res) > 0)
+ {
+ $now = time();
+ $checkTime = $res[0]['regusers']['forgot_time'] + Account::$confirmTime;
+ if ($checkTime > $now)
+ {
+ $username = $res[0]['regusers']['username'];
+ $email = $res[0]['regusers']['e_mail'];
+
+ $newPassword = generateString(10);
+ $this->m['UsersModel']->values = array('password' => sha1($newPassword), 'forgot_time' => 0);
+ if ($this->m['UsersModel']->update($clean['id_user']))
+ {
+ $result = Account::sendpassword($username,$email,$newPassword);
+
+ if ($result)
+ {
+ $_SESSION['status'] = 'sent_new_password';
+ }
+ else
+ {
+ $_SESSION['status'] = 'sent_new_password_error';
+ }
+
+ $hed = new HeaderObj(DOMAIN_NAME);
+ $hed->redirect('users/notice/'.Lang::$current,1);
+
+ }
+ }
+ }
+
+ $this->append($data);
+ $this->load('change');
+ $this->right();
+ }
+ }
+ else
+ {
+ $this->redirect('users/login/'.$this->lang,0);
+ }
+ }
+
+ public function forgot($lang = 'en')
+ {
+ $data['title'] = 'request password - '.Website::$generalName;
+
+ if ( strcmp($this->_updating,'no') === 0 )
+ {
+ session_start();
+
+ if ( isset($_SESSION['status']) ) unset($_SESSION['status']);
+
+ $this->shift(1);
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ $this->redirect('home/index/'.$this->lang,2,'you are already logged..');
+ }
+ else
+ {
+ $data['notice'] = null;
+
+ if (isset($_POST['forgotAction']))
+ {
+ if (isset($_POST['username']))
+ {
+ $this->m['UsersModel']->forgot($_POST['username']);
+ $data['notice'] = $this->m['UsersModel']->notice;
+ }
+ }
+
+ $this->append($data);
+
+ $this->load('forgot');
+ $this->right();
+ }
+ }
+ else
+ {
+ $this->redirect('users/login/'.$this->lang,0);
+ }
+ }
+
+ public function notice($lang = 'en')
+ {
+ $data['title'] = 'notice - '.Website::$generalName;
+
+ if ( strcmp($this->_updating,'no') === 0 )
+ {
+ session_start();
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ $this->redirect('home/index/'.$this->lang,2,'you are already logged..');
+ }
+ else
+ {
+ $this->load('notice');
+ $this->right();
+ }
+ }
+ else
+ {
+ $this->redirect('users/login/'.$this->lang,0);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Application/Controllers/VideocardsController.php b/Application/Controllers/VideocardsController.php
new file mode 100644
index 0000000..a27e723
--- /dev/null
+++ b/Application/Controllers/VideocardsController.php
@@ -0,0 +1,127 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class VideocardsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('VideocardsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['VideocardsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'videocard';
+
+ $this->m['HardwareModel']->setConditions(Videocard::videoList(),'video_card_works',Videocard::$interface);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,video_card_works,comm_year,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'video_card_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'video-card-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Videocards';
+
+ $data['intefaceOptions'] = Videocard::$interface;
+ $data['worksOptions'] = Videocard::$videoSelect;
+ $data['worksField'] = 'video_card_works';
+
+ $data['notFoundString'] = "No video cards found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'video_card_works' => $this->viewArgs['video_card_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/WebcamsController.php b/Application/Controllers/WebcamsController.php
new file mode 100644
index 0000000..41807ed
--- /dev/null
+++ b/Application/Controllers/WebcamsController.php
@@ -0,0 +1,127 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WebcamsController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('WebcamsModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['WebcamsModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'webcam';
+
+ $this->m['HardwareModel']->setConditions(Webcams::$select,'webcam_works',Webcams::$interface);
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,webcam_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'webcam_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'webcam-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Webcam';
+
+ $data['intefaceOptions'] = Webcams::$interface;
+ $data['worksOptions'] = Webcams::$select;
+ $data['worksField'] = 'webcam_works';
+
+ $data['notFoundString'] = "No webcams found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'webcam_works' => $this->viewArgs['webcam_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/WifiController.php b/Application/Controllers/WifiController.php
new file mode 100644
index 0000000..8bf4c72
--- /dev/null
+++ b/Application/Controllers/WifiController.php
@@ -0,0 +1,127 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WifiController extends GenericController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ parent::__construct($model, $controller, $queryString);
+
+ //load the model
+ $this->model('HardwareModel');
+ $this->model('RevisionsModel');
+ $this->model('WifiModel');
+ $this->model('TalkModel');
+
+ $this->mod = $this->m['WifiModel'];
+
+ $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user'];
+ $this->m['HardwareModel']->type = 'wifi';
+
+ $this->m['HardwareModel']->setConditions(Wifi::$wifiSelect,'wifi_works',ThreeGcards::interfaceList());
+
+ $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,wifi_works,pci_id,interface,driver,other_names','sanitizeAll');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'history_page:forceNat' => 1,
+ 'vendor:sanitizeString' => 'undef',
+ 'comm_year:sanitizeString' => 'undef',
+ 'wifi_works:sanitizeString' => 'undef',
+ 'interface:sanitizeString' => 'undef',
+ 'sort-by:sanitizeString' => 'wifi-works',
+ 'search_string:sanitizeString' => 'undef'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $data['title'] = 'Wifi';
+
+ $data['intefaceOptions'] = Wifi::$interface;
+ $data['worksOptions'] = Wifi::$wifiSelect;
+ $data['worksField'] = 'wifi_works';
+
+ $data['notFoundString'] = "No wifi cards found";
+
+ $this->append($data);
+ }
+
+ public function catalogue($lang = 'en')
+ {
+ $this->shift(1);
+
+ $whereArray = array(
+ 'type' => $this->mod->type,
+ 'vendor' => $this->viewArgs['vendor'],
+ 'comm_year' => $this->viewArgs['comm_year'],
+ 'wifi_works' => $this->viewArgs['wifi_works'],
+ 'interface' => $this->viewArgs['interface'],
+ );
+
+ $this->mod->setWhereQueryClause($whereArray);
+
+ parent::catalogue($lang);
+ }
+
+ public function view($lang = 'en', $id = 0, $name = null)
+ {
+ parent::view($lang, $id, $name);
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ parent::history($lang, $id);
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ parent::revision($lang, $id_rev);
+ }
+
+ public function insert($lang = 'en', $token = '')
+ {
+ parent::insert($lang, $token);
+ }
+
+ public function update($lang = 'en', $token = '')
+ {
+ parent::update($lang, $token);
+ }
+
+ public function differences($lang = 'en', $id_hard = 0, $id_rev = 0)
+ {
+ parent::differences($lang, $id_hard, $id_rev);
+ }
+
+ public function climb($lang = 'en', $id_rev = 0, $token = '')
+ {
+ parent::climb($lang, $id_rev, $token);
+ }
+
+ public function talk($lang = 'en', $id_hard = 0, $token = '')
+ {
+ parent::talk($lang, $id_hard, $token);
+ }
+
+}
diff --git a/Application/Controllers/WikiController.php b/Application/Controllers/WikiController.php
new file mode 100644
index 0000000..f3da19f
--- /dev/null
+++ b/Application/Controllers/WikiController.php
@@ -0,0 +1,644 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WikiController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString) {
+
+ $this->_topMenuClasses['wiki'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('UsersModel');
+ $this->model('WikiModel');
+ $this->model('WikirevisionsModel');
+ $this->model('WikitalkModel');
+
+ $this->m['WikiModel']->id_user = (int)$this->s['registered']->status['id_user'];
+ }
+
+ public function insert($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['pagePreview'] = null;
+
+ $data['title'] = 'insert a wiki page - '.Website::$generalName;
+
+ $this->m['WikiModel']->setFields('title,page','sanitizeAll');
+
+ $data['notice'] = null;
+
+ $this->s['registered']->checkStatus();
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if (isset($_POST['insertAction']))
+ {
+ //insert the new wiki page
+ $this->m['WikiModel']->updateTable('insert');
+
+ if ($this->m['WikiModel']->queryResult)
+ {
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean);
+ die();
+ }
+ }
+
+ $data['pagePreview'] = $this->getPreview();
+
+ $data['notice'] = $this->m['WikiModel']->notice;
+
+ $data['submitName'] = "insertAction";
+ $data['hiddenInput'] = null;
+
+ $data['values'] = $this->m['WikiModel']->getFormValues('insert','sanitizeHtml');
+ $this->append($data);
+
+ $this->load('form');
+ $this->load('bottom_left');
+ $this->right();
+ }
+ else
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/insert/".$this->lang,0);
+ }
+ }
+
+ public function update($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['pagePreview'] = null;
+
+ $data['title'] = 'update a wiki page - '.Website::$generalName;
+
+ $this->m['WikiModel']->setFields('title,page','sanitizeAll');
+
+ $data['notice'] = null;
+ $this->s['registered']->checkStatus();
+
+ if (isset($_POST['id_wiki']))
+ {
+ //get the id
+ $clean['id_wiki'] = (int)$_POST['id_wiki'];
+ $title = $this->m['WikiModel']->getTheModelName($clean['id_wiki']);
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..');
+
+ if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..');
+
+ $deleted = $this->m['WikiModel']->select("wiki.deleted")->where(array("id_wiki"=>$clean['id_wiki']))->limit(1)->toList('wiki.deleted')->send();
+
+ $data['tree_name'] = $title;
+
+ if (isset($_POST['updateAction']))
+ {
+ //carry out the update database action
+ $this->m['WikiModel']->updateTable('update');
+
+ if ($this->m['WikiModel']->queryResult)
+ {
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean);
+ die();
+ }
+ }
+
+ $data['pagePreview'] = $this->getPreview();
+
+ $data['notice'] = $this->m['WikiModel']->notice;
+
+ $data['id_wiki'] = $clean['id_wiki'];
+ $data['submitName'] = "updateAction";
+
+ $data['values'] = $this->m['WikiModel']->getFormValues('update','sanitizeHtml');
+ $data['hiddenInput'] = "<input type='hidden' name='id_wiki' value='".$clean['id_wiki']."'>\n";
+
+ $this->append($data);
+
+ $this->load('form');
+ $this->load('bottom_left');
+ $this->right();
+ }
+ else
+ {
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Location: '.$domainName."/users/login/".$this->lang."?redirect=".$this->controller."/page/".$this->lang."/".titleForRedirect($title));
+ die();
+ }
+ }
+ else
+ {
+ $this->redirect($this->controller.'/page/'.$this->lang);
+ }
+ }
+
+ //get the preview of the description entry
+ protected function getPreview()
+ {
+ if (isset($_POST['previewAction']))
+ {
+ $this->m['WikiModel']->result = false;
+ return $this->request->post('page','','sanitizeHtml');
+ }
+ return null;
+ }
+
+ public function page($lang = 'en', $title_clean = null)
+ {
+ $this->shift(2);
+
+ $data['title'] = 'main page - '.Website::$generalName;
+ $clean['title_clean'] = sanitizeAll($title_clean);
+
+ $data['isDeleted'] = false;
+ $data['isBlocked'] = false;
+
+ if (isset($title_clean))
+ {
+ $res = $this->m['WikiModel']->select()->where(array('title_clean'=>$clean['title_clean']))->orderBy('id_wiki desc')->limit(1)->send();
+
+ if ( count($res) > 0 )
+ {
+ $data['table'] = $res;
+ $data['tree_name'] = $res[0]['wiki']['title'];
+ $data['title'] = $res[0]['wiki']['title'] . ' - ' . Website::$generalName;
+ $data['isDeleted'] = $this->m['WikiModel']->isDeleted($res[0]['wiki']['id_wiki']);
+ $data['isBlocked'] = $this->m['WikiModel']->isBlocked($res[0]['wiki']['id_wiki']);
+
+ if ( count($res) < 2 )
+ {
+ $data['talk_number'] = $this->m['WikitalkModel']->select('count(*) as numb,id_wiki')->where(array('id_wiki'=>$res[0]['wiki']['id_wiki'],'deleted'=>'no'))->rowNumber();
+
+ $viewFile = 'wiki_page';
+ $data['id_wiki'] = $res[0]['wiki']['id_wiki'];
+ }
+ else
+ {
+ $viewFile = 'select';
+ }
+ }
+ else
+ {
+ $rev = new WikirevisionsModel();
+ $res_rev = $rev->select()->where(array('title_clean'=>$clean['title_clean']))->orderBy('id_rev desc')->limit(1)->send();
+ if ( count($res_rev) > 0 )
+ {
+ $clean['idWiki'] = $rev->getIdPage($res_rev[0]['wiki_revisions']['id_rev']);
+ $newTitle = $this->m['WikiModel']->getTheModelName($clean['idWiki']);
+ $n = titleForRedirect($newTitle);
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$n);
+ die();
+ }
+ else
+ {
+ $viewFile = 'not_found';
+ }
+ }
+ }
+ else
+ {
+ $this->redirect('wiki/page/'.$this->lang.'/Main-Page');
+ }
+
+ $data['md_javascript'] = "moderator_dialog(\"pageblock\",\"page\");moderator_dialog(\"pageunblock\",\"page\");moderator_dialog(\"pagehide\",\"page_del\");moderator_dialog(\"pageshow\",\"page_del\");";
+
+ $this->append($data);
+
+ $this->load($viewFile);
+ $this->load('bottom_left');
+ $this->load('moderator_dialog');
+ $this->right();
+ }
+
+ public function history($lang = 'en', $id = 0)
+ {
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ );
+
+ $this->setArgKeys($argKeys);
+ $this->shift(2);
+
+ $clean['id'] = (int)$id;
+ $data['id'] = $clean['id'];
+ $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id']);
+ $data['isBlocked'] = $this->m['WikiModel']->isBlocked($clean['id']);
+ $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id']);
+
+ $data['title'] = 'history - '.Website::$generalName;
+
+ //get the first revision
+ $res = $this->m['WikirevisionsModel']->db->select('revisions','id_rev','id_wiki='.$clean['id'],null,'id_rev',1);
+ if (count($res) > 0)
+ {
+ $data['firstRev'] = $res[0]['wiki_revisions']['id_rev'];
+ }
+
+ $res1 = $this->m['WikiModel']->db->select('wiki','update_date,created_by','id_wiki='.$clean['id']);
+
+ $this->m['WikirevisionsModel']->setWhereQueryClause(array('id_wiki' => $clean['id']));
+
+ //load the Pages helper
+ $this->helper('Pages',$this->controller.'/history/'.$this->lang.'/'.$clean['id'],'page');
+ //get the number of records
+ $recordNumber = $this->m['WikirevisionsModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+ //set the limit clause
+ $this->m['WikirevisionsModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+ $res2 = $this->m['WikirevisionsModel']->getFields('update_date,created_by,id_rev');
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $data['rev1'] = $res1;
+ $data['rev2'] = $res2;
+
+ $this->append($data);
+ $this->load('history');
+ $this->load('bottom_left');
+ $this->right();
+ }
+
+ public function revision($lang = 'en', $id_rev = 0)
+ {
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ );
+
+ $this->setArgKeys($argKeys);
+ $this->shift(2);
+
+ $clean['id_rev'] = (int)$id_rev;
+
+ $this->m['WikirevisionsModel']->setWhereQueryClause(array("id_rev" => $clean['id_rev']));
+ $data['table'] = $this->m['WikirevisionsModel']->getAll();
+
+ $data['id_wiki'] = 0;
+ $data['created_by'] = null;
+ $data['update_date'] = null;
+ $data['tree_name'] = null;
+ $data['tree'] = null;
+ $data['tree'] = null;
+ $data['title'] = 'revision - '.Website::$generalName;
+ $data['isDeleted'] = false;
+
+ if (count($data['table']) > 0)
+ {
+ $data['id_wiki'] = (int)$data['table'][0]['wiki_revisions']['id_wiki'];
+ $data['isDeleted'] = $this->m['WikiModel']->isDeleted($data['id_wiki']);
+ $data['tree_name'] = $this->m['WikiModel']->getTheModelName($data['id_wiki']);
+ $data['tree'] = $this->getSpecPageLink() . " &raquo; " . "<a href='".$this->m['WikiModel']->toWikiPage($data['id_wiki'])."'>".$data['tree_name']."</a>"." &raquo; " . $this->getHistoryLink($data['id_wiki']) . " &raquo; ".gtext('Revision');
+
+ $data['created_by'] = $data['table'][0]['wiki_revisions']['created_by'];
+ $data['update_date'] = $data['table'][0]['wiki_revisions']['update_date'];
+ }
+
+ $this->append($data);
+ $this->load('wiki_page');
+ $this->load('bottom_left');
+ $this->right();
+ }
+
+ public function differences($lang = 'en', $id_wiki = 0, $id_rev = 0)
+ {
+ $this->shift(3);
+
+ $data['title'] = 'differences - '.Website::$generalName;
+
+ $clean['id_wiki'] = (int)$id_wiki;
+ $clean['id_rev'] = (int)$id_rev;
+
+ $data['id_wiki'] = $clean['id_wiki'];
+ $tree_name = $this->m['WikiModel']->getTheModelName((int)$clean['id_wiki']);
+ $data['tree_name'] = $tree_name;
+ $data['tree'] = $this->getSpecPageLink() . " &raquo; " . "<a href='".$this->m['WikiModel']->toWikiPage($clean['id_wiki'])."'>".$data['tree_name']."</a>" ." &raquo; " . $this->getHistoryLink($data['id_wiki']) . " &raquo; ".gtext('Differences');
+
+ $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']);
+ $data['showDiff'] = false;
+
+ $diffArray = array();
+
+ if (strcmp($clean['id_wiki'],0) !== 0 and strcmp($clean['id_rev'],0) !== 0)
+ {
+ $this->m['WikirevisionsModel']->where(array('id_wiki' => $clean['id_wiki'],'id_rev' => '<='.$clean['id_rev']));
+ $this->m['WikirevisionsModel']->limit = 2;
+ $res = $this->m['WikirevisionsModel']->getAll();
+ if (count($res) > 1)
+ {
+ $newArray = $res[0]['wiki_revisions'];
+ $oldArray = $res[1]['wiki_revisions'];
+
+ $data['update_new'] = $newArray['update_date'];
+ $data['update_old'] = $oldArray['update_date'];
+ $data['created_by'] = $newArray['created_by'];
+
+ $diffArray = $this->m['WikiModel']->getDiffArray($oldArray, $newArray);
+
+ $data['showDiff'] = true;
+ }
+ }
+ else if (strcmp($clean['id_wiki'],0) !== 0 and strcmp($clean['id_rev'],0) === 0)
+ {
+ $this->m['WikiModel']->where(array('id_wiki' => $clean['id_wiki']));
+ $lastRes = $this->m['WikiModel']->getAll();
+
+ if (count($lastRes) > 0)
+ {
+ $this->m['WikirevisionsModel']->setWhereQueryClause(array('id_wiki' => $clean['id_wiki']));
+ $this->m['WikirevisionsModel']->limit = 1;
+ $revRes = $this->m['WikirevisionsModel']->getAll();
+
+ if (count($revRes) > 0)
+ {
+ $newArray = $lastRes[0]['wiki'];
+ $oldArray = $revRes[0]['wiki_revisions'];
+
+ $data['update_new'] = $newArray['update_date'];
+ $data['update_old'] = $oldArray['update_date'];
+ $data['created_by'] = $newArray['created_by'];
+
+ $diffArray = $this->m['WikiModel']->getDiffArray($oldArray, $newArray);
+
+ $data['showDiff'] = true;
+ }
+ }
+
+ }
+
+ $data['fieldsWithBreaks'] = $this->m['WikiModel']->fieldsWithBreaks;
+ $data['diffArray'] = $diffArray;
+
+ $this->append($data);
+ $this->load('differences');
+ $this->load('bottom_left');
+ $this->right();
+ }
+
+ public function climb($lang = 'en', $id_rev = 0)
+ {
+ $this->shift(2);
+
+ $this->m['WikiModel']->setFields('title,page','sanitizeAll');
+
+ $data['title'] = 'make current - '.Website::$generalName;
+
+ $clean['id_rev'] = (int)$id_rev;
+ $clean['id_wiki'] = (int)$this->m['WikirevisionsModel']->getIdPage($clean['id_rev']);
+
+ if ($clean['id_wiki'] !== 0)
+ {
+
+ $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']);
+
+ $data['id_rev'] = $clean['id_rev'];
+ $data['id_wiki'] = $clean['id_wiki'];
+ $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id_wiki']);
+ $data['name'] = $data['tree_name'];
+ $data['tree'] = $this->getSpecPageLink() . " &raquo; " . "<a href='".$this->m['WikiModel']->toWikiPage($clean['id_wiki'])."'>".$data['tree_name']."</a>"." &raquo; " . $this->getHistoryLink($clean['id_wiki']) . " &raquo; " . gtext('Make current');
+
+ $data['notice'] = null;
+ $this->s['registered']->checkStatus();
+
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..');
+
+ if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..');
+
+ if (isset($_POST['confirmAction']))
+ {
+ $this->m['WikiModel']->makeCurrent($clean['id_rev']);
+
+ if ($this->m['WikiModel']->queryResult)
+ {
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean);
+ die();
+ }
+
+ $data['notice'] = $this->m['WikiModel']->notice;
+ }
+
+ $this->append($data);
+ $this->load('climb');
+ $this->load('bottom_left');
+ $this->right();
+ }
+ else
+ {
+ $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/page/".$this->lang."/".encodeUrl($data['tree_name']),0);
+ }
+ }
+ }
+
+ public function talk($lang = 'en', $id_wiki = 0)
+ {
+ $this->shift(2);
+
+ $this->m['WikitalkModel']->setFields('title,message','sanitizeAll');
+
+ $data['title'] = 'talk - '.Website::$generalName;
+
+ $clean['id_wiki'] = (int)$id_wiki;
+ $data['id_wiki'] = $clean['id_wiki'];
+ $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id_wiki']);
+ $data['isBlocked'] = $this->m['WikiModel']->isBlocked($clean['id_wiki']);
+ $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']);
+
+ $data['tree'] = $this->getSpecPageLink() . " &raquo; " . "<a href='".$this->m['WikiModel']->toWikiPage($clean['id_wiki'])."'>".$data['tree_name']."</a>"." &raquo; ".gtext('Talk');
+
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..');
+
+ if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..');
+
+ if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..');
+
+ $this->m['WikitalkModel']->values['created_by'] = $this->s['registered']->status['id_user'];
+ $this->m['WikitalkModel']->values['id_wiki'] = $clean['id_wiki'];
+
+ $this->m['WikitalkModel']->updateTable('insert');
+
+// if ($this->m['WikitalkModel']->queryResult)
+// {
+// header('Refresh: 0;url='.$_SERVER['REQUEST_URI']);
+// die();
+// }
+ }
+ }
+
+ $data['table'] = $this->m['WikitalkModel']->select()->where(array('id_wiki'=>$clean['id_wiki']))->orderBy('id_talk')->send();
+
+ $data['values'] = $this->m['WikitalkModel']->getFormValues('insert','sanitizeHtml');
+ $data['notice'] = $this->m['WikitalkModel']->notice;
+
+// javascript for moderator
+ $data['md_javascript'] = "moderator_dialog(\"hide\",\"wiki_talk\");moderator_dialog(\"show\",\"wiki_talk\");";
+ $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_wiki'];
+
+ $this->append($data);
+ $this->load('talk');
+ $this->load('moderator_dialog');
+ $this->right();
+ }
+
+ public function pages($lang = 'en')
+ {
+ $data['topString'] = 'list of pages';
+ $data['title'] = gtext('list of pages').' - '.Website::$generalName;
+
+ $this->setArgKeys(array('page:forceNat'=>1));
+
+ $this->shift(1);
+
+ $this->helper('Pages','wiki/pages/'.$this->lang,'page');
+
+ $this->m['WikiModel']->clear()->select()->where(array('-deleted'=>'no'))->orderBy('id_wiki desc');
+
+ $recordNumber = $this->m['WikiModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['WikiModel']->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-7,15);
+
+ $this->append($data);
+ $this->load('pages');
+ $this->right();
+ }
+
+ protected function see($lang = 'en', $status = 'blocked')
+ {
+ $this->s['registered']->check('admin');
+
+ switch ($status)
+ {
+ case 'deleted':
+ $data['topString'] = 'list of deleted pages';
+ $data['title'] = gtext('list of deleted pages').' - '.Website::$generalName;
+ $whereClause = '-deleted';
+ break;
+ case 'blocked':
+ $data['topString'] = 'list of blocked pages';
+ $data['title'] = gtext('list of blocked pages').' - '.Website::$generalName;
+ $whereClause = 'blocked';
+ break;
+ }
+
+ $this->setArgKeys(array('page:forceNat'=>1));
+
+ $this->shift(1);
+
+ $this->helper('Pages','wiki/'.$status.'/'.$this->lang,'page');
+
+ $this->m['WikiModel']->clear()->select()->where(array($whereClause=>'yes'))->orderBy('id_wiki desc');
+
+ $recordNumber = $this->m['WikiModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['WikiModel']->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-7,15);
+
+ $this->append($data);
+ $this->load('pages');
+ $this->right();
+ }
+
+ public function deleted($lang = 'en')
+ {
+ $this->see($lang,'deleted');
+ }
+
+ public function blocked($lang = 'en')
+ {
+ $this->see($lang,'blocked');
+ }
+
+ //print all the modifications to the wiki
+ public function modifications($lang = 'en')
+ {
+ $data['title'] = gtext('last modifications').' - '.Website::$generalName;
+
+ $this->setArgKeys(array('page:forceNat'=>1));
+
+ $this->shift(1);
+
+ $whereClauseArray = array(
+ 'gr' => 'registered',
+ 'type' => 'wiki',
+ );
+
+ $this->helper('Pages','wiki/modifications/'.$this->lang,'page');
+
+ $this->m['HistoryModel']->clear()->select()->where($whereClauseArray)->orderBy('id_history desc');
+
+ $recordNumber = $this->m['HistoryModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+
+ $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30);
+
+ $data['table'] = $this->m['HistoryModel']->send();
+
+ $data['pageList'] = $this->h['Pages']->render($page-7,15);
+
+ $this->append($data);
+ $this->load('modifications');
+ $this->right();
+ }
+
+ protected function getViewLink($ne_name)
+ {
+ return "<a href='".$this->baseUrl.'/'.$this->controller.'/page/'.$this->lang.'/'.encodeUrl($ne_name)."'>".$ne_name."</a>";
+ }
+
+ protected function getHistoryLink($id)
+ {
+ return "<a href='".$this->baseUrl.'/'.$this->controller.'/history/'.$this->lang.'/'.$id."'>".gtext('History')."</a>";
+ }
+
+ protected function getSpecPageLink()
+ {
+ return "<a href='".$this->baseUrl.'/'.$this->controller.'/page/'.$this->lang."/Main-Page'>".ucfirst($this->controller)."</a>";
+ }
+
+} \ No newline at end of file
diff --git a/Application/Hooks/AfterInitialization.php b/Application/Hooks/AfterInitialization.php
new file mode 100755
index 0000000..a369309
--- /dev/null
+++ b/Application/Hooks/AfterInitialization.php
@@ -0,0 +1,10 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//in this file you can write the PHP code that will be executed just after the controller initialization, after super global array have been sanitizied
+
+//you can access the whole set of classes of EasyGiant \ No newline at end of file
diff --git a/Application/Hooks/BeforeChecks.php b/Application/Hooks/BeforeChecks.php
new file mode 100755
index 0000000..47e7936
--- /dev/null
+++ b/Application/Hooks/BeforeChecks.php
@@ -0,0 +1,20 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//in this file you can write the PHP code that will be executed at the beginning of the EasyGiant execution, before super global array have been sanitizied
+
+//this is the preferred place to create and fill log files
+
+//you can access the whole set of classes and functions of EasyGiant
+
+Params::$htmlentititiesCharset = "UTF-8";
+
+Params::$useHttps = false;
+
+Params::$allowedSanitizeFunc .= ",sanitizeString,sanitizeAlphanum";
+
+Params::$language = "En";
diff --git a/Application/Hooks/BeforeInitialization.php b/Application/Hooks/BeforeInitialization.php
new file mode 100755
index 0000000..6d1851b
--- /dev/null
+++ b/Application/Hooks/BeforeInitialization.php
@@ -0,0 +1,10 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//in this file you can write the PHP code that will be executed just before the controller initialization, after super global array have been sanitizied
+
+//you can access the whole set of classes of EasyGiant \ No newline at end of file
diff --git a/Application/Hooks/index.html b/Application/Hooks/index.html
new file mode 100755
index 0000000..8d1c8b6
--- /dev/null
+++ b/Application/Hooks/index.html
@@ -0,0 +1 @@
+
diff --git a/Application/Include/distributions.php b/Application/Include/distributions.php
new file mode 100644
index 0000000..e8c61f0
--- /dev/null
+++ b/Application/Include/distributions.php
@@ -0,0 +1,91 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Distributions
+{
+
+ public static $allowed = array();
+
+ public static $allowed_active = array();
+
+ public static function getList()
+ {
+ return implode(' , ',array_keys(self::$allowed));
+ }
+
+ //fill the $allowed property with the list of allowed distros from the distros MySQL table
+ public static function setAllowedList()
+ {
+ $distros = new DistrosModel();
+
+ self::$allowed = $distros->clear()->toList("clean_name","full_name")->orderBy("id_order")->send();
+ self::$allowed_active = $distros->clear()->where(array('active'=>'1'))->toList("clean_name","full_name")->orderBy("id_order")->send();
+ }
+
+ public static function getName($distList = '')
+ {
+ $returnString = null;
+ $returnArray = array();
+ $distArray = explode(',',$distList);
+ foreach ($distArray as $dist)
+ {
+ $dist = trim($dist);
+ if (array_key_exists($dist,self::$allowed))
+ {
+ $returnArray[] = self::$allowed[$dist];
+ }
+ }
+ return implode(" <br /> ",$returnArray);
+ }
+
+ public static function check($distString)
+ {
+ $distArray = explode(',',$distString);
+
+ $allowedArray = array_keys(self::$allowed);
+
+ foreach ($distArray as $dist)
+ {
+ $dist = trim($dist);
+ if (!in_array($dist,$allowedArray)) return false;
+ }
+
+ return true;
+ }
+
+ public static function getFormHtml()
+ {
+ $str = "<div class='dist_checkboxes_hidden_box'>";
+ $str .= "<div class='dist_checkboxes_hidden_box_inner'>";
+ foreach (self::$allowed_active as $value => $label)
+ {
+ $str .= "<div class=\"hidden_box_item\"><input class=\"hidden_box_input $value\" type=\"checkbox\" name=\"$value\" value=\"$value\"/> $label</div>";
+ }
+ $str .= "</div>";
+ $str .= "<input class=\"hidden_box_distribution_submit\" type=\"submit\" value=\"apply\">";
+ $str .= "<input class=\"hidden_box_distribution_cancel\" type=\"submit\" value=\"cancel\">";
+ $str .= "</div>";
+
+ return $str;
+ }
+
+}
diff --git a/Application/Include/hardware.php b/Application/Include/hardware.php
new file mode 100644
index 0000000..bd83987
--- /dev/null
+++ b/Application/Include/hardware.php
@@ -0,0 +1,576 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+
+function translate($string)
+{
+ return Hardware::translate($string);
+}
+
+function translate_and_gtext($string)
+{
+ return gtext(translate($string));
+}
+
+class Hardware
+{
+
+ public static $translations = array(
+ "amd64" => 'x86-64/amd64',
+ "PC-Card" => 'PCMCIA/PC-Card',
+ "works_with_3D" => "works with 3D acceleration",
+ "works_without_3D" => "works, but without 3D acceleration",
+ "does_not_work" => "it does not work",
+ "can-be-installed" => "can be installed",
+ "pcmcia-controller" => "PCMCIA Controller",
+ "usb-controller" => "USB Controller",
+ "firewire-controller" => "Firewire Controller",
+ "heci-controller" => "HECI Controller",
+ );
+
+ public static $regExpressions = array(
+ "kernel" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\,]+$/",
+ "driver" => "/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/",
+ "vendorid_productid" => "/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/",
+ "model" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\@\[\]\/\,\']+$/",
+ );
+
+ public static function translate($string)
+ {
+ if (array_key_exists($string,self::$translations))
+ {
+ return self::$translations[$string];
+ }
+ return $string;
+ }
+
+ //classId => controller
+ public static $deviceClasses = array(
+ '0403' => 'soundcards',
+ '0280' => 'wifi',
+ '0300' => 'videocards',
+ '0200' => 'ethernetcards',
+ '0400' => 'acquisitioncards',
+ '0401' => 'acquisitioncards',
+ '0480' => 'acquisitioncards',
+ '0805' => 'sdcardreaders',
+ '0703' => 'modems',
+ '0104' => 'raidadapters',
+ '0c00' => 'hostcontrollers',
+ '0c03' => 'hostcontrollers',
+ '0780' => 'hostcontrollers',
+ '0607' => 'hostcontrollers',
+ '0e00' => 'raidadapters',
+ );
+
+ public static $icons = array(
+ 'notebook' => 'H2O/computer-laptop_22.png',
+ 'wifi' => 'H2O/network-wireless_22.png',
+ 'videocard' => 'Crystal/1282042976_hardware.png',
+ 'printer' => 'H2O/printer_22.png',
+ 'scanner' => 'H2O/scanner_22.png',
+ '3G-card' => 'Crystal/usb_22.png',
+ 'soundcard' => 'H2O/audio-card_22.png',
+ 'webcam' => 'H2O/camera-web_22.png',
+ 'bluetooth' => 'H2O/preferences-system-bluetooth-22.png',
+ 'acquisition-card' => 'Crystal/cam_mount-22.png',
+ 'fingerprint-reader' => 'fingerprint_icon-22.png',
+ 'ethernet-card' => 'H2O/network-wired_22.png',
+ 'sd-card-reader' => 'H2O/media-flash-sd-mmc_22.png',
+ 'modem' => 'Crystal/modem_22.png',
+ 'RAID-adapter' => 'Crystal/1282042976_hardware.png',
+ 'host-controller' => 'Crystal/1282042976_hardware.png',
+ );
+
+ public static $typeToController = array(
+ 'notebook' => 'notebooks',
+ 'wifi' => 'wifi',
+ 'videocard' => 'videocards',
+ 'printer' => 'printers',
+ 'scanner' => 'scanners',
+ '3G-card' => 'threegcards',
+ 'soundcard' => 'soundcards',
+ 'webcam' => 'webcams',
+ 'bluetooth' => 'bluetooth',
+ 'acquisition-card' => 'acquisitioncards',
+ 'fingerprint-reader' => 'fingerprintreaders',
+ 'ethernet-card' => 'ethernetcards',
+ 'sd-card-reader' => 'sdcardreaders',
+ 'modem' => 'modems',
+ 'RAID-adapter' => 'raidadapters',
+ 'host-controller' => 'hostcontrollers',
+ );
+
+ public static $typeToWorksField = array(
+ 'notebook' => 'compatibility',
+ 'wifi' => 'wifi_works',
+ 'videocard' => 'video_card_works',
+ 'printer' => 'compatibility',
+ 'scanner' => 'compatibility',
+ '3G-card' => 'wifi_works',
+ 'soundcard' => 'sound_card_works',
+ 'webcam' => 'webcam_works',
+ 'bluetooth' => 'bluetooth_works',
+ 'acquisition-card' => 'compatibility',
+ 'fingerprint-reader' => 'fingerprint_works',
+ 'ethernet-card' => 'ethernet_card_works',
+ 'sd-card-reader' => 'sd_card_works',
+ 'modem' => 'compatibility',
+ 'RAID-adapter' => 'compatibility',
+ 'host-controller' => 'compatibility',
+ );
+
+ public static function getTypes()
+ {
+ return implode(',',array_keys(self::$typeToController));
+ }
+
+ public static function getControllerFromType($type)
+ {
+ if (array_key_exists($type,self::$typeToController))
+ {
+ return self::$typeToController[$type];
+ }
+ return null;
+ }
+
+ public static function getWorksFieldFromType($type)
+ {
+ if (array_key_exists($type,self::$typeToWorksField))
+ {
+ return self::$typeToWorksField[$type];
+ }
+ return null;
+ }
+
+ //get the type from the controller
+ public static function getTypeFromController($controller)
+ {
+ $temp = array_flip(self::$typeToController);
+ if (array_key_exists($controller,$temp))
+ {
+ return $temp[$controller];
+ }
+ return null;
+ }
+
+ public static function getTypeFromClass($class)
+ {
+ if (array_key_exists($class,self::$deviceClasses))
+ {
+ return self::getTypeFromController(self::$deviceClasses[$class]);
+ }
+ return null;
+ }
+
+ public static function getIconFromType($type)
+ {
+ if (array_key_exists($type,self::$icons))
+ {
+ return Url::getRoot()."Public/Img/".self::$icons[$type];
+ }
+ return null;
+ }
+
+ public static function getIconFromController($controller)
+ {
+ if ($type = self::getTypeFromController($controller))
+ {
+ return self::getIconFromType($type);
+ }
+ return null;
+ }
+
+ public static function getIconFromClass($class)
+ {
+ if (array_key_exists($class,self::$deviceClasses))
+ {
+ return self::getIconFromController(self::$deviceClasses[$class]);
+ }
+ return null;
+ }
+
+ //get the list of the allowed years of commercialization
+ public static function getCommYears()
+ {
+ $currentYear = (int)date("Y");
+ $allowed = 'not-specified';
+
+ for ($i=$currentYear;$i>1991;$i--)
+ {
+ $allowed .= ",$i";
+ }
+ return $allowed;
+ }
+
+ public static $trackSelect = 'not-specified,no,yes';
+
+}
+
+class Printer extends Hardware
+{
+
+ public static $compatibility = array(
+ "A-Full" => "A-Full",
+ "B-Partial" => "B-Partial",
+ "C-None" => "C-None",
+ );
+
+ public static $interface = "not-specified,USB,Serial,Parallel,Firewire,SCSI,Ethernet";
+
+ public static $subtype = "not-specified,laser,inkjet,other";
+
+ public static function compatibilityList()
+ {
+ return implode(',',array_values(self::$compatibility));
+ }
+
+}
+
+class Wifi extends Hardware
+{
+
+ public static $interface = array(
+ "not-specified" => "not-specified",
+ "USB" => "USB",
+ "PCI" => "PCI",
+ "PCI-E" => "PCI-E",
+ "mini-PCI" => "mini-PCI",
+ "mini-PCI-E" => "mini-PCI-E",
+ "ExpressCard" => "ExpressCard",
+ "Ethernet" => "Ethernet",
+ "PCMCIA/PC-Card" => "PC-Card",
+ );
+
+ public static $interfaceReverse = array(
+ "not-specified" => "not-specified",
+ "USB" => "USB",
+ "PCI" => "PCI",
+ "PCI-E" => "PCI-E",
+ "mini-PCI" => "mini-PCI",
+ "mini-PCI-E" => "mini-PCI-E",
+ "ExpressCard" => "ExpressCard",
+ "Ethernet" => "Ethernet",
+ "PC-Card" => "PCMCIA/PC-Card",
+ );
+
+ public static $wifiSelect = 'yes,no';
+
+ public static function interfaceList()
+ {
+ return implode(',',array_values(self::$interface));
+ }
+}
+
+class Videocard extends Hardware
+{
+
+ public static $videoSelect = array(
+ "works with 3D acceleration" => "works_with_3D",
+ "works, but without 3D acceleration" => "works_without_3D",
+ "it does not work" => "does_not_work",
+ );
+
+ public static $videoReverse = array(
+ "works_with_3D" => "works with 3D acceleration",
+ "works_without_3D" => "works, but without 3D acceleration",
+ "does_not_work" => "it does not work",
+ );
+
+ public static $interface = "not-specified,PCI,AGP,PCI-E,ISA,MCA,VLB";
+
+ public static function videoList()
+ {
+ return implode(',',array_values(self::$videoSelect));
+ }
+}
+
+
+class Notebooks extends Hardware
+{
+
+ public static $vendors = array(
+ "Acer" => "Acer",
+ "Apple" => "Apple",
+ "Asus" => "Asus",
+ "BenQ" => "BenQ",
+ "Blue Light" => "Blue-Light",
+ "CLEVO CO." => "CLEVO-CO",
+ "Compal Electronics" => "Compal-Electronics",
+ "COMPAQ" => "COMPAQ",
+ "Dell" => "Dell",
+ "emachines" => "emachines",
+ "FUJITSU" => "FUJITSU",
+ "Garlach44" => "Garlach44",
+ "Gateway" => "Gateway",
+ "Google" => "Google",
+ "Hasee" => "Hasee",
+ "Hewlett Packard" => "Hewlett-Packard",
+ "IBM" => "IBM",
+ "Intel" => "Intel",
+ "Lanix" => "Lanix",
+ "Lemote" => "Lemote",
+ "Lenovo" => "Lenovo",
+ "LG" => "LG",
+ "Libiquity" => "Libiquity",
+ "Minifree" => "Minifree",
+ "msi" => "msi",
+ "Olimex" => "Olimex",
+ "One Laptop per Child (Non-Profit)" => "One-Laptop-per-Child-Non-Profit",
+ "Openpandora Ltd." => "Openpandora-Ltd",
+ "Oracle" => "Oracle",
+ "Packard Bell" => "Packard-Bell",
+ "Panasonic" => "Panasonic",
+ "Philco" => "Philco",
+ "Philips" => "Philips",
+ "Positivo" => "Positivo",
+ "Purism" => "Purism",
+ "Qbex" => "Qbex",
+ "SAMSUNG" => "SAMSUNG",
+ "Slimbook" => "Slimbook",
+ "Sony" => "Sony",
+ "System76" => "System76",
+ "ThinkPenguin" => "ThinkPenguin",
+ "Thomson" => "Thomson",
+ "TOSHIBA" => "TOSHIBA",
+ "ZaReason, Inc" => "ZaReason-Inc",
+ );
+
+ public static $compatibility = array(
+ "A Platinum" => "A-platinum",
+ "B Gold" => "B-gold",
+ "C Silver" => "C-silver",
+ "D Bronze" => "D-bronze",
+ "E Garbage" => "E-garbage"
+ );
+
+ public static $subtypeSelect = 'notebook,netbook,tablet,not-specified';
+
+ public static $architectureSelect = array(
+ "not specified" => 'not-specified',
+ "x86" => 'x86',
+ "x86-64/amd64" => 'amd64',
+ "MIPS" => 'MIPS',
+ "ARM" => 'ARM',
+ );
+
+ public static $biosSelect = array(
+ "not specified" => 'not-specified',
+ "no" => 'no',
+ "yes" => 'yes',
+ "can be installed" => 'can-be-installed',
+ );
+
+ public static $preventWifiSelect = array(
+ "not specified" => 'not-specified',
+ "no" => 'no',
+ "yes (please specify in the description entry)" => 'yes',
+ );
+
+ public static $installableSelect = array(
+ "not specified" => 'not-specified',
+ "no (please specify in the description entry)" => 'no',
+ "yes" => 'yes',
+ );
+
+// public static $installableSelect = 'not-specified,no,yes';
+
+ public static $videoSelect = array(
+ "not specified" => 'not-specified',
+ "yes, with 3D acceleration" => "yes_with_3D",
+ "yes, but without 3D acceleration" => "yes_without_3D",
+ "it does not work" => "no",
+ );
+
+ public static $videoReverse = array(
+ "yes_with_3D" => "works with 3D acceleration",
+ "yes_without_3D" => "works, but without 3D acceleration",
+ "no" => "it does not work",
+ 'not-specified' => "not specified how it works",
+ "" => ""
+ );
+
+ public static $wifiSelect = array(
+ "not specified" => 'not-specified',
+ 'yes' => 'yes',
+ 'no' => 'no',
+ 'there is no wifi card' => 'no-wifi-card',
+ );
+
+ public static $wifiReverse = array(
+ "yes" => "it works",
+ "no" => "it does not work",
+ 'not-specified' => "not specified how it works",
+ 'no-wifi-card' => 'there is no wifi card',
+ "" => ""
+ );
+
+ public static $webcamSelect = array(
+ 'not specified' => 'not-specified',
+ 'it works' => 'yes',
+ 'it does not work' => 'no',
+ 'there is no webcam' => 'there-is-no-webcam',
+ );
+
+ public static $webcamReverse = array(
+ "yes" => "it works",
+ "no" => "it does not work",
+ 'not-specified' => "not specified how it works",
+ 'there-is-no-webcam' => 'there is no webcam',
+ );
+
+ public static function videoList()
+ {
+ return implode(',',array_values(self::$videoSelect));
+ }
+
+ public static function wifiList()
+ {
+ return implode(',',array_values(self::$wifiSelect));
+ }
+
+ public static function webcamList()
+ {
+ return implode(',',array_values(self::$webcamSelect));
+ }
+
+ public static function vendorsList()
+ {
+ return implode(',',array_values(self::$vendors));
+ }
+
+ public static function compatibilityList()
+ {
+ return implode(',',array_values(self::$compatibility));
+ }
+
+ public static function architectureList()
+ {
+ return implode(',',array_values(self::$architectureSelect));
+ }
+
+ public static function biosList()
+ {
+ return implode(',',array_values(self::$biosSelect));
+ }
+
+ public static function preventWifiList()
+ {
+ return implode(',',array_values(self::$preventWifiSelect));
+ }
+
+ public static function installableList()
+ {
+ return implode(',',array_values(self::$installableSelect));
+ }
+}
+
+class ThreeGcards extends Wifi
+{
+
+ public static $select = 'yes,no';
+
+
+}
+
+class Soundcards extends Hardware
+{
+
+ public static $audioSelect = 'yes,no';
+
+ public static $interface = "not-specified,PCI,ISA,USB,Firewire,Parallel,PCI-E,PCMCIA";
+
+}
+
+class Webcams extends Hardware
+{
+
+ public static $select = 'yes,no';
+
+ public static $interface = "not-specified,USB,Firewire,Parallel,Wifi,Serial";
+
+}
+
+class Bluetooth extends Hardware
+{
+
+ public static $select = 'yes,no';
+
+ public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card";
+
+}
+
+class Acquisitioncards extends Hardware
+{
+
+ public static $select = 'yes,no';
+
+ public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card,Firewire,Parallel,Serial";
+
+}
+
+class Fingerprintreaders extends Acquisitioncards
+{
+
+}
+
+class Ethernetcards extends Acquisitioncards
+{
+
+}
+
+class Sdcardreaders extends Acquisitioncards
+{
+
+}
+
+class Modems extends Acquisitioncards
+{
+
+}
+
+class Raidadapters extends Acquisitioncards
+{
+
+}
+
+class PCMCIAControllers extends Acquisitioncards
+{
+
+}
+
+class Hostcontrollers extends Acquisitioncards
+{
+
+ public static $subtype = array(
+ "PCMCIA Controller" => "pcmcia-controller",
+ "USB Controller" => "usb-controller",
+ "Firewire Controller" => "firewire-controller",
+ "HECI Controller" => "heci-controller",
+ );
+
+ public static function subtypeList()
+ {
+ return implode(',',array_values(self::$subtype));
+ }
+
+}
diff --git a/Application/Include/languages.php b/Application/Include/languages.php
new file mode 100644
index 0000000..2d59c6a
--- /dev/null
+++ b/Application/Include/languages.php
@@ -0,0 +1,2363 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Lang
+{
+ public static $allowed = array('en','es','fr','it','de','gr','pt');
+ public static $current = 'en';
+
+ public static $complete = array(
+ 'en' => 'gb.png,English',
+ 'es' => 'es.png,Español',
+ 'fr' => 'fr.png,Français',
+ 'it' => 'it.png,Italiano',
+ 'de' => 'de.png,Deutsch',
+ 'gr' => 'gr.png,Ελληνικά',
+ 'pt' => 'pt.png,Português',
+ );
+
+ //$pos=0: icon, $pos=1:lang name
+ public static function getLangInfo($langCode,$pos)
+ {
+ if (array_key_exists($langCode,self::$complete))
+ {
+ $all = explode(',',self::$complete[$langCode]);
+ return $all[$pos];
+ }
+ return $langCode;
+ }
+
+ public static function getLabel($langCode)
+ {
+ return self::getLangInfo($langCode,1);
+ }
+
+ public static function getIcon($langCode)
+ {
+ return self::getLangInfo($langCode,0);
+ }
+
+ public static $i18n = array(
+ 'it' => array
+ (
+ /*0001*/"Search one device in the archive" => "Cerca un dispositivo nell'archivio",
+ /*0002*/"hardware type" => "tipo di hardware",
+ /*0003*/"the model name contains" => "il nome del modello contiene",
+ /*0004*/"List of issues" => "Lista di questioni",
+ /*0005*/"TITLE" => "TITOLO",
+ /*0006*/"TOPIC" => "ARGOMENTO",
+ /*0007*/"OPENED BY" => "APERTO DA",
+ /*0008*/"DATE" => "DATA",
+ /*0009*/"REPLIES" => "MESSAGGI",
+ /*0010*/"PRIORITY" => "PRIORITÀ",
+ /*0011*/"STATUS" => "STATO",
+ /*0012*/"You have to" => "Devi eseguire il",
+ /*0013*/"in order to submit an issue" => "per poter aprire una nuova questione",
+ /*0014*/"in order to add a message" => "per poter inviare un messaggio",
+ /*0015*/"Description" => "Descrizione",
+ /*0016*/"Messages" => "Messaggi",
+ /*0017*/"this message has been deleted" => "questo messaggio è stato cancellato",
+ /*0018*/"in order to submit a message to this issue" => "per aggiungere un messaggio a questa questione",
+ /*0019*/"model name" => "nome del modello",
+ /*0020*/"model type" => "tipo di device",
+ /*0021*/"year of commercialization" => "anno di commercializzazione",
+ /*0022*/"Results of the search" => "Risultati della ricerca",
+ /*0023*/"page list" => "pagine",
+ /*0024*/"No devices found" => "Non è stato trovato alcun device",
+ /*0025*/"vendor" => "marca",
+ /*0026*/"compatibility" => "compatibilità",
+ /*0027*/"year" => "anno",
+ /*0028*/"subtype" => "sottotipo",
+ /*0029*/"sort by" => "ordina per",
+ /*0030*/"interface" => "interfaccia",
+ /*0031*/"does it work?" => "funziona?",
+ /*0032*/"preview of the message" => "anteprima del messaggio",
+ /*0033*/"preview of the new issue message" => "anteprima del testo della questione",
+ /*0034*/"Add a message to this issue" => "Aggiungi un messaggio a questa questione",
+ /*0035*/"Add a new issue" => "Aggiungi una nuova questione",
+ /*0036*/"MESSAGE" => "MESSAGGIO",
+ /*0037*/"there are no messages" => "non ci sono messaggi",
+ /*0038*/"No notebooks found" => "Non è stato trovato alcun notebook",
+ /*0039*/"subtype (notebook, netbook, tablet)" => "sottotipo (notebook, netbook, tablet)",
+ /*0040*/"compatibility with free software" => "compatibilità con il software libero",
+ /*0041*/"view the other specifications" => "guarda le altre specifiche",
+ /*0042*/"model" => "modello",
+ /*0043*/"model id" => "id del modello",
+ /*0044*/"tested on" => "testato con",
+ /*0045*/"tested with the following kernel libre" => "testato con il seguente kernel libre",
+ /*0046*/"video card model" => "modello di scheda video",
+ /*0047*/"wifi model" => "modello di scheda wifi",
+ /*0048*/"GNU/Linux distribution used for the test" => "distribuzione GNU/Linux usata per il test",
+ /*0049*/"does the video card work?" => "funziona la scheda video?",
+ /*0050*/"does the wifi card work?" => "funziona la scheda wifi?",
+ /*0051*/"Description: (write here all the useful information)" => "Descrizione (scrivi sotto tutte le informazioni utili)",
+ /*0052*/"discover all the wiki tags" => "scopri tutti i tag della wiki",
+ /*0053*/"Fields marked with <b>*</b> are mandatory" => "I campi marcati con <b>*</b> sono obbligatori",
+ /*0054*/"No printers found" => "Non è stata trovata alcuna stampante",
+ /*0055*/"interface" => "interfaccia",
+ /*0056*/"VendorID:ProductID code of the device" => "codice VendorID:ProductID del prodotto",
+ /*0057*/"free driver used" => "driver liberi usati",
+ /*0058*/"set not-specified if not sure" => "seleziona not-specified se non sei sicuro/a",
+ /*0059*/"see the help page or leave blank if you are not sure" => "guarda nella pagina di help o lascia vuoto se non sei sicuro/a",
+ /*0060*/"No scanners found" => "Non sono è stato trovato alcuno scanner",
+ /*0061*/"No video cards found" => "Non è stata trovata alcuna scheda grafica",
+ /*0062*/"how does it work with free software?" => "come funziona con il software libero?",
+ /*0063*/"No wifi cards found" => "Non è stata trovata alcuna scheda wifi",
+ /*0064*/"does it work with free software?" => "funziona con il software libero?",
+ /*0065*/"differences in the entry" => "differenze nel campo",
+ /*0066*/"No 3G cards found" => "Non è stata trovata alcuna scheda 3G",
+ /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Per favore specifica nel sottostante campo descrizione l'Internet Service Provider (ISP) e il Paese dove il servizio viene fornito",
+ /*0068*/"webcam model" => "modello di webcam",
+ /*0069*/"does it have a free BIOS?" => "ha il BIOS libero?",
+ /*0070*/"does the webcam work?" => "funziona la webcam?",
+ /*0071*/"Current revision" => "Revisione corrente",
+ /*0072*/"Hello" => "Ciao",
+ /*0073*/"Your" => "il ",
+ /*0074*/"control panel" => "pannello di controllo",
+ /*0075*/"create new account" => "crea un account",
+ /*0076*/"request new password" => "richiedi nuova password",
+ /*0077*/"website statistics" => "statistiche del sito",
+ /*0078*/"hardware in the database" => "hardware nel database",
+ /*0079*/"users logged" => "utenti loggati",
+ /*0080*/"Watch your public profile" => "Guarda il tuo profilo pubblico",
+ /*0081*/"Edit your profile" => "Modifica il tuo profilo",
+ /*0082*/"Change your e-mail address" => "Cambia il tuo indirizzo e-mail",
+ /*0083*/"Change your password" => "Cambia la tua password",
+ /*0084*/"Delete your account" => "Chiudi il tuo account",
+ /*0085*/"choose the username" => "scegli lo username",
+ /*0086*/"characters allowed" => "caratteri ammessi",
+ /*0087*/"your e-mail address" => "il tuo indirizzo e-mail",
+ /*0088*/"necessary to confirm the registration" => "necessario per confermare la registrazione",
+ /*0089*/"choose the password" => "scegli la password",
+ /*0090*/"confirm the password" => "conferma la password",
+ /*0091*/"write the code above" => "scrivi il codice mostrato sopra",
+ /*0092*/"write your username" => "scrivi il tuo username",
+ /*0093*/"Actions carried out by moderators" => "Azioni compiute dai moderatori",
+ /*0094*/"meet" => "conosci",
+ /*0095*/"Public profile of" => "Profilo pubblico di",
+ /*0096*/"See all the contributions of" => "Guarda tutti i contributi di ",
+ /*0097*/"My website" => "Il mio sito personale",
+ /*0098*/"My real name" => "Il mio vero nome",
+ /*0099*/"My e-mail address" => "Il mio indirizzo e-mail",
+ /*0100*/"I'm from" => "Vengo da",
+ /*0101*/"Birthdate" => "Sono nato il",
+ /*0102*/"My favourite distribution" => "La mia distribuzione favorita",
+ /*0103*/"Free software projects I'm working on" => "Progetti di software libero con i quali collaboro",
+ /*0104*/"My description" => "La mia descrizione",
+ /*0105*/"contributions" => "contributi",
+ /*0106*/"contributions of" => "contributi di",
+ /*0107*/"No sound cards found" => "Non è stata trovata alcuna scheda audio",
+ /*0108*/"LAST UPDATE" => "ULTIMA MODIFICA",
+ /*0109*/"search by" => "cerca per",
+ /*0110*/"analyze the output of the lspci command" => "analizza l'output del comando lscpi",
+ /*0111*/"paste the output of the lspci command" => "incolla l'output del comand lspci",
+ /*0112*/"works, but without 3D acceleration" => "funziona, ma senza accelerazione 3D",
+ /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "il testo che hai inviato non sembra l'output del comando lspci -vmmnn. Per favore ricontrolla il testo e riprova",
+ /*0114*/"Search form" => "Form della ricerca",
+ /*0115*/"write here the output of lspci -vmmnn" => "scrivi qui l'output del comando lspci -vmmnn",
+ /*0116*/"The following devices has been found in the database" => "I seguenti device sono stati trovati nel database",
+ /*0117*/"yes" => "sì",
+ /*0118*/"no" => "no",
+ /*0119*/"The following devices has not been found in the database" => "I seguenti device non sono stati trovati nel database",
+ /*0120*/"can you please insert them?" => "puoi gentilmente inserirli?",
+ /*0121*/"No webcams found" => "Non è stata trovata alcuna webcam",
+ /*0122*/"Download the xml file of all the database" => "Scarica il file xml di tutto il database",
+ /*0123*/"Download the xml file of all the <b>notebooks</b> in the database" => "Scarica il file xml di tutti i <b>notebook</b> presenti nel database",
+ /*0124*/"Download the xml file of all the <b>wifi cards</b> in the database" => "Scarica il file xml di tutte le <b>schede wifi</b> presenti nel database",
+ /*0125*/"Download the xml file of all the <b>video cards</b> in the database" => "Scarica il file xml di tutte le <b>schede video</b> presenti nel database",
+ /*0126*/"Download the xml file of all the <b>printers</b> in the database" => "Scarica il file xml di tutte le <b>stampanti</b> presenti nel database",
+ /*0127*/"Download the xml file of all the <b>3G cards</b> in the database" => "Scarica il file xml di tutte le <b>schede 3G</b> presenti nel database",
+ /*0128*/"Download the xml file of all the <b>sound cards</b> in the database" => "Scarica il file xml di tutte le <b>schede audio</b> presenti nel database",
+ /*0129*/"Download the xml file of all the <b>webcams</b> in the database" => "Scarica il file xml di tutte le <b>webcam</b> presenti nel database",
+ /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Puoi scaricare l'intero database di h-node in un unico file xml per analizzarne i contenuti utilizzando uno script appropriato (ad esempio uno script Python o Perl o PHP)",
+ /*0131*/"Download the h-node hardware database in xml format" => "Scarica il database dell'hardware di h-node in formato xml",
+ /*0132*/"Database modifications" => "Modifiche al database",
+ /*0133*/"List of the database modifications carried out by users" => "Lista delle modifiche apportate al database dagli utenti",
+ /*0134*/"the model" => "il modello",
+ /*0135*/"has been inserted by" => "è stato inserito da",
+ /*0136*/"has been updated by" => "è stato modificato da",
+ /*0137*/"at" => "alle ore",
+ /*0138*/"last modifications" => "ultime modifiche",
+ /*0139*/"watch all modifications" => "guarda tutte le modifiche",
+ /*0140*/"the title" => "il titolo",
+ /*0141*/"the text of the wiki page" => "il testo della pagina",
+ /*0142*/"the wiki page has not been found" => "la pagina della wiki non è stata trovata",
+ /*0143*/"Page not-found" => "Pagina non trovata",
+ /*0144*/"Insert" => "Inserisci",
+ /*0145*/"Update" => "Modifica",
+ /*0146*/"History" => "History",
+ /*0147*/"Revision" => "Revisione",
+ /*0148*/"Differences" => "Differenze",
+ /*0149*/"Insert a new wiki page" => "Inserisci una nuova pagina nella wiki",
+ /*0150*/"Edit the wiki page" => "Modifica la pagina della wiki",
+ /*0151*/"Make current" => "Rendi revisione corrente",
+ /*0152*/"I want to make this revision the current revision" => "Voglio che questa revisione diventi quella corrente",
+ /*0153*/"Confirm" => "Conferma",
+ /*0154*/"Make this revision the current revision of the page" => "Rendi questa revisione la revisione corrente della pagina",
+ /*0155*/"This wiki page has been deleted" => "Questa pagina della wiki è stata cancellata",
+ /*0156*/"Talk" => "Discussione",
+ /*0157*/"Talk page of the wiki page" => "Pagina di discussione della pagina della wiki",
+ /*0158*/"a page with the same title already exists" => "esiste già una pagina con questo titolo",
+ /*0159*/"title is too long" => "il titolo è troppo lungo",
+ /*0160*/"the page text is too long" => "il testo della pagina è troppo lungo",
+ /*0161*/"History of the wiki page" => "History della pagina della wiki",
+ /*0162*/"Would you like to insert it?" => "Vuoi inserirla?",
+ /*0163*/"Wiki modifications" => "Modifiche alla Wiki",
+ /*0164*/"List of the wiki modifications carried out by users" => "Lista delle modifiche apportate alla Wiki dagli utenti",
+ /*0165*/"list of pages" => "lista delle pagine",
+ /*0166*/"List of wiki pages" => "Lista delle pagine della wiki",
+ /*0167*/"This wiki page has been blocked" => "Questa pagina della wiki è stata bloccata",
+ /*0168*/"unblock the wiki page" => "sblocca la pagina",
+ /*0169*/"block the wiki page" => "blocca la pagina",
+ /*0170*/"show the wiki page" => "mostra la pagina della wiki",
+ /*0171*/"hide the wiki page" => "nascondi la pagina della wiki",
+ /*0172*/"list of deleted pages" => "lista delle pagine cancellate",
+ /*0173*/"restore the wiki page" => "ripristina la pagina",
+ /*0174*/"delete the wiki page" => "cancella la pagina",
+ /*0175*/"list of blocked pages" => "lista delle pagine bloccate",
+ /*0176*/"special pages" => "pagine speciali",
+ /*0177*/"Actions carried out by administrators" => "Azioni compiute dagli amministratori",
+ /*0178*/"No bluetooth devices found" => "Non è stato trovato alcun dispositivo bluetooth",
+ /*0179*/"learn how to find it" => "scopri come individuarlo",
+ /*0180*/"Download the xml file of all the <b>bluetooth devices</b> in the database" => "Scarica il file xml di tutti i <b>dispositivi bluetooth</b> presenti nel database",
+ /*0181*/"License information" => "Informazioni sulla licenza",
+ /*0182*/"No acquisition card found" => "Non è stata trovata alcuna scheda d'acquisizione",
+ /*0183*/"No fingerprint readers found" => "Non è stato trovato alcun lettore di impronte digitali",
+ /*0184*/"Download the xml file of all the <b>acquisition cards</b> in the database" => "Scarica il file xml di tutte le <b>schede di acquisizione</b> presenti nel database",
+ /*0185*/"Download the xml file of all the <b>fingerprint readers</b> in the database" => "Scarica il file xml di tutti i <b>lettori di impronte digitali</b> presenti nel database",
+ /*0186*/"architecture" => "architettura",
+ /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Aggiungi qui il nome del dispositivo così com'è scritto sul dispositivo stesso o sulla confezione. Aggiungi tale nome solo se è diverso dal <i>nome del modello</i> già inserito nel campo precedente. Aggiungi il nuovo nome in modo che ci sia un nome per riga.",
+ /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Scrivi qui il nome del modello ottenuto dal comando lspci o dal comando lsusb.",
+ /*0189*/"This is the name of the chipset of your device." => "Questo è il nome del chipset del tuo dispositivo.",
+ /*0190*/"possible other names of the device" => "eventuali altri nomi del dispositivo",
+ /*0191*/"Description entry preview" => "Anteprima del campo descrizione",
+ /*0192*/"Page preview" => "Anteprima della pagina",
+ /*0193*/"This device page has been hidden" => "La pagina di questo dispositivo è stata nascosta",
+ /*0194*/"restore the device page" => "ripristina la pagina",
+ /*0195*/"hide the device page" => "nascondi la pagina",
+ /*0196*/"Download the xml file of all the <b>scanners</b> in the database" => "Scarica il file xml di tutti gli <b>scanner</b> presenti nel database",
+ /*0197*/"Special pages for administrators" => "Pagine speciali per gli amministratori",
+ /*0198*/"Special pages for moderators" => "Pagine speciali per i moderatori",
+ /*0199*/"see the page" => "guarda la pagina",
+ /*0200*/"hidden device pages" => "pagine nascoste di dispositivi",
+ /*0201*/"panel" => "pannello",
+ /*0202*/"List of hidden device pages" => "Lista di pagine nascoste di dispositivi",
+ /*0203*/"approve the device page" => "approva la pagina del dispositivo",
+ /*0204*/"This device page has not been approved yet" => "La pagina del dispositivo non è ancora stata approvata",
+ /*0205*/"Device pages that have to be approved" => "Pagine di dispositivi da approvare",
+ /*0206*/"The device page has to be approved by an administrator of the website" => "La pagina del dispositivo deve essere approvata da un amministratore del sito",
+ /*0207*/"permanently delete the device page" => "cancella definitivamente la pagina",
+ /*0208*/"This page has been permanently deleted by an administrator of the website" => "Questa pagina è stata definitivamente cancellata da un amministratore del sito",
+ /*0209*/"No ethernet devices found" => "Non è stata trovata alcuna scheda ethernet",
+ /*0210*/"free BIOS" => "BIOS libero?",
+ /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Noi sei un utente registrato oppure non hai eseguito il login. Il tuo contributo non verrà pubblicato finché un amministratore non l'avrà approvato. Se desideri che il tuo contributo sia automaticamente pubblicato per favore esegui il login oppure crea un account.",
+ /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "è stato inserito da un utente anonimo, deve essere approvato da un amministratore per essere pubblicato",
+ /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "puoi anche iscriverti al feed per ricevere le nuove modifiche che richiedono una moderazione",
+ /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "deve abilitare Javascript per usare correttamente le schede della lingua (vedi sotto)",
+ /*0215*/"yes" => "sì",
+ /*0216*/"works with 3D acceleration" => "funziona con accelerazione 3D",
+ /*0217*/"works, but without 3D acceleration" => "funziona, ma senza accelerazione 3D",
+ /*0218*/"it does not work" => "non funziona",
+ /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablet PC",
+ /*0220*/"Wifi cards" => "Schede wifi",
+ /*0221*/"Video cards" => "Schede video",
+ /*0222*/"Printers and multifunction" => "Stampanti e multifunzione",
+ /*0223*/"Scanners" => "Scanner",
+ /*0224*/"3G cards" => "Schede 3G",
+ /*0225*/"Sound cards" => "Schede audio",
+ /*0226*/"Webcams" => "Webcam",
+ /*0227*/"Bluetooth devices" => "Dispositivi bluetooth",
+ /*0228*/"TV/Video/FM acquisition cards" => "Schede di acquisizione TV/Video/FM",
+ /*0229*/"Fingerprint readers" => "Lettori di impronte digitali",
+ /*0230*/"Ethernet cards" => "Schede ethernet",
+ /*0231*/"Hardware" => "Hardware",
+ /*0232*/"Issues" => "Questioni",
+ /*0233*/"Search" => "Cerca",
+ /*0234*/"News" => "Notizie",
+ /*0235*/"Download" => "Scarica",
+ /*0236*/"Help" => "Aiuto",
+ /*0237*/"List of" => "Lista di",
+ /*0238*/"talk messages" => "messaggi",
+ /*0239*/"History" => "Revisioni",
+ /*0240*/"Revision" => "Revisione",
+ /*0241*/"This is an old revision of this page, as edited by" => "Questa è una vecchia revisione della pagina, così come è stata modificata da",
+ /*0242*/"It may differ significantly from the" => "Può differire significativamente dalla",
+ /*0243*/"Differences between the revision of" => "Differenze tra la revisione del",
+ /*0244*/"created by" => "creata da",
+ /*0245*/"and the revision of" => "e la revisione del",
+ /*0246*/"<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed." => "<b>Nota</b>: il testo in <del>rosso</del> è stato cancellato dalla revisione precedente, il testo in <ins>verde</ins> è stato aggiunto in questa revisione e il testo in <span class='gray_text_notice'>grigio</span> non è stato cambiato",
+ /*0247*/"Insert" => "Inserisci",
+ /*0248*/"Edit" => "Modifica",
+ /*0249*/"Talk page" => "Pagina di discussione",
+ /*0250*/"Download the xml file of all the <b>ethernet cards</b> in the database" => "Scarica il file xml di tutte le <b>schede ethernet</b> presenti nel database",
+ /*0251*/"No SD card readers found" => "Non è stato trovato alcun lettore di schede SD",
+ /*0252*/"SD card readers" => "Lettori di schede SD",
+ /*0253*/"Download the xml file of all the <b>SD card readers</b> in the database" => "Scarica il file xml di tutti i <b>lettori di schede SD</b> presenti nel database",
+ /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Non ci sono dispositivi nel database con il codice vendorid:productid da te specificato",
+ /*0255*/"Would you like to add it to the database?" => "Vorresti inserirlo nel database?",
+ /*0256*/"can free operating systems be installed?" => "possono essere installati sistemi operativi liberi?",
+ /*0257*/"This issue has been deleted" => "Questa questione è stata cancellata",
+ /*0258*/"hidden for those who are not moderators" => "Nascosto per coloro che non sono moderatori",
+ /*0259*/"This issue is hidden for all the users that are not moderators" => "Questa questione è nascosta per tutti gli utenti non moderatori",
+ /*0260*/"hide the issue" => "nascondi la questione",
+ /*0261*/"show the issue" => "mostra la questione",
+ /*0262*/"open the issue again" => "apri nuovamente la questione",
+ /*0263*/"close the issue" => "chiudi la questione",
+ /*0264*/"This issue is closed" => "Questa questione è stata chiusa",
+ /*0265*/"This issue is opened" => "Questa questione è aperta",
+ /*0266*/"does it adopt any techniques to track users?" => "adotta qualche tecnica per tracciare gli utenti?",
+ /*0267*/"Actions carried out by users" => "Azioni compiute dagli utenti",
+ /*0268*/"No modems found" => "Non è stato trovato alcun modem",
+ /*0269*/"Download the xml file of all the <b>modems</b> in the database" => "Scarica il file xml di tutti i <b>modem</b> presenti nel database",
+ /*0270*/"Modems and ADSL cards" => "Modem e schede ADSL",
+ /*0271*/"Table of contents" => "Indice dei contenuti",
+ /*0272*/"by" => "creato da",
+ /*0273*/"Add a message" => "Aggiungi un messaggio",
+ /*0274*/"Save" => "Salva",
+ /*0275*/"Revision of the wiki page" => "Revisione della pagina della wiki",
+ /*0276*/"Preview" => "Anteprima",
+ /*0277*/"January" => "gennaio",
+ /*0278*/"February" => "febbraio",
+ /*0279*/"March" => "marzo",
+ /*0280*/"April" => "aprile",
+ /*0281*/"May" => "maggio",
+ /*0282*/"June" => "giugno",
+ /*0283*/"July" => "luglio",
+ /*0284*/"August" => "agosto",
+ /*0285*/"September" => "settembre",
+ /*0286*/"October" => "ottobre",
+ /*0287*/"November" => "novembre",
+ /*0288*/"December" => "dicembre",
+ /*0289*/"not-specified" => "non specificato",
+ /*0290*/"last-inserted" => "ultimo inserito",
+ /*0291*/"last inserted" => "ultimo inserito",
+ /*0292*/"alphabetically" => "alfabeticamente",
+ /*0293*/"alphabetically-desc" => "alfabeticamente decresc",
+ /*0294*/"alphabetically desc" => "alfabeticamente decresc",
+ /*0295*/"undef" => "tutti",
+ /*0296*/"All" => "Tutti",
+ /*0297*/"inkjet" => "getto d'inchiostro",
+ /*0298*/"A-Full" => "A-Piena",
+ /*0299*/"B-Partial" => "B-Parziale",
+ /*0300*/"C-None" => "C-Nessuna",
+ /*0301*/"A-platinum" => "A-platino",
+ /*0302*/"B-gold" => "B-oro",
+ /*0303*/"C-silver" => "C-argento",
+ /*0304*/"D-bronze" => "D-bronzo",
+ /*0305*/"E-garbage" => "E-spazzatura",
+ /*0306*/"not specified how it works" => "non è stato specificato come funziona",
+ /*0307*/"there is no wifi card" => "la scheda wifi non è presente",
+ /*0308*/"there is no webcam" => "la webcam non è presente",
+ /*0309*/"it works" => "funziona",
+ /*0310*/"does_not_work" => "non funziona",
+ /*0311*/"works_without_3D" => "funziona senza 3D",
+ /*0312*/"works_with_3D" => "funziona con 3D",
+ /*0313*/"list of languages" => "elenco delle lingue",
+ /*0314*/"Choose the language" => "Scegli la lingua",
+ /*0315*/"back" => "indietro",
+ /*0316*/"next" => "successivi",
+ /*0317*/"previous" => "precedenti",
+ /*0318*/"type" => "tipo",
+ /*0319*/"contact us" => "contattaci",
+ /*0320*/"credits" => "crediti",
+ /*0321*/"desktop version" => "versione desktop",
+ /*0322*/"RAID adapters" => "Adattatori RAID",
+ /*0323*/"No RAID adapter found" => "Nessun adattatore RAID è stato trovato",
+ /*0324*/"Download the xml file of all the <b>RAID adapters</b> in the database" => "Scarica il file xml di tutti gli <b>adattatori RAID</b> presenti nel database",
+ /*0325*/"No PCMCIA Controller found" => "Nessun controller PCMCIA è stato trovato",
+ /*0326*/"PCMCIA Controllers" => "Controller PCMCIA",
+ /*0327*/"Download the xml file of all the <b>PCMCIA Controllers</b> in the database" => "Scarica il file xml di tutti i <b>Controller PCMCIA</b> presenti nel database",
+ /*0328*/"notebook" => "notebook",
+ /*0329*/"netbook" => "netbook",
+ /*0330*/"motherboard" => "scheda madre",
+ /*0331*/"tablet" => "tablet",
+ /*0332*/"netbooks" => "netbook",
+ /*0333*/"Notebooks" => "Notebook",
+ /*0334*/"tablet PC" => "PC tablet",
+ /*0335*/"motherboards" => "schede madri",
+ /*0336*/"Write a comma-separated list of kernel versions" => "Scrivi una lista di kernel separati da virgole",
+ /*0337*/"Example" => "Esempio",
+ /*0338*/"free boot firmware?" => "firmware per boot libero?",
+ /*0339*/"can be installed" => "può essere installato",
+ /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "ha un firmware per il boot (BIOS, UEFI,..) libero?",
+ /*0341*/"Hello,\n\nyou have registered an account at"=>"Ciao,\n\nhai richiesto l'attivazione di un account al sito",
+ /*0342*/"with the following data:\nusername: " => "con i seguenti dati:\nusername: ",
+ /*0343*/"in order to confirm the registration of the new account please follow the link below" => "per confermare la registrazione per favore segui il link sottostante",
+ /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Se non vuoi confermare la registrazione dell'account\naspetta un ora e il tuo username e la tua e-mail verranno cancellati dal nostro database",
+ /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Se hai ricevuto questa e-mail per errore, per favore cancellala",
+ /*0346*/"account registration" => "registrazione account",
+ /*0347*/"Host Controllers" => "Host Controller",
+ /*0348*/"No Host Controller found" => "Non è stato trovato alcun host controller",
+ /*0349*/"Download the xml file of all the <b>Host Controllers</b> in the database" => "Scarica il file xml di tutti gli <b>Host Controller</b> presenti nel database",
+ /*0350*/"PCMCIA Controller" => "Controller PCMCIA",
+ /*0351*/"USB Controller" => "Controller USB",
+ /*0352*/"Firewire Controller" => "Controller Firewire",
+ /*0353*/"HECI Controller" => "Controller HECI",
+ /*0354*/"device type" => "tipo di dispositivo",
+ /*0355*/"Thanks for your contribution!" => "Grazie per il tuo contributo!",
+ /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "il dispositivo impedisce l'installazione di schede wifi non approvate dal rivenditore/distributore?",
+ /*0357*/"see the details inside the description entry" => "guarda i dettagli all'interno del campo descrizione",
+ /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Grazie per aver aiutato il progetto h-node e il movimento del software libero!",
+ /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Hai appena inserito un nuovo portatile. Potresti gentilmente inserire separatamente anche i suoi dispositivi?",
+ /*0360*/"insert" => "inserisci",
+ /*0361*/"List of allowed fully free distributions" => "Lista delle distribuzioni completamente libere ammesse",
+ /*0362*/"Insert a new distro" => "Inserisci una nuova distribuzione",
+ /*0363*/"DISTRO-CODE" => "CODICE DISTRIBUZIONE",
+ ),
+ 'es' => array
+ (
+ /*0001*/"Search one device in the archive" => "Busque un dispositivo en el archivo",
+ /*0002*/"hardware type" => "tipo de hardware",
+ /*0003*/"the model name contains" => "el nombre del modelo contiene",
+ /*0004*/"List of issues" => "Lista de incidencias",
+ /*0005*/"TITLE" => "TITULO",
+ /*0006*/"TOPIC" => "ARGUMENTO",
+ /*0007*/"OPENED BY" => "ABIERTO POR",
+ /*0008*/"DATE" => "FECHA",
+ /*0009*/"REPLIES" => "RESPUESTAS",
+ /*0010*/"PRIORITY" => "PRIORIDAD",
+ /*0011*/"STATUS" => "ESTADO",
+ /*0012*/"You have to" => "Tiene que",
+ /*0013*/"in order to submit an issue" => "para poder agregar una incidencia",
+ /*0014*/"in order to add a message" => "para poder agregar un mensaje",
+ /*0015*/"Description" => "Descripción",
+ /*0016*/"Messages" => "Mensajes",
+ /*0017*/"this message has been deleted" => "este mensaje ha sido borrado",
+ /*0018*/"in order to submit a message to this issue" => "para poder agregar un mensaje a esta incidencia",
+ /*0019*/"model name" => "nombre del modelo",
+ /*0020*/"model type" => "tipo de modelo",
+ /*0021*/"year of commercialization" => "año de comercialización",
+ /*0022*/"Results of the search" => "Resultado de la búsqueda",
+ /*0023*/"page list" => "página",
+ /*0024*/"No devices found" => "No se encontró ningún dispositivo",
+ /*0025*/"vendor" => "fabricante",
+ /*0026*/"compatibility" => "compatibilidad",
+ /*0027*/"year" => "año",
+ /*0028*/"subtype" => "subtipo",
+ /*0029*/"sort by" => "ordenar por",
+ /*0030*/"interface" => "interfaz",
+ /*0031*/"does it work?" => "¿funciona?",
+ /*0032*/"preview of the message" => "vista previa del mensaje",
+ /*0033*/"preview of the new issue message" => "vista previa del mensaje de la incidencia",
+ /*0034*/"Add a message to this issue" => "Agregue un mensaje a esta incidencia",
+ /*0035*/"Add a new issue" => "Agregue una nueva incidencia",
+ /*0036*/"MESSAGE" => "MENSAJE",
+ /*0037*/"there are no messages" => "no hay mensajes",
+ /*0038*/"No notebooks found" => "No se encontró ningún computador portátil",
+ /*0039*/"subtype (notebook, netbook, tablet)" => "subtipo (portátil, subportátil, tablet)",
+ /*0040*/"compatibility with free software" => "compatibilidad con software libre",
+ /*0041*/"view the other specifications" => "ver otras especificaciones",
+ /*0042*/"model" => "modelo",
+ /*0043*/"model id" => "id del modelo",
+ /*0044*/"tested on" => "probado con",
+ /*0045*/"tested with the following kernel libre" => "probado con el siguiente kernel libre",
+ /*0046*/"video card model" => "modelo de tarjeta de video",
+ /*0047*/"wifi model" => "modelo de tarjeta de red inalámbrica",
+ /*0048*/"GNU/Linux distribution used for the test" => "distribución GNU/Linux usada para la prueba",
+ /*0049*/"does the video card work?" => "¿funciona la tarjeta de video?",
+ /*0050*/"does the wifi card work?" => "¿funciona la tarjeta de red inalámbrica?",
+ /*0051*/"Description: (write here all the useful information)" => "Descripción (escriba aquí toda la información útil)",
+ /*0052*/"discover all the wiki tags" => "mostrar todas las etiquetas del wiki",
+ /*0053*/"Fields marked with <b>*</b> are mandatory" => "Campos marcados con <b>*</b> son obligatorios",
+ /*0054*/"No printers found" => "No se encontró ninguna impresora",
+ /*0055*/"interface" => "interfaz",
+ /*0056*/"VendorID:ProductID code of the device" => "código VendorID:ProductID del dispositivo",
+ /*0057*/"free driver used" => "driver libre usado",
+ /*0058*/"set not-specified if not sure" => "seleccione not-specified si no esta seguro/a",
+ /*0059*/"see the help page or leave blank if you are not sure" => "vea la página de ayuda o deje vacío si no esta seguro/a",
+ /*0060*/"No scanners found" => "No se encontró ningún escáner",
+ /*0061*/"No video cards found" => "No se encontró ninguna tarjeta de video",
+ /*0062*/"how does it work with free software?" => "¿como funciona con software libre?",
+ /*0063*/"No wifi cards found" => "No se encontró ninguna tarjeta de red inalámbrica",
+ /*0064*/"does it work with free software?" => "¿funciona con software libre?",
+ /*0065*/"differences in the entry" => "diferencias en el campo",
+ /*0066*/"No 3G cards found" => "No se encontró ninguna tarjeta 3G",
+ /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Por favor especifique en el campo de descripción inferior el Proveedor de Internet (ISP) y el país donde se provee el servicio",
+ /*0068*/"webcam model" => "modelo de cámara web",
+ /*0069*/"does it have a free BIOS?" => "¿tiene BIOS libre?",
+ /*0070*/"does the webcam work?" => "¿funciona la cámara web?",
+ /*0071*/"Current revision" => "Revisión actual",
+ /*0072*/"Hello" => "Hola",
+ /*0073*/"Your" => "Su",
+ /*0074*/"control panel" => "panel de control",
+ /*0075*/"create new account" => "crear una cuenta",
+ /*0076*/"request new password" => "solicitar nueva contraseña",
+ /*0077*/"website statistics" => "estadísticas del sito",
+ /*0078*/"hardware in the database" => "hardware en la base de datos",
+ /*0079*/"users logged" => "usuarios en línea",
+ /*0080*/"Watch your public profile" => "Ver su perfil público",
+ /*0081*/"Edit your profile" => "Editar su perfil",
+ /*0082*/"Change your e-mail address" => "Cambiar su dirección de correo electrónico",
+ /*0083*/"Change your password" => "Cambiar su contraseña",
+ /*0084*/"Delete your account" => "Borrar su cuenta",
+ /*0085*/"choose the username" => "elija su nombre de usuario",
+ /*0086*/"characters allowed" => "caracteres permitidos",
+ /*0087*/"your e-mail address" => "su dirección de correo electrónico",
+ /*0088*/"necessary to confirm the registration" => "necesario para confirmar el registro",
+ /*0089*/"choose the password" => "elija la contraseña",
+ /*0090*/"confirm the password" => "confirme la contraseña",
+ /*0091*/"write the code above" => "escriba el código mostrado en la parte superior",
+ /*0092*/"write your username" => "escriba su nombre de usuario",
+ /*0093*/"Actions carried out by moderators" => "Acciones efectuadas por los moderadores",
+ /*0094*/"meet" => "conoce a",
+ /*0095*/"Public profile of" => "Perfil público de",
+ /*0096*/"See all the contributions of" => "Ver todas las contribuciones de",
+ /*0097*/"My website" => "Mi sitio web",
+ /*0098*/"My real name" => "Mi nombre real",
+ /*0099*/"My e-mail address" => "Mi dirección de correo electrónico",
+ /*0100*/"I'm from" => "Soy de",
+ /*0101*/"Birthdate" => "Fecha de nacimiento",
+ /*0102*/"My favourite distribution" => "Mi distribución favorita",
+ /*0103*/"Free software projects I'm working on" => "Proyectos de Software Libre en los que colaboro",
+ /*0104*/"My description" => "Mi descripción",
+ /*0105*/"contributions" => "contribuciones",
+ /*0106*/"contributions of" => "contribuciones de",
+ /*0107*/"No sound cards found" => "No se encontró ninguna tarjeta de audio",
+ /*0108*/"LAST UPDATE" => "ÚLTIMA MODIFICACIÓN",
+ /*0109*/"search by" => "buscar por",
+ /*0110*/"analyze the output of the lspci command" => "analice la salida de la orden lscpi",
+ /*0111*/"paste the output of the lspci command" => "pegue la salida de la orden lspci",
+ /*0112*/"works, but without 3D acceleration" => "funciona, pero sin aceleración 3D",
+ /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "el texto insertado no parece ser la salida de la orden lspci -vmmnn. Por favor revise el texto e intente nuevamente",
+ /*0114*/"Search form" => "Formulario de búsqueda",
+ /*0115*/"write here the output of lspci -vmmnn" => "escriba aquí la salida de la orden lspci -vmmnn",
+ /*0116*/"The following devices has been found in the database" => "Los siguientes dispositivos han sido encontrados en la base de datos",
+ /*0117*/"yes" => "si",
+ /*0118*/"no" => "no",
+ /*0119*/"The following devices has not been found in the database" => "Los siguientes dispositivos no han sido encontrados en la base de datos",
+ /*0120*/"can you please insert them?" => "¿podría insertarlos?",
+ /*0121*/"No webcams found" => "No se encontró ninguna cámara web",
+ /*0122*/"Download the xml file of all the database" => "Descargue el archivo xml de toda la base de datos",
+ /*0123*/"Download the xml file of all the <b>notebooks</b> in the database" => "Descargue el archivo xml de todos los <b>computadores portátiles</b> presentes en la base de datos",
+ /*0124*/"Download the xml file of all the <b>wifi cards</b> in the database" => "Descargue el archivo xml de todas las <b>tarjetas de red inalámbrica</b> presentes en la base de datos",
+ /*0125*/"Download the xml file of all the <b>video cards</b> in the database" => "Descargue el archivo xml de todas las <b>tarjetas de video</b> presentes en la base de datos",
+ /*0126*/"Download the xml file of all the <b>printers</b> in the database" => "Descargue el archivo xml de todas las <b>impresoras</b> presentes en la base de datos",
+ /*0127*/"Download the xml file of all the <b>3G cards</b> in the database" => "Descargue el archivo xml de todas las <b>tarjetas 3G</b> presentes en la base de datos",
+ /*0128*/"Download the xml file of all the <b>sound cards</b> in the database" => "Descargue el archivo xml de todas las <b>tarjetas de audio</b> presentes en la base de datos",
+ /*0129*/"Download the xml file of all the <b>webcams</b> in the database" => "Descargue el archivo xml de todas las <b>cámaras web</b> presentes en la base de datos",
+ /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Puede descargar toda la base de datos de h-node en un archivo xml único para poder analizar su contenido por medio de otro script apropiado (por ejemplo un script en Python, Perl o PHP)",
+ /*0131*/"Download the h-node hardware database in xml format" => "Descargue la base de datos de h-node en formato xml",
+ /*0132*/"Database modifications" => "Modificaciones a la base de datos",
+ /*0133*/"List of the database modifications carried out by users" => "Lista de modificaciones realizada por los usuarios",
+ /*0134*/"the model" => "el modelo",
+ /*0135*/"has been inserted by" => "ha sido agregado por",
+ /*0136*/"has been updated by" => "ha sido modificado por",
+ /*0137*/"at" => "en",
+ /*0138*/"last modifications" => "últimas modificaciones",
+ /*0139*/"watch all modifications" => "ver todas las modificaciones",
+ /*0140*/"the title" => "el titulo",
+ /*0141*/"the text of the wiki page" => "el texto de la página",
+ /*0142*/"the wiki page has not been found" => "la página del wiki no ha sido encontrada",
+ /*0143*/"Page not-found" => "Página no encontrada",
+ /*0144*/"Insert" => "Agregar",
+ /*0145*/"Update" => "Actualizar",
+ /*0146*/"History" => "Historial",
+ /*0147*/"Revision" => "Revisión",
+ /*0148*/"Differences" => "Diferencias",
+ /*0149*/"Insert a new wiki page" => "Agregar una página nueva al wiki",
+ /*0150*/"Edit the wiki page" => "Editar la página del wiki",
+ /*0151*/"Make current" => "Hacer revisión actual",
+ /*0152*/"I want to make this revision the current revision" => "Quiero hacer ésta revisión la revisión actual",
+ /*0153*/"Confirm" => "Confirmar",
+ /*0154*/"Make this revision the current revision of the page" => "Hacer esta revisión la revisión actual de la página",
+ /*0155*/"This wiki page has been deleted" => "Ésta página del wiki ha sido borrada",
+ /*0156*/"Talk" => "Discusión",
+ /*0157*/"Talk page of the wiki page" => "Página de discusión de la página del wiki",
+ /*0158*/"a page with the same title already exists" => "una página con el mismo titulo ya existe",
+ /*0159*/"title is too long" => "el titulo es demasiado largo",
+ /*0160*/"the page text is too long" => "el texto de la página es demasiado largo",
+ /*0161*/"History of the wiki page" => "Historial de la página del wiki",
+ /*0162*/"Would you like to insert it?" => "¿Le gustaría agregarlo?",
+ /*0163*/"Wiki modifications" => "Modificaciones al wiki",
+ /*0164*/"List of the wiki modifications carried out by users" => "Lista de modificaciones aportadas al wiki por los usuarios",
+ /*0165*/"list of pages" => "lista de páginas",
+ /*0166*/"List of wiki pages" => "Lista de las páginas del wiki",
+ /*0167*/"This wiki page has been blocked" => "Ésta página del wiki ha sido bloqueada",
+ /*0168*/"unblock the wiki page" => "desbloquear la página",
+ /*0169*/"block the wiki page" => "bloquear la página",
+ /*0170*/"show the wiki page" => "mostrar la página del wiki",
+ /*0171*/"hide the wiki page" => "esconder la página del wiki",
+ /*0172*/"list of deleted pages" => "lista de las páginas borradas",
+ /*0173*/"restore the wiki page" => "restaurar la página",
+ /*0174*/"delete the wiki page" => "borrar la página",
+ /*0175*/"list of blocked pages" => "lista de las páginas bloqueadas",
+ /*0176*/"special pages" => "páginas especiales",
+ /*0177*/"Actions carried out by administrators" => "Acciones realizadas por administradores",
+ /*0178*/"No bluetooth devices found" => "No se encontró ningún dispositivo bluetooth",
+ /*0179*/"learn how to find it" => "aprenda como encontrarlo",
+ /*0180*/"Download the xml file of all the <b>bluetooth devices</b> in the database" => "Descargue el archivo xml de todas los <b>dispositivos bluetooth</b> presentes en la base de datos",
+ /*0181*/"License information" => "Información de licencia",
+ /*0182*/"No acquisition card found" => "No se encontró ninguna tarjeta de adquisición",
+ /*0183*/"No fingerprint readers found" => "No se encontró ningún lector de huellas digitales",
+ /*0184*/"Download the xml file of all the <b>acquisition cards</b> in the database" => "Descargue el archivo xml de todas las <b>tarjetas de adquisición</b> presentes en la base de datos",
+ /*0185*/"Download the xml file of all the <b>fingerprint readers</b> in the database" => "Descargue el archivo xml de todas los <b>lectores de huellas digitales</b> presentes en la base de datos",
+ /*0186*/"architecture" => "arquitectura",
+ /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Inserte aquí el nombre del dispositivo como esta escrito en el dispositivo o la caja del dispositivo. Inserte solo y si es diferente del <i>model name</i> que ya se encuentra dentro de la entrada superior. Inserte de manera que exista un nombre diferente en cada linea",
+ /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Escriba aquí el nombre del modelo obtenido por la orden lspci o lsusb.",
+ /*0189*/"This is the name of the chipset of your device." => "Este es el nombre del chipset de tu dispositivo.",
+ /*0190*/"possible other names of the device" => "otros posibles nombres del dispositivo",
+ /*0191*/"Description entry preview" => "Vista previa de la descripción",
+ /*0192*/"Page preview" => "Vista previa",
+ /*0193*/"This device page has been hidden" => "La página del dispositivo ha sido escondida",
+ /*0194*/"restore the device page" => "restaure la página del dispositivo",
+ /*0195*/"hide the device page" => "esconda la página del dispositivo",
+ /*0196*/"Download the xml file of all the <b>scanners</b> in the database" => "Descargue el archivo xml de todos los <b>escáneres</b> presentes en la base de datos",
+ /*0197*/"Special pages for administrators" => "Páginas especiales para administradores",
+ /*0198*/"Special pages for moderators" => "Páginas especiales para moderadores",
+ /*0199*/"see the page" => "ver la página",
+ /*0200*/"hidden device pages" => "página escondida del dispositivo",
+ /*0201*/"panel" => "panel",
+ /*0202*/"List of hidden device pages" => "Lista de páginas de dispositivos escondidos",
+ /*0203*/"approve the device page" => "apruebe la página del dispositivo",
+ /*0204*/"This device page has not been approved yet" => "Esta página del dispositivo aun no ha sido aprobada",
+ /*0205*/"Device pages that have to be approved" => "Páginas de dispositivos para ser aprobadas",
+ /*0206*/"The device page has to be approved by an administrator of the website" => "La página del dispositivo tiene que ser aprobada por un administrador del sito",
+ /*0207*/"permanently delete the device page" => "eliminar la página del dispositivo permanentemente",
+ /*0208*/"This page has been permanently deleted by an administrator of the website" => "Esta página ha sido permanentemente eliminada por un administrador del sitio",
+ /*0209*/"No ethernet devices found" => "No se encontró ningún dispositivo ethernet",
+ /*0210*/"free BIOS" => "¿BIOS libre?",
+ /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "No es un usuario registrado o no ha iniciado sesión. Su contribución no será publicada hasta que un administrador la apruebe. Si quiere que sus contribuciones sean publicadas automáticamente por favor inicie sesión o cree una cuenta.",
+ /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "ha sido agregado por un usuario anónimo, tiene que ser aprobado por un administrador para ser publicado",
+ /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "puede también suscribirse al feed para recibir las nuevas modificaciones que necesitan moderación",
+ /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "necesita javascript habilitado para poder usar correctamente las pestañas de idioma (vea debajo)",
+ /*0215*/"yes" => "si",
+ /*0216*/"works with 3D acceleration" => "funciona con aceleración 3D",
+ /*0217*/"works, but without 3D acceleration" => "funciona, pero sin aceleración 3D",
+ /*0218*/"it does not work" => "no funciona",
+ /*0219*/"Notebooks, netbooks, tablet PC" => "Computadores portátiles, subportátiles, tablet PC",
+ /*0220*/"Wifi cards" => "Tarjetas de red inalámbrica",
+ /*0221*/"Video cards" => "Tarjetas de video",
+ /*0222*/"Printers and multifunction" => "Impresoras y multifuncionales",
+ /*0223*/"Scanners" => "Escáners",
+ /*0224*/"3G cards" => "Tarjetas 3G",
+ /*0225*/"Sound cards" => "Tarjetas de audio",
+ /*0226*/"Webcams" => "Cámaras web",
+ /*0227*/"Bluetooth devices" => "Dispositivos bluetooth",
+ /*0228*/"TV/Video/FM acquisition cards" => "Tarjetas de adquisición TV/Video/FM",
+ /*0229*/"Fingerprint readers" => "Lectores de huellas digitales",
+ /*0230*/"Ethernet cards" => "Tarjetas de ethernet",
+ /*0231*/"Hardware" => "Hardware",
+ /*0232*/"Issues" => "Incidencias",
+ /*0233*/"Search" => "Búsqueda",
+ /*0234*/"News" => "Noticias",
+ /*0235*/"Download" => "Descarga",
+ /*0236*/"Help" => "Ayuda",
+ /*0237*/"List of" => "Lista de",
+ /*0238*/"talk messages" => "mensajes",
+ /*0239*/"History" => "Historial",
+ /*0240*/"Revision" => "Revisión",
+ /*0241*/"This is an old revision of this page, as edited by" => "Esta es una revisión anterior de esta página, editada por",
+ /*0242*/"It may differ significantly from the" => "Puede diferir significantemente de la",
+ /*0243*/"Differences between the revision of" => "Diferencias entre las revisiones de",
+ /*0244*/"created by" => "creado por",
+ /*0245*/"and the revision of" => "y la revisión de",
+ /*0246*/"<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed." => "<b>Nota</b>: el texto en <del>rojo</del> ha sido borrado de la revisión anterior, el texto en <ins>verde</ins> ha sido agregado en esta revisión y el texto en <span class='gray_text_notice'>gris</span> no ha sido cambiado",
+ /*0247*/"Insert" => "Insertar",
+ /*0248*/"Edit" => "Editar",
+ /*0249*/"Talk page" => "Página de discusión",
+ /*0250*/"Download the xml file of all the <b>ethernet cards</b> in the database" => "Descargue el archivo xml de todas las <b>tarjetas de ethernet</b> presentes en la base de datos",
+ /*0251*/"No SD card readers found" => "No se encontró ningún lector de tarjetas SD",
+ /*0252*/"SD card readers" => "Lectores de tarjetas SD",
+ /*0253*/"Download the xml file of all the <b>SD card readers</b> in the database" => "Descargue el archivo xml de todos los <b>lectores de tarjetas SD</b> presentes en la base de datos",
+ /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "No hay dispositivos en la base de datos con el código vendorid:productid que ha especificado",
+ /*0255*/"Would you like to add it to the database?" => "¿Le gustaría agregarlo a la base de datos?",
+ /*0256*/"can free operating systems be installed?" => "¿puede ser instalado un sistema libre?",
+ /*0257*/"This issue has been deleted" => "Esta incidencia ha sido eliminada",
+ /*0258*/"hidden for those who are not moderators" => "Oculta para aquellos que no son moderadores",
+ /*0259*/"This issue is hidden for all the users that are not moderators" => "Esta incidencia está oculta para todos los usuarios que no son moderadores",
+ /*0260*/"hide the issue" => "esconder la incidencia",
+ /*0261*/"show the issue" => "mostrar la incidencia",
+ /*0262*/"open the issue again" => "abrir nuevamente la incidencia",
+ /*0263*/"close the issue" => "cerrar la incidencia",
+ /*0264*/"This issue is closed" => "Esta incidencia está cerrada",
+ /*0265*/"This issue is opened" => "Esta incidencia está abierta",
+ /*0266*/"does it adopt any techniques to track users?" => "¿adopta alguna técnica para rastrear a los usuarios?",
+ /*0267*/"Actions carried out by users" => "Acciones realizadas por usuarios",
+ /*0268*/"No modems found" => "No se encontró ningún modem",
+ /*0269*/"Download the xml file of all the <b>modems</b> in the database" => "Descargue el archivo xml de todos los <b>modems</b> presentes en la base de datos",
+ /*0270*/"Modems and ADSL cards" => "Modems y tarjetas ADSL",
+ /*0271*/"Table of contents" => "Tabla de contenido",
+ /*0272*/"by" => "creado por",
+ /*0273*/"Add a message" => "Agregar un mensaje",
+ /*0274*/"Save" => "Guardar",
+ /*0275*/"Revision of the wiki page" => "Revisión de la página del wiki",
+ /*0276*/"Preview" => "Vista previa",
+ /*0277*/"January" => "Enero",
+ /*0278*/"February" => "Febrero",
+ /*0279*/"March" => "Marzo",
+ /*0280*/"April" => "Abril",
+ /*0281*/"May" => "Mayo",
+ /*0282*/"June" => "Junio",
+ /*0283*/"July" => "Julio",
+ /*0284*/"August" => "Agosto",
+ /*0285*/"September" => "Septiembre",
+ /*0286*/"October" => "Octubre",
+ /*0287*/"November" => "Noviembre",
+ /*0288*/"December" => "Diciembre",
+ /*0289*/"not-specified" => "no especificado",
+ /*0290*/"last-inserted" => "último insertado",
+ /*0291*/"last inserted" => "último insertado",
+ /*0292*/"alphabetically" => "alfabéticamente",
+ /*0293*/"alphabetically-desc" => "alfabéticamente descendiente",
+ /*0294*/"alphabetically desc" => "alfabéticamente descendiente",
+ /*0295*/"undef" => "sin definir",
+ /*0296*/"All" => "Todo",
+ /*0297*/"inkjet" => "inyección de tinta",
+ /*0298*/"A-Full" => "A-Completa",
+ /*0299*/"B-Partial" => "B-Parcial",
+ /*0300*/"C-None" => "C-Ninguna",
+ /*0301*/"A-platinum" => "A-platino",
+ /*0302*/"B-gold" => "B-oro",
+ /*0303*/"C-silver" => "C-plata",
+ /*0304*/"D-bronze" => "D-bronce",
+ /*0305*/"E-garbage" => "E-basura",
+ /*0306*/"not specified how it works" => "sin especificar como funciona",
+ /*0307*/"there is no wifi card" => "no hay tarjeta de red inalámbrica presente",
+ /*0308*/"there is no webcam" => "no hay cámara web presente",
+ /*0309*/"it works" => "funciona",
+ /*0310*/"does_not_work" => "no funciona",
+ /*0311*/"works_without_3D" => "funciona sin 3D",
+ /*0312*/"works_with_3D" => "funciona con 3D",
+ /*0313*/"list of languages" => "lista de idiomas",
+ /*0314*/"Choose the language" => "Seleccione un idioma",
+ /*0315*/"back" => "regresar",
+ /*0316*/"next" => "siguiente",
+ /*0317*/"previous" => "anterior",
+ /*0318*/"type" => "tipo",
+ /*0319*/"contact us" => "contacto",
+ /*0320*/"credits" => "créditos",
+ /*0321*/"desktop version" => "versión de escritorio",
+ /*0322*/"RAID adapters" => "Adaptador RAID",
+ /*0323*/"No RAID adapter found" => "No se encontró ningún adaptador RAID",
+ /*0324*/"Download the xml file of all the <b>RAID adapters</b> in the database" => "Descargue el archivo xml de todos los <b>adaptadores RAID</b> presentes en la base de datos",
+ /*0325*/"No PCMCIA Controller found" => "No se encontró ningún controlador PCMCIA",
+ /*0326*/"PCMCIA Controllers" => "Controlador PCMCIA",
+ /*0327*/"Download the xml file of all the <b>PCMCIA Controllers</b> in the database" => "Descargue el archivo xml de todos los <b>controladores PCMCIA</b> presentes en la base de datos",
+ /*0328*/"notebook" => "computadores portátiles",
+ /*0329*/"netbook" => "netbook",
+ /*0330*/"motherboard" => "tarjeta madre",
+ /*0331*/"tablet" => "tablet",
+ /*0332*/"netbooks" => "netbook",
+ /*0333*/"Notebooks" => "Computador portátil",
+ /*0334*/"tablet PC" => "PC tablet",
+ /*0335*/"motherboards" => "tarjetas madre",
+ /*0336*/"Write a comma-separated list of kernel versions" => "Escriba una lista de núcleos separada por comas",
+ /*0337*/"Example" => "Ejemplo",
+ /*0338*/"free boot firmware?" => "¿firmware boot libre?",
+ /*0339*/"can be installed" => "puede ser instalado",
+ /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "¿tiene un firmware boot (BIOS, UEFI,..) libre?",
+ /*0341*/"Hello,\n\nyou have registered an account at"=>"Hola,\n\nha registrado una cuenta en el sitio",
+ /*0342*/"with the following data:\nusername: " => "con la siguiente información:\nusername: ",
+ /*0343*/"in order to confirm the registration of the new account please follow the link below" => "para poder confirmar el registro de la nueva cuenta por favor siga el siguiente enlace",
+ /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Si no quiere confirmar el registro de la cuenta\nentonces espere una hora, su usuario y correo electrónico serán borrados de la base de datos",
+ /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Si recibió este correo electrónico por error, por favor haga caso omiso del mensaje",
+ /*0346*/"account registration" => "registro de cuenta",
+ /*0347*/"Host Controllers" => "Controlador de Host",
+ /*0348*/"No Host Controller found" => "No se encontró ningún controlador de host",
+ /*0349*/"Download the xml file of all the <b>Host Controllers</b> in the database" => "Descargue el archivo xml de todos los <b>controladores de host</b> presentes en la base de datos",
+ /*0350*/"PCMCIA Controller" => "Controlador PCMCIA",
+ /*0351*/"USB Controller" => "Controlador USB",
+ /*0352*/"Firewire Controller" => "Controlador Firewire",
+ /*0353*/"HECI Controller" => "Controlador HECI",
+ /*0354*/"device type" => "tipo de dispositivo",
+ /*0355*/"Thanks for your contribution!" => "¡Gracias por su contribución!",
+ /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "¿el dispositivo evita la instalación de tarjetas inalámbricas no aprobadas por el distribuidor?",
+ /*0357*/"see the details inside the description entry" => "vea los detalles dentro del campo de descripción",
+ /*0358*/"Thanks for helping the h-node project and the free software movement!" => "¡Gracias por ayudar al proyecto h-node y al movimiento de software libre!",
+ /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Ha agregado un nuevo computador portátil dentro de la base de datos. ¿Podría agregar los dispositivos por separado también? ¡Gracias!",
+ /*0360*/"insert" => "insertar",
+ /*0361*/"List of allowed fully free distributions" => "Lista de distribuciones completamente libres permitidas",
+ /*0362*/"Insert a new distro" => "Inserte una nueva distribución",
+ /*0363*/"DISTRO-CODE" => "CÓDIGO DE DISTRIBUCIÓN",
+ /*0364*/"Login form:" => "Inicio de sesión:",
+ /*0365*/"username" => "usuario",
+ /*0366*/"password" => "contraseña",
+ /*0367*/"login" => "entrar",
+ /*0367*/"JavaScript license information" => "información de licencia JavaScript",
+ ),
+ 'fr' => array
+ (
+ /*0001*/"Search one device in the archive" => "Chercher un périphérique dans les archives",
+ /*0002*/"hardware type" => "type de matériel",
+ /*0003*/"the model name contains" => "le nom du modèle contient",
+ /*0004*/"List of issues" => "Liste des problèmes",
+ /*0005*/"TITLE" => "TITRE",
+ /*0006*/"TOPIC" => "SUJET",
+ /*0007*/"OPENED BY" => "OUVERT PAR",
+ /*0008*/"DATE" => "DATE",
+ /*0009*/"REPLIES" => "REPONSES",
+ /*0010*/"PRIORITY" => "PRIORITE",
+ /*0011*/"STATUS" => "STATUS",
+ /*0012*/"You have to" => "Vous devez",
+ /*0013*/"in order to submit an issue" => "pour pouvoir soumettre un problème",
+ /*0014*/"in order to add a message" => "pour pouvoir envoyer un message",
+ /*0015*/"Description" => "Description",
+ /*0016*/"Messages" => "Messages",
+ /*0017*/"this message has been deleted" => "ce message a été supprimé",
+ /*0018*/"in order to submit a message to this issue" => "pour pouvoir envoyer un message concernant ce problème",
+ /*0019*/"model name" => "nom de modèle",
+ /*0020*/"model type" => "type de modèle",
+ /*0021*/"year of commercialization" => "année de commercialisation",
+ /*0022*/"Results of the search" => "Resultat de la recherche",
+ /*0023*/"page list" => "liste de page",
+ /*0024*/"No devices found" => "Aucun périphérique trouvé",
+ /*0025*/"vendor" => "vendeur",
+ /*0026*/"compatibility" => "compatibilitée",
+ /*0027*/"year" => "année",
+ /*0028*/"subtype" => "sous-type",
+ /*0029*/"sort by" => "afficher par",
+ /*0030*/"interface" => "interface",
+ /*0031*/"does it work?" => "cela fonctionne-t-il ?",
+ /*0032*/"preview of the message" => "prévisualisation du message",
+ /*0033*/"preview of the new issue message" => "prévisualisation du message du nouveau problème",
+ /*0034*/"Add a message to this issue" => "Ajouter un message à ce problème",
+ /*0035*/"Add a new issue" => "Ajouter un nouveau problème",
+ /*0036*/"MESSAGE" => "MESSAGE",
+ /*0037*/"there are no messages" => "Il n'y a pas de messages",
+ /*0038*/"No notebooks found" => "Aucun notebook trouvé",
+ /*0039*/"subtype (notebook, netbook, tablet)" => "sous-type (notebook, netbook, tablet)",
+ /*0040*/"compatibility with free software" => "compatibilitée avec le logiciel libre",
+ /*0041*/"view the other specifications" => "voir les autres spécifications",
+ /*0042*/"model" => "modèle",
+ /*0043*/"model id" => "ID du modèle",
+ /*0044*/"tested on" => "testé sur",
+ /*0045*/"tested with the following kernel libre" => "testé avec le kernel libre suivant",
+ /*0046*/"video card model" => "modèle de carte vidéo",
+ /*0047*/"wifi model" => "modèle de carte wifi",
+ /*0048*/"GNU/Linux distribution used for the test" => "Distribution GNU/Linux utilisée pour le test",
+ /*0049*/"does the video card work?" => "La carte graphique fonctionne-t-elle ?",
+ /*0050*/"does the wifi card work?" => "La carte wifi fonctionne-t-elle ?",
+ /*0051*/"Description: (write here all the useful information)" => "Description (écrivez ici toutes les informations utiles)",
+ /*0052*/"discover all the wiki tags" => "voir tous les tags wiki",
+ /*0053*/"Fields marked with <b>*</b> are mandatory" => "Les champs marqués avec <b>*</b> sont obligatoires",
+ /*0054*/"No printers found" => "Aucun imprimante trouvée",
+ /*0055*/"interface" => "interface",
+ /*0056*/"VendorID:ProductID code of the device" => "VendorID:ProductID du périphérique",
+ /*0057*/"free driver used" => "pilote libre utilisé",
+ /*0058*/"set not-specified if not sure" => "définir comme non-spécifié en cas de doute",
+ /*0059*/"see the help page or leave blank if you are not sure" => "voir la page d'aide ou laisser blanc si vous n'êtes pas sur(e)",
+ /*0060*/"No scanners found" => "Aucun scanneur trouvé",
+ /*0061*/"No video cards found" => "Aucun carte graphique trouvée",
+ /*0062*/"how does it work with free software?" => "A quel point cela fonctionne-t-il avec du logiciel libre ?",
+ /*0063*/"No wifi cards found" => "Aucune carte wifi trouvée",
+ /*0064*/"does it work with free software?" => "cela fonctionne-t-il avec le logiciel libre ?",
+ /*0065*/"differences in the entry" => "differences dans l'entrée",
+ /*0066*/"No 3G cards found" => "Aucune carte 3G trouvée",
+ /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Merci de préciser dans cette description le fournisseur d'accès et le pays dans lequel le service est fourni",
+ /*0068*/"webcam model" => "modèle de webcam",
+ /*0069*/"does it have a free BIOS?" => "a-t-il un BIOS libre ?",
+ /*0070*/"does the webcam work?" => "la webcam fonctionne t'elle ?",
+ /*0071*/"Current revision" => "Révision actuelle",
+ /*0072*/"Hello" => "Bonjour",
+ /*0073*/"Your" => "Votre",
+ /*0074*/"control panel" => "panneau de contrôle",
+ /*0075*/"create new account" => "créer un compte",
+ /*0076*/"request new password" => "demander un nouveau mot de passe",
+ /*0077*/"website statistics" => "statistiques du site",
+ /*0078*/"hardware in the database" => "hardware dans la base de données",
+ /*0079*/"users logged" => "utilisateurs connectés",
+ /*0080*/"Watch your public profile" => "Voir votre profil public",
+ /*0081*/"Edit your profile" => "Éditer votre profil",
+ /*0082*/"Change your e-mail address" => "Changer votre adresse e-mail",
+ /*0083*/"Change your password" => "Changer votre mot de passe",
+ /*0084*/"Delete your account" => "Supprimer votre compte",
+ /*0085*/"choose the username" => "choisissez le nom d'utilisateur",
+ /*0086*/"characters allowed" => "caractères autorisés",
+ /*0087*/"your e-mail address" => "votre adresse e-mail",
+ /*0088*/"necessary to confirm the registration" => "nécessaire pour confirmer la création",
+ /*0089*/"choose the password" => "choisissez le mot de passe",
+ /*0090*/"confirm the password" => "confirmez le mot de passe",
+ /*0091*/"write the code above" => "écrivez le code ci-dessous",
+ /*0092*/"write your username" => "écrivez votre nom d'utilisateur",
+ /*0093*/"Actions carried out by moderators" => "Actions gérées par les modérateurs",
+ /*0094*/"meet" => "rencontrer",
+ /*0095*/"Public profile of" => "Profil public de",
+ /*0096*/"See all the contributions of" => "Voir toute les distributions de",
+ /*0097*/"My website" => "Mon site web",
+ /*0098*/"My real name" => "Mon vrai nom",
+ /*0099*/"My e-mail address" => "Mon adresse e-mail",
+ /*0100*/"I'm from" => "Je viens de",
+ /*0101*/"Birthdate" => "Date de naissance",
+ /*0102*/"My favourite distribution" => "Ma distribution favorite",
+ /*0103*/"Free software projects I'm working on" => "Les projets de logiciel libre sur lesquels je travaille",
+ /*0104*/"My description" => "Ma description",
+ /*0105*/"contributions" => "contributions",
+ /*0106*/"contributions of" => "contributions de",
+ /*0107*/"No sound cards found" => "Aucune carte son trouvée",
+ /*0108*/"LAST UPDATE" => "DERNIERE MISE A JOUR",
+ /*0109*/"search by" => "cherchez par",
+ /*0110*/"analyze the output of the lspci command" => "analisez le retour de la commande lspci",
+ /*0111*/"paste the output of the lspci command" => "copiez le retour de la commande lspci",
+ /*0112*/"works, but without 3D acceleration" => "fonctionne, mais sans accélération 3D",
+ /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "le texte que vous avez soumis n'a pas l'air d'être le résultat de la commande lspci -vmmnn, merci de vérifier",
+ /*0114*/"Search form" => "Formulaire de recherche",
+ /*0115*/"write here the output of lspci -vmmnn" => "écrivez ici le retour de la commande lspci -vmmnn",
+ /*0116*/"The following devices has been found in the database" => "Ces périphériques ont été trouvés dans la base de données",
+ /*0117*/"yes" => "oui",
+ /*0118*/"no" => "non",
+ /*0119*/"The following devices has not been found in the database" => "Ces périphériques n'ont pas été trouvés dans la base de données",
+ /*0120*/"can you please insert them?" => "pouvez vous les insérer ?",
+ /*0121*/"No webcams found" => "Aucune webcam trouvée",
+ /*0122*/"Download the xml file of all the database" => "Téléchargez le fichier XML de la base de données complètes",
+ /*0123*/"Download the xml file of all the <b>notebooks</b> in the database" => "Téléchargez le fichier XML de tout les <b>notebooks</b> dans la base de données",
+ /*0124*/"Download the xml file of all the <b>wifi cards</b> in the database" => "Téléchargez le fichier XML de toute les <b>cartes wifi</b> dans la base de données",
+ /*0125*/"Download the xml file of all the <b>video cards</b> in the database" => "Téléchargez le fichier XML de toute les <b>cartes graphiques</b> dans la base de données",
+ /*0126*/"Download the xml file of all the <b>printers</b> in the database" => "Téléchargez le fichier XML de toute les <b>imprimantes</b> dans la base de données",
+ /*0127*/"Download the xml file of all the <b>3G cards</b> in the database" => "Téléchargez le fichier XML de toute les <b>cartes 3G</b> dans la base de données",
+ /*0128*/"Download the xml file of all the <b>sound cards</b> in the database" => "Téléchargez le fichier XML de toutes les <b>cartes son</b> dans la base de données",
+ /*0129*/"Download the xml file of all the <b>webcams</b> in the database" => "Téléchargez le fichier XML de toutes les <b>webcams</b> dans la base de données",
+ /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Vous pouvez téléchargez toute la base de donnée de h-node en un seul fichier XML pour pouvoir ensuite l'exploiter avec des scripts (par exemple un script Python, Perl ou PHP)",
+ /*0131*/"Download the h-node hardware database in xml format" => "Téléchargez la base de données matérielle de h-node au format XML",
+ /*0132*/"Database modifications" => "Modification de la base de données",
+ /*0133*/"List of the database modifications carried out by users" => "Liste des modifications faites à la base de données par les utilisateurs",
+ /*0134*/"the model" => "le modèle",
+ /*0135*/"has been inserted by" => "a été inséré par",
+ /*0136*/"has been updated by" => "a été mis à jour par",
+ /*0137*/"at" => "à",
+ /*0138*/"last modifications" => "dernières modifications",
+ /*0139*/"watch all modifications" => "voir toutes les modifications",
+ /*0140*/"the title" => "le titre",
+ /*0141*/"the text of the wiki page" => "le texte de la page du wiki",
+ /*0142*/"the wiki page has not been found" => "la page du wiki n'a pas été trouvée",
+ /*0143*/"Page not-found" => "Page introuvable",
+ /*0144*/"Insert" => "Insérer",
+ /*0145*/"Update" => "Mettre à jour",
+ /*0146*/"History" => "Historique",
+ /*0147*/"Revision" => "Révisions",
+ /*0148*/"Differences" => "Différences",
+ /*0149*/"Insert a new wiki page" => "Insérer une nouvelle page wiki",
+ /*0150*/"Edit the wiki page" => "Editer la page wiki",
+ /*0151*/"Make current" => "Rendre actuel",
+ /*0152*/"I want to make this revision the current revision" => "Je veux faire de cette révision la révision actuelle",
+ /*0153*/"Confirm" => "Confirmer",
+ /*0154*/"Make this revision the current revision of the page" => "Je veux faire de cette révision la révision actuelle de cette page",
+ /*0155*/"This wiki page has been deleted" => "La page wiki a été supprimée",
+ /*0156*/"Talk" => "Discussion",
+ /*0157*/"Talk page of the wiki page" => "Page de discussion de la page de wiki",
+ /*0158*/"a page with the same title already exists" => "une page avec le même titre existe déja",
+ /*0159*/"title is too long" => "le titre est trop long",
+ /*0160*/"the page text is too long" => "le texte de la page est trop long",
+ /*0161*/"History of the wiki page" => "Historique de la page wiki",
+ /*0162*/"Would you like to insert it?" => "Voulez-vous l'insérer ?",
+ /*0163*/"Wiki modifications" => "Modifications du wiki",
+ /*0164*/"List of the wiki modifications carried out by users" => "Liste des modification faites au wiki par les utilisateurs",
+ /*0165*/"list of pages" => "list des pages",
+ /*0166*/"List of wiki pages" => "Liste des pages du wiki",
+ /*0167*/"This wiki page has been blocked" => "La page wiki a été bloquée",
+ /*0168*/"unblock the wiki page" => "débloquer la page wiki",
+ /*0169*/"block the wiki page" => "bloquer la page wiki",
+ /*0170*/"show the wiki page" => "montrer la page wiki",
+ /*0171*/"hide the wiki page" => "cacher la page wiki",
+ /*0172*/"list of deleted pages" => "liste des pages supprimées",
+ /*0173*/"restore the wiki page" => "restaurer la page wiki",
+ /*0174*/"delete the wiki page" => "supprimer la page wiki",
+ /*0175*/"list of blocked pages" => "liste de pages bloquées",
+ /*0176*/"special pages" => "pages spéciales",
+ /*0177*/"Actions carried out by administrators" => "Actions faites par les administrateurs",
+ /*0178*/"No bluetooth devices found" => "Aucun périphérique bluetooth trouvé",
+ /*0179*/"learn how to find it" => "apprenez à le trouver",
+ /*0180*/"Download the xml file of all the <b>bluetooth devices</b> in the database" => "Téléchargez le fichier xml de tous les <b>périphériques bluetooth</b> dans la base de données",
+ /*0181*/"License information" => "Information de license",
+ /*0182*/"No acquisition card found" => "Aucune carte d'acquisition trouvée",
+ /*0183*/"No fingerprint readers found" => "Aucun lecteur d'empreintes digitales trouvé",
+ /*0184*/"Download the xml file of all the <b>acquisition cards</b> in the database" => "Téléchargez le fichier xml de toutes les <b>cartes d'acquisition</b> dans la base de données",
+ /*0185*/"Download the xml file of all the <b>fingerprint readers</b> in the database" => "Téléchargez le fichier xml de tous les <b>lecteurs d'empreintes digitales</b> dans la base de données",
+ /*0186*/"architecture" => "architecture",
+ /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Insérez ici le nom du périphérique tel qu'écris sur le périphérique lui même ou sur son emballage. Ajoutez-le uniquement s'il est différent du <i>nom du modèle</i> déja inséré dans l'entrée ci-dessus. Ajoutez le nouveau nom de façon à ce qu'il n'y ait qu'un nom par rangée. ",
+ /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Ecrivez ici le nom du modèle obtenu par la commande lspci ou lsusb.",
+ /*0189*/"This is the name of the chipset of your device." => "Ceci est le nom du chipset de votre périphérique.",
+ /*0190*/"possible other names of the device" => "autres noms possibles du périphérique",
+ /*0191*/"Description entry preview" => "Description de la prévisualisation de l'entrée",
+ /*0192*/"Page preview" => "Prévisualisation de la page",
+ /*0193*/"This device page has been hidden" => "La page de ce périhérique a été cachée",
+ /*0194*/"restore the device page" => "restaurer la page de ce périphérique",
+ /*0195*/"hide the device page" => "cacher la page de ce périphérique",
+ /*0196*/"Download the xml file of all the <b>scanners</b> in the database" => "Téléchargez le fichier xml de tous les <b>scanneur</b> dans la base de données",
+ /*0197*/"Special pages for administrators" => "Page spéciale pour les administrateurs",
+ /*0198*/"Special pages for moderators" => "Page spéciale pour les modérateurs",
+ /*0199*/"see the page" => "voir la page",
+ /*0200*/"hidden device pages" => "pages de périphériques cachées",
+ /*0201*/"panel" => "panneau",
+ /*0202*/"List of hidden device pages" => "Liste des pages de périphériques cachées",
+ /*0203*/"approve the device page" => "approuver la page du périphérique",
+ /*0204*/"This device page has not been approved yet" => "La page du périphérique n'a pas encore été approuvée",
+ /*0205*/"Device pages that have to be approved" => "Pages de périphériques en attente d'être approuvées",
+ /*0206*/"The device page has to be approved by an administrator of the website" => "La page du périphérique est en attente d'être approuvée par un administrateur",
+ /*0207*/"permanently delete the device page" => "supprimer définitivement la page",
+ /*0208*/"This page has been permanently deleted by an administrator of the website" => "Cette page a été définitivement supprimée par un administrateur du site",
+ /*0209*/"No ethernet devices found" => "Pas de périphériques ethernet trouvés",
+ /*0210*/"free BIOS" => "BIOS libre",
+ /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Vous n'êtes pas un utilisateur enregistré ou vous n'êtes pas authentifié. Votre contribution ne sera pas publiée tant qu'un administrateur de l'aura pas approuvée. Si vous souhaitez que vos contributions soient automatiquement publiées, veuillez vous authentifier ou de créer un compte.",
+ /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "a été inséré par un utilisateur anonyme et doit-être approuvé par un administrateur afin d'être publié",
+ /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "vous pouvez également vous abonner au flux afin de recevoir les nouvelles modifications en attente de modération",
+ /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "il est nécessaire d'activer javascript afin d'utiliser correctement les onglets de langue (voir ci-dessous)",
+ /*0215*/"yes" => "oui",
+ /*0216*/"works with 3D acceleration" => "fonctionne avec accélération 3D",
+ /*0217*/"works, but without 3D acceleration" => "fonctionne, mais sans accélération 3D",
+ /*0218*/"it does not work" => "ne fonctionne pas",
+ /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablettes",
+ /*0220*/"Wifi cards" => "Cartes wifi",
+ /*0221*/"Video cards" => "Cartes graphiques",
+ /*0222*/"Printers and multifunction" => "Imprimantes et multifonctions",
+ /*0223*/"Scanners" => "Scanneurs",
+ /*0224*/"3G cards" => "Cartes 3G",
+ /*0225*/"Sound cards" => "Cartes son",
+ /*0226*/"Webcams" => "Webcams",
+ /*0227*/"Bluetooth devices" => "Périphériques bluetooth",
+ /*0228*/"TV/Video/FM acquisition cards" => "Cartes d'acquisition TV/Video/FM",
+ /*0229*/"Fingerprint readers" => "Lecteurs d'empreintes digitales",
+ /*0230*/"Ethernet cards" => "Cartes ethernet",
+ /*0231*/"Hardware" => "Hardware",
+ /*0232*/"Issues" => "Problème",
+ /*0233*/"Search" => "Recherche",
+ /*0234*/"News" => "Nouvelles",
+ /*0235*/"Download" => "Télécharger",
+ /*0236*/"Help" => "Aide",
+ /*0237*/"List of" => "Liste de",
+ /*0238*/"talk messages" => "discussion",
+ /*0239*/"History" => "Historique",
+ /*0240*/"Revision" => "Révision",
+ /*0241*/"This is an old revision of this page, as edited by" => "Ceci est une version antérieure de la page, telle qu'éditée par",
+ /*0242*/"It may differ significantly from the" => "Il peut y avoir une différence significative avec",
+ /*0243*/"Differences between the revision of" => "Différences entre les révisions de",
+ /*0244*/"created by" => "créé par",
+ /*0245*/"and the revision of" => "et la révision de",
+ /*0246*/"<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed." => "<b>Note</b> : le texte en <del>rouge</del> a été supprimé de la version précédente, le texte en <ins>vert</ins> a été ajouté à cette version et le texte en <span class='gray_text_notice'>gris</span> n'a pas été changé.",
+ /*0247*/"Insert" => "Insérer",
+ /*0248*/"Edit" => "Modifier",
+ /*0249*/"Talk page" => "Page de discussion",
+ /*0250*/"Download the xml file of all the <b>ethernet cards</b> in the database" => "Télécharger le fichier xml de toutes les <b>cartes ethernet</b> présentes dans la base de données",
+ /*0251*/"No sd card readers found" => "Aucun lecteur de carte SD trouvé",
+ /*0252*/"Sd card readers" => "Lecteurs de cartes SD",
+ /*0253*/"Download the xml file of all the <b>SD card readers</b> in the database" => "Télécharger le fichier xml de tous les <b>lecteurs de cartes SD</b> de la base de donnée",
+ /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Il n'y a pas de matériel dans la base de donnée avec le code vendorid:productid spécifié.",
+ /*0255*/"Would you like to add it to the database?" => "Voudriez-vous l'ajouter à la base de donnée ?",
+ /*0256*/"can free operating systems be installed?" => "Des systèmes d'exploitation libres peuvent-ils être installés ?",
+ /*0257*/"This issue has been deleted" => "Ce problème a été effacé",
+ /*0258*/"hidden for those who are not moderators" => "Caché pour les non-modérateurs",
+ /*0259*/"This issue is hidden for all the users that are not moderators" => "Ce problème est caché à tous les utilisateurs qui ne sont pas des modérateurs",
+ /*0260*/"hide the issue" => "cacher le problème",
+ /*0261*/"show the issue" => "montrer le problème",
+ /*0262*/"open the issue again" => "réouvrir le problème",
+ /*0263*/"close the issue" => "fermer le problème",
+ /*0264*/"This issue is closed" => "Ce problème est fermé",
+ /*0265*/"This issue is opened" => "Ce problème est ouvert",
+ /*0266*/"does it adopt any techniques to track users?" => "emploie-t-il des techniques pour suivre les utilisateurs à la trace ?",
+ /*0267*/"Actions carried out by users" => "Actions effectuées par les utilisateurs",
+ /*0268*/"No modems found" => "Aucun modem trouvé",
+ /*0269*/"Download the xml file of all the <b>modems</b> in the database" => "Télécharger le fichier xml de tous les <b>modems</b> de la base de donnée",
+ /*0270*/"Modems and ADSL cards" => "Modems et cartes ADSL",
+ /*0271*/"Table of contents" => "Table des matières",
+ /*0272*/"by" => "par",
+ /*0273*/"Add a message" => "Ajouter un message",
+ /*0274*/"Save" => "Sauvegarder",
+ /*0275*/"Revision of the wiki page" => "Révision de la page wiki",
+ /*0276*/"Preview" => "Aperçu",
+ /*0277*/"January" => "Janvier",
+ /*0278*/"February" => "Février",
+ /*0279*/"March" => "Mars",
+ /*0280*/"April" => "Avril",
+ /*0281*/"May" => "Mai",
+ /*0282*/"June" => "Juin",
+ /*0283*/"July" => "Juillet",
+ /*0284*/"August" => "Août",
+ /*0285*/"September" => "Septembre",
+ /*0286*/"October" => "Octobre",
+ /*0287*/"November" => "Novembre",
+ /*0288*/"December" => "Décembre",
+ /*0289*/"not-specified" => "non-spécifié",
+ /*0290*/"last-inserted" => "dernier-inséré",
+ /*0291*/"last inserted" => "dernier inséré",
+ /*0292*/"alphabetically" => "alphabétiquement",
+ /*0293*/"alphabetically-desc" => "alphabétiquement-décroissant",
+ /*0294*/"alphabetically desc" => "alphabétiquement par ordre décroissant",
+ /*0295*/"undef" => "nondef",
+ /*0296*/"All" => "Tout",
+ /*0297*/"inkjet" => "jet d'encre",
+ /*0298*/"A-Full" => "A-Complet",
+ /*0299*/"B-Partial" => "B-Partiel",
+ /*0300*/"C-None" => "C-Aucun",
+ /*0301*/"A-platinum" => "A-platine",
+ /*0302*/"B-gold" => "B-or",
+ /*0303*/"C-silver" => "C-argent",
+ /*0304*/"D-bronze" => "D-bronze",
+ /*0305*/"E-garbage" => "E-poubelle",
+ /*0306*/"not specified how it works" => "le fonctionnement n'est pas spécifié",
+ /*0307*/"there is no wifi card" => "il n'y a pas de carte wifi",
+ /*0308*/"there is no webcam" => "il n'y a pas de webcam",
+ /*0309*/"it works" => "fonctionne",
+ /*0310*/"does_not_work" => "ne_fonctionne_pas",
+ /*0311*/"works_without_3D" => "fonctionne_sans_3D",
+ /*0312*/"works_with_3D" => "fonctionne_avec_3D",
+ /*0313*/"list of languages" => "liste de langues",
+ /*0314*/"Choose the language" => "Choisissez la langue",
+ /*0315*/"back" => "retour",
+ /*0316*/"next" => "suivant",
+ /*0317*/"previous" => "précédent",
+ /*0318*/"type" => "type",
+ /*0319*/"contact us" => "contactez-nous",
+ /*0320*/"credits" => "crédits",
+ /*0321*/"desktop version" => "version du bureau",
+ /*0322*/"RAID adapters" => "Adaptateurs RAID",
+ /*0323*/"No RAID adapter found" => "Aucun adaptateur RAID trouvé",
+ /*0324*/"Download the xml file of all the <b>RAID adapters</b> in the database" => "Téléchargez le fichier xml de tous les <b>adaptateurs RAID</b> présents dans la base",
+ /*0325*/"No PCMCIA Controller found" => "Aucun contrôleur PCMCIA trouvé",
+ /*0326*/"PCMCIA Controllers" => "Contrôleur PCMCIA",
+ /*0327*/"Download the xml file of all the <b>PCMCIA Controllers</b> in the database" => "Téléchargez le fichier xml de tous les <b>contrôleurs PCMCIA</b> présents dans la base",
+ /*0328*/"notebook" => "ordinateur portable",
+ /*0329*/"netbook" => "netbook",
+ /*0330*/"motherboard" => "carte mère",
+ /*0331*/"tablet" => "tablette",
+ /*0332*/"netbooks" => "netbooks",
+ /*0333*/"Notebooks" => "Notebooks",
+ /*0334*/"tablet PC" => "tablette PC",
+ /*0335*/"motherboards" => "cartes mère",
+ /*0336*/"Write a comma-separated list of kernel versions" => "Écrivez une liste séparée par des virgules de versions de noyau",
+ /*0337*/"Example" => "Exemple",
+ /*0338*/"free boot firmware?" => "Micrologiciel de démarrage libre ?",
+ /*0339*/"can be installed" => "peut être installé",
+ /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "a un micrologiciel de démarrage (BIOS, UEFI,..) libre?",
+ /*0341*/"Hello,\n\nyou have registered an account at"=>"Bonjour,\n\nvous avez créé un compte à",
+ /*0342*/"with the following data:\nusername: " => "avec les données suivantes :\nnom d'utilisateur : ",
+ /*0343*/"in order to confirm the registration of the new account please follow the link below" => "pour confirmer la création du nouveau compte, veuillez suivre le lien ci-dessous",
+ /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Si vous ne voulez pas confirmer la création du compte\nattendez une heure et votre nom d'utilisateur et courriel seront supprimés de la base",
+ /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Si vous avez reçu ce courriel par erreur, veuillez l'ignorer",
+ /*0346*/"account registration" => "création de compte",
+ /*0347*/"Host Controllers" => "Contrôleurs Hôte",
+ /*0348*/"No Host Controller found" => "Aucun Contrôleur Hôte trouvé",
+ /*0349*/"Download the xml file of all the <b>Host Controllers</b> in the database" => "Téléchargez le fichier xml de tous les <b>Contrôleurs Hôte</b> présents dans la base",
+ /*0350*/"PCMCIA Controller" => "Contrôleur PCMCIA",
+ /*0351*/"USB Controller" => "Contrôleur USB",
+ /*0352*/"Firewire Controller" => "Contrôleur Firewire",
+ /*0353*/"HECI Controller" => "Contrôleur HECI",
+ /*0354*/"device type" => "type d'appareil",
+ /*0355*/"Thanks for your contribution!" => "Merci pour votre contribution !",
+ /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "l'appareil empêche-t-il l'insertion de cartes wifi non approuvées par le vendeur ?",
+ /*0357*/"see the details inside the description entry" => "voir les détails dans le champ description",
+ /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Merci d'aider le projet h-node et le mouvement du logiciel libre !",
+ /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Vous venez d'insérer un nouvel ordinateur portable dans la base. Pouvez-vous insérer ses périphériques séparément ? Merci !",
+ /*0360*/"insert" => "insérer",
+ /*0361*/"List of allowed fully free distributions" => "Liste des distributions totalement libres autorisées",
+ /*0362*/"Insert a new distro" => "Insérer une nouvelle distribution",
+ /*0363*/"DISTRO-CODE" => "CODE-DISTRO",
+ ),
+ 'de' => array
+ (
+ /*0001*/"Search one device in the archive" => "Ein Gerät im Archiv suchen",
+ /*0002*/"hardware type" => "Hardware-Typ",
+ /*0003*/"the model name contains" => "die Modellbezeichnung enthält",
+ /*0004*/"List of issues" => "Vorhandene Beiträge",
+ /*0005*/"TITLE" => "Titel",
+ /*0006*/"TOPIC" => "Thema",
+ /*0007*/"OPENED BY" => "Angelegt von",
+ /*0008*/"DATE" => "Datum",
+ /*0009*/"REPLIES" => "Nachricht",
+ /*0010*/"PRIORITY" => "Priorität",
+ /*0011*/"STATUS" => "Stand",
+ /*0012*/"You have to" => "Sie müssen",
+ /*0013*/"in order to submit an issue" => "um ein Thema einzusenden",
+ /*0014*/"in order to add a message" => "um eine Nachricht hinzufügen",
+ /*0015*/"Description" => "Beschreibung",
+ /*0016*/"Messages" => "Nachrichten",
+ /*0017*/"this message has been deleted" => "Diese Nachricht wurde gelöscht",
+ /*0018*/"in order to submit a message to this issue" => "um eine Antwort zu senden",
+ /*0019*/"model name" => "Modellbezeichnung",
+ /*0020*/"model type" => "Modelltyp",
+ /*0021*/"year of commercialization" => "Jahr der Markteinführung",
+ /*0022*/"Results of the search" => "Suchergebnisse",
+ /*0023*/"page list" => "Seite/n",
+ /*0024*/"No devices found" => "Es wurde kein Gerät gefunden",
+ /*0025*/"vendor" => "Hersteller",
+ /*0026*/"compatibility" => "Kompatibilität",
+ /*0027*/"year" => "Jahr",
+ /*0028*/"subtype" => "Typ",
+ /*0029*/"sort by" => "Sortierung nach",
+ /*0030*/"interface" => "Schnittstelle",
+ /*0031*/"does it work?" => "Funktionsweise",
+ /*0032*/"preview of the message" => "Nachrichtenvorschau",
+ /*0033*/"preview of the new issue message" => "Nachrichtenvorschau",
+ /*0034*/"Add a message to this issue" => "Auf diese Nachricht antworten",
+ /*0035*/"Add a new issue" => "Neue Nachricht erstellen",
+ /*0036*/"MESSAGE" => "Nachricht",
+ /*0037*/"there are no messages" => "Es sind keine Antworten vorhanden",
+ /*0038*/"No notebooks found" => "Es wurden keine Notebooks gefunden",
+ /*0039*/"subtype (notebook, netbook, tablet)" => "Typ (Notebook, Netbook, Tablet)",
+ /*0040*/"compatibility with free software" => "Kompatibilität mit Freie Software",
+ /*0041*/"view the other specifications" => "Weitere Angaben",
+ /*0042*/"model" => "Modell",
+ /*0043*/"model id" => "Modell-ID",
+ /*0044*/"tested on" => "überprüft mit Distribution",
+ /*0045*/"tested with the following kernel libre" => "Überbrüft mit folgendem freien Betriebssystemkern (Libre Kernel)",
+ /*0046*/"video card model" => "Grafikkarte",
+ /*0047*/"wifi model" => "WLAN",
+ /*0048*/"GNU/Linux distribution used for the test" => "Verwendete GNU/Linux-Distribution für die Überprüfung",
+ /*0049*/"does the video card work?" => "Funktioniert die Grafik einwandfrei?",
+ /*0050*/"does the wifi card work?" => "Funktioniert das WLAN einwandfrei?",
+ /*0051*/"Description: (write here all the useful information)" => "Beschreibung: (alle nützliche Informationen)",
+ /*0052*/"discover all the wiki tags" => "Wiki-Elemente",
+ /*0053*/"Fields marked with <b>*</b> are mandatory" => "<b>*</b> Pflichtangabe",
+ /*0054*/"No printers found" => "Es wurden keine Drucker gefunden",
+ /*0055*/"interface" => "Schnittstelle",
+ /*0056*/"VendorID:ProductID code of the device" => "Hersteller-ID:Produkt-ID des Gerätes",
+ /*0057*/"free driver used" => "Verwendete Freie Firmware/Treiber",
+ /*0058*/"set not-specified if not sure" => "Bitte &#8222;Keine Angabe&#8220;, wenn nicht sicher",
+ /*0059*/"see the help page or leave blank if you are not sure" => "Siehe &#8222;Hilfe&#8220;, oder freilassen, wenn nicht sicher",
+ /*0060*/"No scanners found" => "Es wurden keine Scanner gefunden",
+ /*0061*/"No video cards found" => "Es wurde keine Grafikkarte gefunden",
+ /*0062*/"how does it work with free software?" => "Funktioniert einwandfrei mit Freie Software?",
+ /*0063*/"No wifi cards found" => "Es wurde kein WLAN (intern/extern) gefunden",
+ /*0064*/"does it work with free software?" => "Funktioniert mit Freie Software?",
+ /*0065*/"differences in the entry" => "Unterschiede",
+ /*0066*/"No 3G cards found" => "Es wurde kein Mobilfunkstandard der dritten Generation (3G) gefunden",
+ /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Bitte geben Sie in der folgenden Beschreibung den Internetdienstanbieter (ISP) und Land an, in dem die Dienstleistung erbracht wird",
+ /*0068*/"webcam model" => "Webcam",
+ /*0069*/"does it have a free BIOS?" => "Hat eine freies BIOS?",
+ /*0070*/"does the webcam work?" => "Funktioniert einwandfrei mit Freie Software?",
+ /*0071*/"Current revision" => "Aktuelle Version",
+ /*0072*/"Hello" => "Hallo",
+ /*0073*/"Your" => "Ihre ",
+ /*0074*/"control panel" => "Einstellungen",
+ /*0075*/"create new account" => "Neu registrieren",
+ /*0076*/"request new password" => "Passwort vergessen",
+ /*0077*/"website statistics" => "Website-Statistiken:",
+ /*0078*/"hardware in the database" => "Hardware-Datenbank",
+ /*0079*/"users logged" => "Angemeldete Benutzer",
+ /*0080*/"Watch your public profile" => "Öffentliches Profil",
+ /*0081*/"Edit your profile" => "Profil bearbeiten",
+ /*0082*/"Change your e-mail address" => "E-Mail-Adresse ändern",
+ /*0083*/"Change your password" => "Passwort ändern",
+ /*0084*/"Delete your account" => "Konto löschen",
+ /*0085*/"choose the username" => "Benutzername",
+ /*0086*/"characters allowed" => "Erlaubte Zeichen",
+ /*0087*/"your e-mail address" => "E-Mail-Adresse",
+ /*0088*/"necessary to confirm the registration" => "Zur Bestätigung der Registrierung erforderlich",
+ /*0089*/"choose the password" => "Passwort",
+ /*0090*/"confirm the password" => "Passwort (Wiederholung)",
+ /*0091*/"write the code above" => "Geben Sie die Zeichen ein",
+ /*0092*/"write your username" => "Geben Sie Ihren Benutzernamen ein",
+ /*0093*/"Actions carried out by moderators" => "Moderatoren durchgeführte Änderungen",
+ /*0094*/"meet" => "treffen",
+ /*0095*/"Public profile of" => "Öffentliches Profil auf",
+ /*0096*/"See all the contributions of" => "Alle Beiträge von",
+ /*0097*/"My website" => "Meine Webseite",
+ /*0098*/"My real name" => "Mein bürgerlicher Name",
+ /*0099*/"My e-mail address" => "Meine E-Mail-Adresse",
+ /*0100*/"I'm from" => "Ich bin aus",
+ /*0101*/"Birthdate" => "Geburtsdatum",
+ /*0102*/"My favourite distribution" => "Meine favorisierte Distribution",
+ /*0103*/"Free software projects I'm working on" => "Freie-Software-Projekte, an denen ich arbeite",
+ /*0104*/"My description" => "Meine Beschreibung",
+ /*0105*/"contributions" => "Beiträge",
+ /*0106*/"contributions of" => "Beiträge von",
+ /*0107*/"No sound cards found" => "Es wurde keine Soundkarte gefunden",
+ /*0108*/"LAST UPDATE" => "Letzte Aktualisierung",
+ /*0109*/"search by" => "Suchen nach",
+ /*0110*/"analyze the output of the lspci command" => "Analyse der Ausgabe des Befehls &#8222;lspci&#8220;",
+ /*0111*/"paste the output of the lspci command" => "Fügen Sie Ausgabe des Befehls &#8222;lspci&#8220; ein",
+ /*0112*/"works, but without 3D acceleration" => "Funktioniert, aber ohne 3D-Beschleunigung",
+ /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "Der von Ihnen übermittelte Text scheint nicht der &#8222;lspci-vmmnn&#8220;-Ausgabe zu entsprechen. Bitte überprüfen Sie den Text und versuchen es erneut",
+ /*0114*/"Search form" => "Suchen",
+ /*0115*/"write here the output of lspci -vmmnn" => "Geben Sie hier die Ausgabe von &#8222;lspci-vmmnn&#8220; ein",
+ /*0116*/"The following devices has been found in the database" => "Die folgenden Geräte wurden in der Datenbank gefunden",
+ /*0117*/"yes" => "Ja",
+ /*0118*/"no" => "Nein",
+ /*0119*/"The following devices has not been found in the database" => "Folgende Geräte wurden nicht in der Datenbank gefunden",
+ /*0120*/"can you please insert them?" => "Kann dies bitte eingefügt werden?",
+ /*0121*/"No webcams found" => "Es wurde keine Webcam gefunden",
+ /*0122*/"Download the xml file of all the database" => "Die vollständige Datenbank herunterladen (XML-Format)",
+ /*0123*/"Download the xml file of all the <b>notebooks</b> in the database" => "Alle enthaltenen <b>Notebooks</b> herunterladen (XML-Format)",
+ /*0124*/"Download the xml file of all the <b>wifi cards</b> in the database" => "Alle enthaltenen <b>WLAN-Geräte</b> herunterladen (XML-Format)",
+ /*0125*/"Download the xml file of all the <b>video cards</b> in the database" => "Alle enthaltenen <b>Grafikkarten</b> herunterladen (XML-Format)",
+ /*0126*/"Download the xml file of all the <b>printers</b> in the database" => "Alle enthaltenen <b>Drucker</b> herunterladen (XML-Format)",
+ /*0127*/"Download the xml file of all the <b>3G cards</b> in the database" => "Alle enthaltenen <b>3G-Geräte</b> herunterladen (XML-Format)",
+ /*0128*/"Download the xml file of all the <b>sound cards</b> in the database" => "Alle enthaltenen <b>Soundkarten</b> herunterladen (XML-Format)",
+ /*0129*/"Download the xml file of all the <b>webcams</b> in the database" => "Alle enthaltenen <b>Webcams</b> herunterladen (XML-Format)",
+ /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Sie können alle h-node-Datenbanken als XML-Datei herunterladen, um den Inhalt durch ein Skript (bspw. ein Python-, Perl- oder PHP-Skript) analysieren zu können.",
+ /*0131*/"Download the h-node hardware database in xml format" => "Die h-node-Hardware-Datenbank im XML-Format herunterladen",
+ /*0132*/"Database modifications" => "Datenbank-Änderungen",
+ /*0133*/"List of the database modifications carried out by users" => "Von Benutzern durchgeführte Datenbank-Änderungen",
+ /*0134*/"the model" => "Das Modell",
+ /*0135*/"has been inserted by" => "wurde eingefügt von",
+ /*0136*/"has been updated by" => "wurde aktualisiert von",
+ /*0137*/"at" => "am",
+ /*0138*/"last modifications" => "Letzte Änderungen",
+ /*0139*/"watch all modifications" => "Alle Änderungen anzeigen",
+ /*0140*/"the title" => "Der Titel",
+ /*0141*/"the text of the wiki page" => "der Text des Wikis",
+ /*0142*/"the wiki page has not been found" => "Das Wiki wurde nicht gefunden",
+ /*0143*/"Page not-found" => "Seite nicht gefunden",
+ /*0144*/"Insert" => "Einfügen",
+ /*0145*/"Update" => "Aktualisieren",
+ /*0146*/"History" => "Historie",
+ /*0147*/"Revision" => "Version",
+ /*0148*/"Differences" => "Unterschiede",
+ /*0149*/"Insert a new wiki page" => "Ein neues Wiki einfügen",
+ /*0150*/"Edit the wiki page" => "Wiki bearbeiten",
+ /*0151*/"Make current" => "Aktualisieren",
+ /*0152*/"I want to make this revision the current revision" => "Ich möchte diese Version zur aktuellen Version machen",
+ /*0153*/"Confirm" => "Ok",
+ /*0154*/"Make this revision the current revision of the page" => "Diese Version zur aktuellen Version machen",
+ /*0155*/"This wiki page has been deleted" => "Dieses Wiki wurde gelöscht",
+ /*0156*/"Talk" => "Diskussion",
+ /*0157*/"Talk page of the wiki page" => "Diskussionsseite des Wikis",
+ /*0158*/"a page with the same title already exists" => "Es ist bereits eine Seite mit den gleichen Titel vorhanden",
+ /*0159*/"title is too long" => "Titel ist zu lang",
+ /*0160*/"the page text is too long" => "Der Text ist zu lang",
+ /*0161*/"History of the wiki page" => "Historie des Wikis",
+ /*0162*/"Would you like to insert it?" => "Wiki einfügen?",
+ /*0163*/"Wiki modifications" => "Wiki-Änderungen",
+ /*0164*/"List of the wiki modifications carried out by users" => "Von Benutzern durchgeführte Wiki-Änderungen",
+ /*0165*/"list of pages" => "Seiten",
+ /*0166*/"List of wiki pages" => "Wiki-Seiten",
+ /*0167*/"This wiki page has been blocked" => "Dieses Wiki wurde gesperrt",
+ /*0168*/"unblock the wiki page" => "Wiki entsperren",
+ /*0169*/"block the wiki page" => "Wiki sperren",
+ /*0170*/"show the wiki page" => "Wiki anzeigen",
+ /*0171*/"hide the wiki page" => "Wiki ausblenden",
+ /*0172*/"list of deleted pages" => "Gelöschte Seiten",
+ /*0173*/"restore the wiki page" => "Wiki wiederherstellen",
+ /*0174*/"delete the wiki page" => "Wiki löschen",
+ /*0175*/"list of blocked pages" => "Gesperrte Seiten",
+ /*0176*/"special pages" => "Sonderseiten",
+ /*0177*/"Actions carried out by administrators" => "Administratoren durchgeführten Aktionen anzeigen",
+ /*0178*/"No bluetooth devices found" => "Es wurden keine Bluetooth-Geräte gefunden",
+ /*0179*/"learn how to find it" => "Wie kann man das herausfinden?",
+ /*0180*/"Download the xml file of all the <b>bluetooth devices</b> in the database" => "Alle enthaltenen <b>Bluetooth-Geräte</b> herunterladen (XML-Format)",
+ /*0181*/"License information" => "Informationen zur Lizenz",
+ /*0182*/"No acquisition card found" => "Es wurde keine TV/Video/FM-Erweiterung gefunden",
+ /*0183*/"No fingerprint readers found" => "Es wurde kein Fingerabdruck-Lesegerät gefunden",
+ /*0184*/"Download the xml file of all the <b>acquisition cards</b> in the database" => "Alle enthaltenen <b>TV/Video/FM-Erweiterungen</b> herunterladen (XML-Format",
+ /*0185*/"Download the xml file of all the <b>fingerprint readers</b> in the database" => "Alle enthaltenen <b>Fingerabdruck-Lesegeräte</b> herunterladen (XML-Format",
+ /*0186*/"architecture" => "Architektur",
+ /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Fügen Sie hier den Gerätenamen hinzu, wie auf dem Gerät selbst oder auf der Verpackung angegeben, jedoch nur, wenn dieser von der bereits genannten <i>Modellbezeichnung</i> abweicht (ein Gerätename/pro Zeile).",
+ /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Geben Sie hier die vom Befehl &#8222;lspci&#8220; oder &#8222;lsusb&#8220; ermittelte Modellbezeichnung ein.",
+ /*0189*/"This is the name of the chipset of your device." => "Dies ist der Name des Chipsatzes Ihres Gerätes.",
+ /*0190*/"possible other names of the device" => "Andere mögliche Gerätenamen",
+ ),
+ 'gr' => array
+ (
+ /*0001*/"Search one device in the archive" => "Αναζήτηση μίας συσκευής από το αρχείο",
+ /*0002*/"hardware type" => "Τύπος υλικού",
+ /*0003*/"the model name contains" => "το όνομα του μοντέλου περιλαμβάνει",
+ /*0004*/"List of issues" => "Κατάλογος ερωτήσεων",
+ /*0005*/"TITLE" => "ΤΙΤΛΟΣ",
+ /*0006*/"TOPIC" => "ΘΕΜΑ",
+ /*0007*/"OPENED BY" => "ΑΝΟΙΧΘΗΚΕ ΑΠΟ ΤΟΝ",
+ /*0008*/"DATE" => "ΔΕΔΟΜΕΝΑ",
+ /*0009*/"REPLIES" => "ΜΗΝΥΜΑΤΑ",
+ /*0010*/"PRIORITY" => "ΠΡΟΤΕΡΑΙΟΤΗΤΑ",
+ /*0011*/"STATUS" => "ΚΑΤΑΣΤΑΣΗ",
+ /*0012*/"You have to" => "Πρέπει να εκτελέσετε το",
+ /*0013*/"in order to submit an issue" => "για να μπορείτε να ανοίξετε ένα νέο θέμα",
+ /*0014*/"in order to add a message" => "για να μπορείτε να στείλετε ένα μήνυμα",
+ /*0015*/"Description" => "Περιγραφή",
+ /*0016*/"Messages" => "Μηνύματα",
+ /*0017*/"this message has been deleted" => "Αυτό το μήνυμα διεγράφη",
+ /*0018*/"in order to submit a message to this issue" => "Για να προσθέσετε ένα μήνυμα σε αυτό το θέμα",
+ /*0019*/"model name" => "Όνομα του μοντέλου",
+ /*0020*/"model type" => "Τύπος συσκευής",
+ /*0021*/"year of commercialization" => "Έτος εμπορικής κυκλοφορίας",
+ /*0022*/"Results of the search" => "Αποτελέσματα της αναζήτησης",
+ /*0023*/"page list" => "Κατάλογος σελίδων",
+ /*0024*/"No devices found" => "Δεν βρέθηκε καμία συσκευή",
+ /*0025*/"vendor" => "Κατασκευαστής",
+ /*0026*/"compatibility" => "Συμβατότητα",
+ /*0027*/"year" => "Έτος",
+ /*0028*/"subtype" => "Υποτύπος",
+ /*0029*/"sort by" => "Κατάταξη ανά",
+ /*0030*/"interface" => "Διεπαφή",
+ /*0031*/"does it work?" => "Λειτουργεί;",
+ /*0032*/"preview of the message" => "Προεπισκόπηση του μυνήματος",
+ /*0033*/"preview of the new issue message" => "Προεπισκόπηση του μηνύματος για το νέο θέμα",
+ /*0034*/"Add a message to this issue" => "Προσθήκη ενός μηνύματος σε αυτό το θέμα",
+ /*0035*/"Add a new issue" => "Προσθήκη ενός νέου θέματος",
+ /*0036*/"MESSAGE" => "ΜΗΝΥΜΑ",
+ /*0037*/"there are no messages" => "Δεν υπάρχουν καθόλου μηνύματα",
+ /*0038*/"No notebooks found" => "Δεν βρέθηκε κανένα notebook",
+ /*0039*/"subtype (notebook, netbook, tablet)" => "Υποτύπος (notebook, netbook, tablet)",
+ /*0040*/"compatibility with free software" => "Συμβατότητα με το ελεύθερο λογισμικό",
+ /*0041*/"view the other specifications" => "Δείτε τις άλλες προδιαγραφές",
+ /*0042*/"model" => "Μοντέλο",
+ /*0043*/"model id" => "Κωδικός id του μοντέλου",
+ /*0044*/"tested on" => "Δοκιμάσθηκε με",
+ /*0045*/"tested with the following kernel libre" => "Δοκιμάσθηκε με τον εξής ελεύθερο πυρήνα",
+ /*0046*/"video card model" => "Μοντέλο της κάρτας γραφικών",
+ /*0047*/"wifi model" => "Μοντέλο της κάρτας wifi",
+ /*0048*/"GNU/Linux distribution used for the test" => "Διανομή GNU/Linux που χρησιμοποιήθηκε για την δοκιμή",
+ /*0049*/"does the video card work?" => "Λειτουργεί η κάρτα γραφικών;",
+ /*0050*/"does the wifi card work?" => "Λειτουργεί η κάρτα wifi?",
+ /*0051*/"Description: (write here all the useful information)" => "Περιγραφή (γράψτε εδώ όλες τις χρήσιμες πληροφορίες)",
+ /*0052*/"discover all the wiki tags" => "Ανακαλύψτε όλες τις ετικέτες/tag του wiki",
+ /*0053*/"Fields marked with <b>*</b> are mandatory" => "Τα πεδία που επισημαίνονται με <b>*</b> είναι υποχρεωτικά",
+ /*0054*/"No printers found" => "Δεν βρέθηκε κανένας εκτυπωτής",
+ /*0055*/"interface" => "Διεπαφή",
+ /*0056*/"VendorID:ProductID code of the device" => "Κωδικός Κατασκευαστή:Κωδικός Προϊόντος",
+ /*0057*/"free driver used" => "Ελεύθεροι οδηγοί/driver που χρησιμοποιήθηκαν",
+ /*0058*/"set not-specified if not sure" => "Επιλέξτε το μη-διευκρινισμένο αν δεν είστε σίγουρος/η",
+ /*0059*/"see the help page or leave blank if you are not sure" => "Δείτε την σελίδα βοήθειας ή αφήστε κενό αν δεν είστε σίγουρος/η",
+ /*0060*/"No scanners found" => "Δεν βρέθηκε κανένας σαρωτής",
+ /*0061*/"No video cards found" => "Δεν βρέθηκε καμία κάρτα γραφικών",
+ /*0062*/"how does it work with free software?" => "πώς δουλεύει με το ελεύθερο λογισμικό;",
+ /*0063*/"No wifi cards found" => "Δεν βρέθηκε καμία κάρτα wifi",
+ /*0064*/"does it work with free software?" => "Λειτουργεί με ελεύθερο λογισμικό;",
+ /*0065*/"differences in the entry" => "Διαφορές στην καταχώρηση",
+ /*0066*/"No 3G cards found" => "Δεν βρέθηκε καμία κάρτα 3G",
+ /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Παρακαλώ διευκρινείστε στο παρακάτω πεδίο περιγραφής τον πάροχο υπηρεσιών Internet (ISP) και τη Χώρα στην οποία παρέχονται οι υπηρεσίες",
+ /*0068*/"webcam model" => "Μοντέλο της webcam",
+ /*0069*/"does it have a free BIOS?" => "Έχει ελεύθερο BIOS;",
+ /*0070*/"does the webcam work?" => "Λειτουργεί η webcam;",
+ /*0071*/"Current revision" => "Τρέχουσα αναθεώρηση",
+ /*0072*/"Hello" => "Γεια σας",
+ /*0073*/"Your" => "Ο ",
+ /*0074*/"control panel" => "Πίνακας ελέγχου",
+ /*0075*/"create new account" => "Δημιουργήστε έναν λογαριασμό",
+ /*0076*/"request new password" => "Ζητήστε έναν νέο κωδικό πρόσβασης",
+ /*0077*/"website statistics" => "Στατιστικές του ιστοτόπου",
+ /*0078*/"hardware in the database" => "Υλικό/hardware στη βάση δεδομένων",
+ /*0079*/"users logged" => "Συνδεδεμένοι χρήστες",
+ /*0080*/"Watch your public profile" => "Δείτε το δημόσιο προφίλ σας",
+ /*0081*/"Edit your profile" => "Τροποποιήστε το προφίλ σας",
+ /*0082*/"Change your e-mail address" => "Αλλάξτε την ηλεκτρονική σας διεύθυνση",
+ /*0083*/"Change your password" => "Αλλάξτε τον κωδικό σας πρόσβασης",
+ /*0084*/"Delete your account" => "Διαγράψτε τον λογαριασμό σας",
+ /*0085*/"choose the username" => "Επιλέξτε το όνομα χρήστη",
+ /*0086*/"characters allowed" => "Αποδεκτοί χαρακτήρες",
+ /*0087*/"your e-mail address" => "Η ηλεκτρονική σας διεύθυνση",
+ /*0088*/"necessary to confirm the registration" => "Απαραίτητο για την επιβεβαίωση της εγγραφής",
+ /*0089*/"choose the password" => "Επιλέξτε τον κωδικό πρόσβασης",
+ /*0090*/"confirm the password" => "Επιβεβαιώστε τον κωδικό πρόσβασης",
+ /*0091*/"write the code above" => "Γράψτε τον παραπάνω κωδικό",
+ /*0092*/"write your username" => "Γράψτε το όνομα χρήστη",
+ /*0093*/"Actions carried out by moderators" => "Ενέργειες που έγιναν από τους συντονιστές/moderators",
+ /*0094*/"meet" => "γνωρίστε",
+ /*0095*/"Public profile of" => "Δημόσιο προφίλ του/της",
+ /*0096*/"See all the contributions of" => "Δείτε όλες τις συνεισφορές του/της",
+ /*0097*/"My website" => "Ο προσωπικός μου ιστότοπος",
+ /*0098*/"My real name" => "Το πραγματικό μου όνομα",
+ /*0099*/"My e-mail address" => "Η ηλεκτρονική μου διεύθυνση",
+ /*0100*/"I'm from" => "Είμαι από το/την",
+ /*0101*/"Birthdate" => "Ημερομ. γεννήσεως",
+ /*0102*/"My favourite distribution" => "Η αγαπημένη μου διανομή",
+ /*0103*/"Free software projects I'm working on" => "Projects ελεύθερου Λογισμικού για τα οποία εργάζομαι",
+ /*0104*/"My description" => "Η περιγραφή μου",
+ /*0105*/"contributions" => "Συνεισφορές",
+ /*0106*/"contributions of" => "Συνεισφορές του/της",
+ /*0107*/"No sound cards found" => "Δεν βρέθηκε καμία κάρτα ήχου",
+ /*0108*/"LAST UPDATE" => "ΤΕΛΕΥΤΑΙΑ ΕΝΗΜΕΡΩΣΗ",
+ /*0109*/"search by" => "Αναζήτηση για",
+ /*0110*/"analyze the output of the lspci command" => "Ανάλυση της εξόδου της εντολής lscpi",
+ /*0111*/"paste the output of the lspci command" => "Επικόλληση της εξόδου της εντολής lspci",
+ /*0112*/"works, but without 3D acceleration" => "Λειτουργεί, αλλά χωρίς επιτάχυνση 3D",
+ /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "το κείμενο που υποβάλλατε δεν μοιάζει με την έξοδο της εντολής lspci -vmmnn. Παρακαλώ επανελέγξτε το κείμενο και ξαναδοκιμάστε",
+ /*0114*/"Search form" => "Φόρμα αναζήτησης",
+ /*0115*/"write here the output of lspci -vmmnn" => "Γράψτε εδώ την έξοδο της εντολής lspci -vmmnn",
+ /*0116*/"The following devices has been found in the database" => "Βρέθηκαν οι ακόλουθες συσκευές στη βάση δεδομένων",
+ /*0117*/"yes" => "ναι",
+ /*0118*/"no" => "όχι",
+ /*0119*/"The following devices has not been found in the database" => "Οι εξής συσκευές δεν βρέθηκαν στη βάση δεδομένων",
+ /*0120*/"can you please insert them?" => "Μπορείτε παρακαλώ να τις εισαγάγετε;",
+ /*0121*/"No webcams found" => "Δεν βρέθηκε καμία webcam",
+ /*0122*/"Download the xml file of all the database" => "Μεταφορτώστε το αρχείο xml όλης της βάσης δεδομένων",
+ /*0123*/"Download the xml file of all the <b>notebooks</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>notebook</b> που περικλείονται στη βάση δεδομένων",
+ /*0124*/"Download the xml file of all the <b>wifi cards</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>καρτών wifi</b> που περικλείονται στη βάση δεδομένων",
+ /*0125*/"Download the xml file of all the <b>video cards</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>καρτών γραφικών</b> που περικλείονται στη βάση δεδομένων",
+ /*0126*/"Download the xml file of all the <b>printers</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>εκτυπωτών</b> που περικλείονται στη βάση δεδομένων",
+ /*0127*/"Download the xml file of all the <b>3G cards</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>καρτών 3G</b> που περικλείονται στη βάση δεδομένων",
+ /*0128*/"Download the xml file of all the <b>sound cards</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>καρτών ήχου</b> που περικλείονται στη βάση δεδομένων",
+ /*0129*/"Download the xml file of all the <b>webcams</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>webcam</b> που περικλείονται στη βάση δεδομένων",
+ /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Μπορείτε να μεταφορτώσετε την βάση δεδομένων του h-node σε ένα ενιαίο αρχείο xml, για την ανάλυση των περιεχομένων του, με τη χρήση ενός κατάλληλου script (π.χ. ένα script σε Python ή σε Perl ή σε PHP)",
+ /*0131*/"Download the h-node hardware database in xml format" => "Μεταφορτώστε την βάση δεδομένων του υλικού/hardware του h-node υπό μορφή αρχείου xml",
+ /*0132*/"Database modifications" => "Τροποποιήσεις βάσης δεδομένων",
+ /*0133*/"List of the database modifications carried out by users" => "Κατάλογος τροποποιήσεων της βάσης δεδομένων των χρηστών",
+ /*0134*/"the model" => "το μοντέλο",
+ /*0135*/"has been inserted by" => "Έχει εισαχθεί από τον/την",
+ /*0136*/"has been updated by" => "Έχει τροποποιηθεί από τον/την",
+ /*0137*/"at" => "στις",
+ /*0138*/"last modifications" => "Τελευταίες τροποποιήσεις",
+ /*0139*/"watch all modifications" => "Δείτε όλες τις τροποποιήσεις",
+ /*0140*/"the title" => "ο τίτλος",
+ /*0141*/"the text of the wiki page" => "Το κείμενο της σελίδας του wiki",
+ /*0142*/"the wiki page has not been found" => "Η σελίδα του wiki δεν βρέθηκε",
+ /*0143*/"Page not-found" => "Η σελίδα δεν βρέθηκε",
+ /*0144*/"Insert" => "Εισαγωγή",
+ /*0145*/"Update" => "Τροποποίηση",
+ /*0146*/"History" => "Ιστορία",
+ /*0147*/"Revision" => "Αναθεώρηση",
+ /*0148*/"Differences" => "Διαφορές",
+ /*0149*/"Insert a new wiki page" => "Εισαγωγή μίας νέας σελίδας στο wiki",
+ /*0150*/"Edit the wiki page" => "Τροποποιήστε την σελίδα του wiki",
+ /*0151*/"Make current" => "Καταστήστε τρέχουσα την αναθεώρηση",
+ /*0152*/"I want to make this revision the current revision" => "Θέλω να κάνω αυτή την αναθεώρηση να είναι η τρέχουσα αναθεώρηση",
+ /*0153*/"Confirm" => "Επιβεβαίωση",
+ /*0154*/"Make this revision the current revision of the page" => "Κάντε αυτή την αναθεώρηση να είναι η τρέχουσα αναθεώρηση της σελίδας",
+ /*0155*/"This wiki page has been deleted" => "Αυτή η σελίδα του wiki έχει διαγραφεί",
+ /*0156*/"Talk" => "Συζήτηση",
+ /*0157*/"Talk page of the wiki page" => "Σελίδα συζήτησης της σελίδας του wiki",
+ /*0158*/"a page with the same title already exists" => "Υπάρχει ήδη μία σελίδα με τον ίδιο τίτλο",
+ /*0159*/"title is too long" => "Ο τίτλος είναι πολύ μεγάλος",
+ /*0160*/"the page text is too long" => "Το κείμενο της σελίδας είναι πολύ μεγάλο",
+ /*0161*/"History of the wiki page" => "Ιστορικό της σελίδας του wiki",
+ /*0162*/"Would you like to insert it?" => "Θα θέλατε να το εισαγάγετε;",
+ /*0163*/"Wiki modifications" => "Τροποποιήσεις του Wiki",
+ /*0164*/"List of the wiki modifications carried out by users" => "Κατάλογος των τροποποιήσεων του wiki που επέφεραν οι χρήστες",
+ /*0165*/"list of pages" => "κατάλογος των σελίδων",
+ /*0166*/"List of wiki pages" => "Κατάλογος των σελίδων του wiki",
+ /*0167*/"This wiki page has been blocked" => "Αυτή η σελίδα του wiki έχει εμποδισθεί",
+ /*0168*/"unblock the wiki page" => "Απελευθερώστε την σελίδα",
+ /*0169*/"block the wiki page" => "Εμποδίστε την σελίδα του wiki",
+ /*0170*/"show the wiki page" => "Εμφανείστε την σελίδα του wiki",
+ /*0171*/"hide the wiki page" => "Κρύψτε την σελίδα του wiki",
+ /*0172*/"list of deleted pages" => "Κατάλογος σελίδων που έχουν διαγραφεί",
+ /*0173*/"restore the wiki page" => "Ανακτήστε την σελίδα του wiki",
+ /*0174*/"delete the wiki page" => "Διαγράψτε την σελίδα",
+ /*0175*/"list of blocked pages" => "Κατάλογος σελίδων που έχουν εμποδισθεί",
+ /*0176*/"special pages" => "Ειδικές σελίδες",
+ /*0177*/"Actions carried out by administrators" => "Ενέργειες που εκτελέσθηκαν από τους διαχειριστές",
+ /*0178*/"No bluetooth devices found" => "Δεν βρέθηκε καμία συσκευή bluetooth",
+ /*0179*/"learn how to find it" => "Μάθετε πως να το βρείτε",
+ /*0180*/"Download the xml file of all the <b>bluetooth devices</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>συσκευών bluetooth</b> που περικλείονται στη βάση δεδομένων",
+ /*0181*/"License information" => "Πληροφορίες για την άδεια",
+ /*0182*/"No acquisition card found" => "Δεν βρέθηκε καμία κάρτα λήψης",
+ /*0183*/"No fingerprint readers found" => "Δεν βρέθηκε καμία συσκευή ανάγνωσης δακτυλικών αποτυπωμάτων",
+ /*0184*/"Download the xml file of all the <b>acquisition cards</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>καρτών λήψης</b> που περικλείονται στη βάση δεδομένων",
+ /*0185*/"Download the xml file of all the <b>fingerprint readers</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>συσκευών ανάγνωσης δακτυλικών αποτυπωμάτων</b> που περικλείονται στη βάση δεδομένων",
+ /*0186*/"architecture" => "Αρχιτεκτονική",
+ /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Προσθέστε εδώ το όνομα της συσκευής έτσι όπως προκύπτει γραμμένο πάνω στην ίδια τη συσκευή ή στη συσκευασία της. Προσθέστε το όνομα αυτό μόνον αν είναι διαφορετικό από το <i>όνομα του μοντέλου</i> που έχει ήδη εισαχθεί στο προηγούμενο πεδίο. Προσθέστε το νέο όνομα έτσι ώστε να υπάρχει ένα όνομα ανά σειρά.",
+ /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Γράψτε εδώ το όνομα του μοντέλου που επιστρέφει η εντολή lspci είτε η εντολή lsusb.",
+ /*0189*/"This is the name of the chipset of your device." => "Αυτό είναι το όνομα του chipset της συσκευής σας.",
+ /*0190*/"possible other names of the device" => "Άλλα πιθανά ονόματα της συσκευής",
+ /*0191*/"Description entry preview" => "Προεπισκόπηση του πεδίου περιγραφής",
+ /*0192*/"Page preview" => "Προεπισκόπηση της σελίδας",
+ /*0193*/"This device page has been hidden" => "Η σελίδα αυτής της συσκευής έχει αποκρυφθεί",
+ /*0194*/"restore the device page" => "Ανάκτηση της σελίδας της συσκευής",
+ /*0195*/"hide the device page" => "Απόκρυψη της σελίδας της συσκευής",
+ /*0196*/"Download the xml file of all the <b>scanners</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>σαρωτών</b> που περικλείονται στη βάση δεδομένων",
+ /*0197*/"Special pages for administrators" => "Ειδικές σελίδες για διαχειριστές",
+ /*0198*/"Special pages for moderators" => "Ειδικές σελίδες για τους συντονιστές/moderators",
+ /*0199*/"see the page" => "Δείτε την σελίδα",
+ /*0200*/"hidden device pages" => "Κρυφές σελίδες των συσκευών",
+ /*0201*/"panel" => "πάνελ",
+ /*0202*/"List of hidden device pages" => "Κατάλογος των κρυφών σελίδων των συσκευών",
+ /*0203*/"approve the device page" => "Έγκριση της σελίδας της συσκευής",
+ /*0204*/"This device page has not been approved yet" => "Αυτή η σελίδα συσκευής δεν έχει ακόμη εγκριθεί",
+ /*0205*/"Device pages that have to be approved" => "Σελίδες συσκευών προς έγκριση",
+ /*0206*/"The device page has to be approved by an administrator of the website" => "Αυτή η σελίδα συσκευής πρέπει να εγκριθεί από έναν διαχειριστή της ιστοσελίδας",
+ /*0207*/"permanently delete the device page" => "Διαγράψτε οριστικά την σελίδα συσκευής",
+ /*0208*/"This page has been permanently deleted by an administrator of the website" => "Αυτή η σελίδα έχει διαγραφεί οριστικά από έναν διαχειριστή της ιστοσελίδας",
+ /*0209*/"No ethernet devices found" => "Δεν βρέθηκε καμία κάρτα ethernet",
+ /*0210*/"free BIOS" => "Ελεύθερο BIOS",
+ /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Δεν είστε ένας εγγεγραμμένος χρήστης, ή δεν κάνατε login. Η συνεισφορά σας δεν θα δημοσιευθεί μέχρι να εγκριθεί από έναν διαχειριστή. Αν επιθυμείτε να δημοσιεύεται αυτομάτως η συνεισφορά σας, τότε, παρακαλώ κάντε login, ή δημιουργήστε έναν λογαριασμό.",
+ /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "έχει εισαχθεί από έναν ανώνυμο χρήστη, και θα πρέπει πρώτα να εγκριθεί από έναν διαχειριστή για να δημοσιευθεί",
+ /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "μπορείτε και να εγγραφείτε στη ροή νέων, για να λαμβάνετε τις νέες τροποποιήσεις που χρειάζονται συντονισμό",
+ /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "πρέπει να έχετε ενεργοποιήσει την Javascript για να χρησιμοποιείτε σωστά τις καρτέλες γλώσσας (δείτε πιο κάτω)",
+ /*0215*/"yes" => "Ναι",
+ /*0216*/"works with 3D acceleration" => "Λειτουργεί με επιτάχυνση 3D",
+ /*0217*/"works, but without 3D acceleration" => "Λειτουργεί, αλλά χωρίς επιτάχυνση 3D",
+ /*0218*/"it does not work" => "Δεν λειτουργεί",
+ /*0219*/"Notebooks, netbooks, tablet PC" => "Φορητοί υπολογιστές, Υπο-φορητοί, Ταμπλέτες",
+ /*0220*/"Wifi cards" => "Κάρτες wifi",
+ /*0221*/"Video cards" => "Κάρτες γραφικών",
+ /*0222*/"Printers and multifunction" => "Εκτυπωτές και πολυεργαλεία",
+ /*0223*/"Scanners" => "Σαρωτές",
+ /*0224*/"3G cards" => "Κάρτες 3G",
+ /*0225*/"Sound cards" => "Κάρτες ήχου",
+ /*0226*/"Webcams" => "Διαδικτυακές κάμερες Webcam",
+ /*0227*/"Bluetooth devices" => "Συσκευές bluetooth",
+ /*0228*/"TV/Video/FM acquisition cards" => "Κάρτες λήψης TV/Video/FM",
+ /*0229*/"Fingerprint readers" => "Συσκευές ανγνώρισης δακτυλικών αποτυπωμάτων",
+ /*0230*/"Ethernet cards" => "Κάρτες ethernet",
+ /*0231*/"Hardware" => "Υλικό/ Hardware",
+ /*0232*/"Issues" => "Προβλήματα",
+ /*0233*/"Search" => "Αναζήτηση",
+ /*0234*/"News" => "Νέα",
+ /*0235*/"Download" => "Μεταφόρτωση",
+ /*0236*/"Help" => "Βοήθεια",
+ /*0237*/"List of" => "Κατάλογος των",
+ /*0238*/"talk messages" => "μυνήματα συζήτησης",
+ /*0239*/"History" => "Ιστορικό",
+ /*0240*/"Revision" => "Αναθεώρηση",
+ /*0241*/"This is an old revision of this page, as edited by" => "Αυτή είναι μια παλιά αναθεώρηση της σελίδας, έτσι όπως τροποποιήθηκε από τον/την",
+ /*0242*/"It may differ significantly from the" => "Μπορεί να διαφέρει σημαντικά από την",
+ /*0243*/"Differences between the revision of" => "Διαφορές ανάμεσα στην αναθεώρηση του/της",
+ /*0244*/"created by" => "που δημιουργήθηκε από τον/την",
+ /*0245*/"and the revision of" => "και την αναθεώρηση του/της",
+ /*0246*/"<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed." => "<b>Σημείωση</b>: το κείμενο με <del>κόκκινο</del> έχει διαγραφεί από την προηγούμενη αναθεώρηση, το κείμενο με <ins>πράσινο</ins> έχει προστεθεί σε αυτή την αναθεώρηση και το κείμενο με <span class='gray_text_notice'>γκρι</span> δεν έχει αλλαχθεί",
+ /*0247*/"Insert" => "Εισαγωγή",
+ /*0248*/"Edit" => "Τροποποίηση",
+ /*0249*/"Talk page" => "Σελίδα συζήτησης",
+ /*0250*/"Download the xml file of all the <b>ethernet cards</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>καρτών ethernet</b> που περικλείονται στη βάση δεδομένων",
+ /*0251*/"No SD card readers found" => "Δεν βρέθηκε καμία συσκευή ανάγνωσης καρτών SD",
+ /*0252*/"SD card readers" => "Συσκευές ανάγνωσης καρτών SD",
+ /*0253*/"Download the xml file of all the <b>SD card readers</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των <b>συσκευών ανάγνωσης καρτών SD</b> που περικλείονται στη βάση δεδομένων",
+ /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Δεν υπάρχουν συσεκυές στη βάση δεδομένων με τον κωδικό vendorid:productid που να διευκρινίσθηκε από εσάς",
+ /*0255*/"Would you like to add it to the database?" => "Θα θέλατε να το προσθέσετε στη βάση δεδομεων;",
+ /*0256*/"can free operating systems be installed?" => "μπορούν να εγκατασταθούν ελεύθερα λειτοργικά συστήματα;",
+ /*0257*/"This issue has been deleted" => "Αυτό το πρόβλημα έχει διαγραφεί",
+ /*0258*/"hidden for those who are not moderators" => "κρυφό για εκείνους που δεν είναι συντονιστές",
+ /*0259*/"This issue is hidden for all the users that are not moderators" => "Αυτό το πρόβλημα είναι κρυφό για όλους τους χρήστες που δεν είναι συντονιστές",
+ /*0260*/"hide the issue" => "Κρύψτε το πρόβλημα",
+ /*0261*/"show the issue" => "Εμφάνιση του προβλήματος",
+ /*0262*/"open the issue again" => "Ανοίξτε το πρόβλημα ξανά",
+ /*0263*/"close the issue" => "Κλείστε το πρόβλημα",
+ /*0264*/"This issue is closed" => "Αυτό το πρόβλημα έχει κλείσει",
+ /*0265*/"This issue is opened" => "Αυτό το πρόβλημα είναι ανοικτό",
+ /*0266*/"does it adopt any techniques to track users?" => "Υιοθετεί οποιεσδήποτε τεχνικές για παρακολούθηση των χρηστών;",
+ /*0267*/"Actions carried out by users" => "Ενέργειες που εκτελέσθηκαν από τους χρήστες",
+ /*0268*/"No modems found" => "Δεν βρέθηκε κανένα modem",
+ /*0269*/"Download the xml file of all the <b>modems</b> in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών <b>modem</b> που περιλαμβάνονται στη βάση δεδομένων",
+ /*0270*/"Modems and ADSL cards" => "Συσκευές Modem και κάρτες ADSL",
+ /*0271*/"Table of contents" => "Πίνακας περιεχομένων",
+ /*0272*/"by" => "Δημιουργήθηκε από τον/την",
+ /*0273*/"Add a message" => "Προσθέστε ένα μήνυμα",
+ /*0274*/"Save" => "Αποθήκευση",
+ /*0275*/"Revision of the wiki page" => "Αναθεώρηση της σελίδας του wiki",
+ /*0276*/"Preview" => "Προεπισκόπηση",
+ /*0277*/"January" => "Ιανουάριος",
+ /*0278*/"February" => "Φεβρουάριος",
+ /*0279*/"March" => "Μάρτιος",
+ /*0280*/"April" => "Απρίλιος",
+ /*0281*/"May" => "Μάιος",
+ /*0282*/"June" => "Ιούνιος",
+ /*0283*/"July" => "Ιούλιος",
+ /*0284*/"August" => "Αύγουστος",
+ /*0285*/"September" => "Σεπτέμβριος",
+ /*0286*/"October" => "Οκτώβριος",
+ /*0287*/"November" => "Νοέμβριος",
+ /*0288*/"December" => "Δεκέμβριος",
+ /*0289*/"not-specified" => "μη-διευκρινισμένο",
+ /*0290*/"last-inserted" => "τελευταία-εισαγωγή",
+ /*0291*/"last inserted" => "τελευταία εισαγωγή",
+ /*0292*/"alphabetically" => "κατά αλφαβητική σειρά",
+ /*0293*/"alphabetically-desc" => "κατά-φθίνουσα-αλφαβητική-σειρά",
+ /*0294*/"alphabetically desc" => "κατά φθίνουσα αλφαβητική σειρά",
+ /*0295*/"undef" => "αδιευκρ",
+ /*0296*/"All" => "Όλοι",
+ /*0297*/"inkjet" => "ψεκασμού μελάνης",
+ /*0298*/"A-Full" => "A-Πλήρης",
+ /*0299*/"B-Partial" => "B-Μερικός",
+ /*0300*/"C-None" => "C-Κανείς",
+ /*0301*/"A-platinum" => "A-Πλατινένιος",
+ /*0302*/"B-gold" => "B-χρυσός",
+ /*0303*/"C-silver" => "C-αργυρός",
+ /*0304*/"D-bronze" => "D-χάλκινος",
+ /*0305*/"E-garbage" => "E-σκουπίδια",
+ /*0306*/"not specified how it works" => "Δεν διευκρινίσθηκε πως λειτουργεί",
+ /*0307*/"there is no wifi card" => "Δεν υπάρχει κάρτα wifi",
+ /*0308*/"there is no webcam" => "Δεν υπάρχει καμία διαδικτυακή κάμερα",
+ /*0309*/"it works" => "Λειτουργεί",
+ /*0310*/"does_not_work" => "Δεν λειτουργεί",
+ /*0311*/"works_without_3D" => "Λειτουργεί χωρίς 3D",
+ /*0312*/"works_with_3D" => "Λειτουργεί με 3D",
+ /*0313*/"list of languages" => "Κατάλογος γλωσσών",
+ /*0314*/"Choose the language" => "Επιλέξτε μία γλώσσα",
+ /*0315*/"back" => "πίσω",
+ /*0316*/"next" => "τα επόμενα",
+ /*0317*/"previous" => "τα προηγούμενα",
+ /*0318*/"type" => "τύπος",
+ ),
+ 'pt' => array
+ (
+ /*0001*/"Search one device in the archive" => "Procurar um dispositivo no arquivo",
+ /*0002*/"hardware type" => "Tipo de hardware",
+ /*0003*/"the model name contains" => "O nome do modelo contém",
+ /*0004*/"List of issues" => "Lista de discussões",
+ /*0005*/"TITLE" => "TÍTULO",
+ /*0006*/"TOPIC" => "TÓPICO",
+ /*0007*/"OPENED BY" => "ABERTO POR",
+ /*0008*/"DATE" => "DATA",
+ /*0009*/"REPLIES" => "RESPOSTAS",
+ /*0010*/"PRIORITY" => "PRIORIDADE",
+ /*0011*/"STATUS" => "STATUS",
+ /*0012*/"You have to" => "Você precisa",
+ /*0013*/"in order to submit an issue" => "para poder cadastrar uma discussão",
+ /*0014*/"in order to add a message" => "para pode adicionar uma mensagem",
+ /*0015*/"Description" => "Descrição",
+ /*0016*/"Messages" => "Mensagens",
+ /*0017*/"this message has been deleted" => "esta mensagem foi excluída",
+ /*0018*/"in order to submit a message to this issue" => "para poder enviar uma mensagem para esta discussão",
+ /*0019*/"model name" => "nome do modelo",
+ /*0020*/"model type" => "tipo de modelo",
+ /*0021*/"year of commercialization" => "ano de comercialização",
+ /*0022*/"Results of the search" => "Resultados da pesquisa",
+ /*0023*/"page list" => "página",
+ /*0024*/"No devices found" => "Nenhum dispositivo encontrado",
+ /*0025*/"vendor" => "fabricante",
+ /*0026*/"compatibility" => "compatibilidade",
+ /*0027*/"year" => "ano",
+ /*0028*/"subtype" => "subtipo",
+ /*0029*/"sort by" => "ordenar por",
+ /*0030*/"interface" => "interface",
+ /*0031*/"does it work?" => "funciona?",
+ /*0032*/"preview of the message" => "visualização da mensagem",
+ /*0033*/"preview of the new issue message" => "visualização da mensagem da nova discussão",
+ /*0034*/"Add a message to this issue" => "Adicionar uma mensagem a esta discussão",
+ /*0035*/"Add a new issue" => "Adicionar uma nova discussão",
+ /*0036*/"MESSAGE" => "MENSAGEM",
+ /*0037*/"there are no messages" => "não há mensagens",
+ /*0038*/"No notebooks found" => "Nenhum notebook encontrado",
+ /*0039*/"subtype (notebook, netbook, tablet)" => "subtipo (notebook, netbook, tablet)",
+ /*0040*/"compatibility with free software" => "compatibilidade com software livre",
+ /*0041*/"view the other specifications" => "exibir as outras especificações",
+ /*0042*/"model" => "Modelo",
+ /*0043*/"model id" => "ID do modelo",
+ /*0044*/"tested on" => "testado com",
+ /*0045*/"tested with the following kernel libre" => "testado com o seguinte kernel livre",
+ /*0046*/"video card model" => "modelo da placa de vídeo",
+ /*0047*/"wifi model" => "modelo da placa wifi",
+ /*0048*/"GNU/Linux distribution used for the test" => "distribuição GNU/Linux usada para teste",
+ /*0049*/"does the video card work?" => "a placa de vídeo funciona?",
+ /*0050*/"does the wifi card work?" => "a placa wifi funciona?",
+ /*0051*/"Description: (write here all the useful information)" => "Descrição (escreva todas as informações que achar útil)",
+ /*0052*/"discover all the wiki tags" => "explore todas as tags da wiki",
+ /*0053*/"Fields marked with <b>*</b> are mandatory" => "Campos marcados com <b>*</b> são obrigatórios",
+ /*0054*/"No printers found" => "Nenhuma impressora encontrada",
+ /*0055*/"interface" => "interface",
+ /*0056*/"VendorID:ProductID code of the device" => "código VendorID:ProductID do dispositivo",
+ /*0057*/"free driver used" => "driver livre utilizado",
+ /*0058*/"set not-specified if not sure" => "defina como não-especificado se não tiver certeza",
+ /*0059*/"see the help page or leave blank if you are not sure" => "leia a página de ajuda ou deixe em branco se não tiver certeza",
+ /*0060*/"No scanners found" => "Nenhum scanner encontrado",
+ /*0061*/"No video cards found" => "Nenhuma placa de vídeo encontrada",
+ /*0062*/"how does it work with free software?" => "como ele funciona com software livre?",
+ /*0063*/"No wifi cards found" => "Nenhuma placa wifi encontrada",
+ /*0064*/"does it work with free software?" => "funciona com software livre?",
+ /*0065*/"differences in the entry" => "diferenças no campo",
+ /*0066*/"No 3G cards found" => "Nenhum dispositivo 3G encontrado",
+ /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Indique no campo de descrição abaixo o Provedor de Acesso à Internet (ISP) e o país onde o serviço é prestado",
+ /*0068*/"webcam model" => "modelo da webcam",
+ /*0069*/"does it have a free BIOS?" => "Tem uma BIOS livre?",
+ /*0070*/"does the webcam work?" => "A webcam funciona?",
+ /*0071*/"Current revision" => "Versão atual",
+ /*0072*/"Hello" => "Olá",
+ /*0073*/"Your" => "Seu",
+ /*0074*/"control panel" => "Painel de controle",
+ /*0075*/"create new account" => "Criar uma nova conta",
+ /*0076*/"request new password" => "Solicitar uma nova senha",
+ /*0077*/"website statistics" => "Estatísticas da página Web",
+ /*0078*/"hardware in the database" => "O hardware no banco de dados",
+ /*0079*/"users logged" => "usuários on-line",
+ /*0080*/"Watch your public profile" => "Veja o seu perfil público",
+ /*0081*/"Edit your profile" => "Editar o seu perfil",
+ /*0082*/"Change your e-mail address" => "Alterar o seu endereço de e-mail",
+ /*0083*/"Change your password" => "Alterar a sua senha",
+ /*0084*/"Delete your account" => "Excluir a sua conta",
+ /*0085*/"choose the username" => "escolha o nome de usuário",
+ /*0086*/"characters allowed" => "caracteres permitidos",
+ /*0087*/"your e-mail address" => "seu endereço de e-mail",
+ /*0088*/"necessary to confirm the registration" => "é necessário confirmar o registro",
+ /*0089*/"choose the password" => "escolha a senha",
+ /*0090*/"confirm the password" => "confirme a senha",
+ /*0091*/"write the code above" => "digite o código acima",
+ /*0092*/"write your username" => "digite o seu nome de usuário",
+ /*0093*/"Actions carried out by moderators" => "Ações realizadas pelos moderadores",
+ /*0094*/"meet" => "reunir",
+ /*0095*/"Public profile of" => "Perfil público de",
+ /*0096*/"See all the contributions of" => "Veja todas as contribuições de",
+ /*0097*/"My website" => "Minha página da Web",
+ /*0098*/"My real name" => "Meu nome verdadeiro",
+ /*0099*/"My e-mail address" => "Meu endereço de e-mail",
+ /*0100*/"I'm from" => "Sou de",
+ /*0101*/"Birthdate" => "Data de nascimento",
+ /*0102*/"My favourite distribution" => "Minha distribuição favorita",
+ /*0103*/"Free software projects I'm working on" => "Projetos de software livre que eu colaboro",
+ /*0104*/"My description" => "Minha descrição",
+ /*0105*/"contributions" => "contribuições",
+ /*0106*/"contributions of" => "contribuições de",
+ /*0107*/"No sound cards found" => "Nenhuma placa de som encontrada",
+ /*0108*/"LAST UPDATE" => "ÚLTIMA ATUALIZAÇÃO",
+ /*0109*/"search by" => "Pesquisar por",
+ /*0110*/"analyze the output of the lspci command" => "Analisar o resultado do comando lspci",
+ /*0111*/"paste the output of the lspci command" => "Cole o resultado do comando lspci",
+ /*0112*/"works, but without 3D acceleration" => "funciona, mas sem aceleração 3D",
+ /*0113*/"the text submitted by you does not seem the lspci -vmmnn output. Please check the text and try again" => "o texto enviado por você não parece o resultado do comando lspci -vmmnn. Verifique o texto e tente novamente",
+ /*0114*/"Search form" => "Formulário de pesquisa",
+ /*0115*/"write here the output of lspci -vmmnn" => "digite o resultado do comando lspci -vmmnn",
+ /*0116*/"The following devices has been found in the database" => "Os dispositivos a seguir foram encontrados no banco de dados",
+ /*0117*/"yes" => "sim",
+ /*0118*/"no" => "não",
+ /*0119*/"The following devices has not been found in the database" => "Os dispositivos a seguir não foram encontrados no banco de dados",
+ /*0120*/"can you please insert them?" => "Você pode inseri-los?",
+ /*0121*/"No webcams found" => "Nenhuma webcam encontrada",
+ /*0122*/"Download the xml file of all the database" => "Baixar o arquivo xml do banco de dados completo",
+ /*0123*/"Download the xml file of all the <b>notebooks</b> in the database" => "Baixar o arquivo xml de todos os <b>notebooks</b> existentes no banco de dados",
+ /*0124*/"Download the xml file of all the <b>wifi cards</b> in the database" => "Baixar o arquivo xml de todas as <b>placas wifi</b> existentes no banco de dados",
+ /*0125*/"Download the xml file of all the <b>video cards</b> in the database" => "Baixar o arquivo xml de todas as <b>placas de vídeo</b> existentes no banco de dados",
+ /*0126*/"Download the xml file of all the <b>printers</b> in the database" => "Baixar o arquivo xml de todas as <b>impressoras</b> existentes no banco de dados",
+ /*0127*/"Download the xml file of all the <b>3G cards</b> in the database" => "Baixar o arquivo xml de todos os <b>dispositivos 3G</b> existentes no banco de dados",
+ /*0128*/"Download the xml file of all the <b>sound cards</b> in the database" => "Baixar o arquivo xml de todas as <b>placas de som</b> existentes no banco de dados",
+ /*0129*/"Download the xml file of all the <b>webcams</b> in the database" => "Baixar o arquivo xml de todas as <b>webcams</b> existentes no banco de dados",
+ /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Você pode baixa todo o conteúdo do banco de dados do h-node em um único arquivo xml, a fim de analisar todo o seu conteúdo através de um script adequado (por exemplo, um script em Python, Perl ou PHP)",
+ /*0131*/"Download the h-node hardware database in xml format" => "Baixar o banco de dados de hardware do h-node em formato xml",
+ /*0132*/"Database modifications" => "Modificações no banco de dados",
+ /*0133*/"List of the database modifications carried out by users" => "Lista das modificações no banco de dados realizadas por usuários",
+ /*0134*/"the model" => "o modelo",
+ /*0135*/"has been inserted by" => "foi inserido por",
+ /*0136*/"has been updated by" => "foi atualizado por",
+ /*0137*/"at" => "em",
+ /*0138*/"last modifications" => "últimas modificações",
+ /*0139*/"watch all modifications" => "ver todas as modificações",
+ /*0140*/"the title" => "o título",
+ /*0141*/"the text of the wiki page" => "o texto da página wiki",
+ /*0142*/"the wiki page has not been found" => "a página wiki não foi encontrada",
+ /*0143*/"Page not-found" => "Página não encontrada",
+ /*0144*/"Insert" => "Inserir",
+ /*0145*/"Update" => "Atualizar",
+ /*0146*/"History" => "Histórico",
+ /*0147*/"Revision" => "Versão",
+ /*0148*/"Differences" => "Diferenças",
+ /*0149*/"Insert a new wiki page" => "Insere uma nova página wiki",
+ /*0150*/"Edit the wiki page" => "Edita a página wiki",
+ /*0151*/"Make current" => "Tornar a atual",
+ /*0152*/"I want to make this revision the current revision" => "Quero fazer desta versão a atual",
+ /*0153*/"Confirm" => "Confirmar",
+ /*0154*/"Make this revision the current revision of the page" => "Tornar esta versão a versão atual da página",
+ /*0155*/"This wiki page has been deleted" => "Esta página wiki foi excluída",
+ /*0156*/"Talk" => "Discussão",
+ /*0157*/"Talk page of the wiki page" => "Página de discussão da página wiki",
+ /*0158*/"a page with the same title already exists" => "já existe uma página com o mesmo título",
+ /*0159*/"title is too long" => "o título é muito grande",
+ /*0160*/"the page text is too long" => "o texto da página é muito grande",
+ /*0161*/"History of the wiki page" => "Histórico da página wiki",
+ /*0162*/"Would you like to insert it?" => "Gostaria de inseri-la?",
+ /*0163*/"Wiki modifications" => "Modificações da wiki",
+ /*0164*/"List of the wiki modifications carried out by users" => "Lista das modificações da wiki realizadas pelos usuários",
+ /*0165*/"list of pages" => "lista de páginas",
+ /*0166*/"List of wiki pages" => "Lista de páginas da wiki",
+ /*0167*/"This wiki page has been blocked" => "Esta página da wiki foi bloqueada",
+ /*0168*/"unblock the wiki page" => "desbloqueia a página da wiki",
+ /*0169*/"block the wiki page" => "bloqueia a página da wiki",
+ /*0170*/"show the wiki page" => "mostra a página da wiki",
+ /*0171*/"hide the wiki page" => "oculta a página da wiki",
+ /*0172*/"list of deleted pages" => "lista as páginas excluídas",
+ /*0173*/"restore the wiki page" => "restaura a página da wiki",
+ /*0174*/"delete the wiki page" => "exclui a página da wiki",
+ /*0175*/"list of blocked pages" => "lista de páginas bloqueadas",
+ /*0176*/"special pages" => "páginas especiais",
+ /*0177*/"Actions carried out by administrators" => "Ações realizadas pelos administradores",
+ /*0178*/"No bluetooth devices found" => "Nenhom dispositivo bluetooth encontrado",
+ /*0179*/"learn how to find it" => "aprenda a encontrá-lo",
+ /*0180*/"Download the xml file of all the <b>bluetooth devices</b> in the database" => "Baixar o arquivo xml de todos os <b>dispositivos bluetooth</b> existentes no banco de dados",
+ /*0181*/"License information" => "Informações sobre a licença",
+ /*0182*/"No acquisition card found" => "Nenhum placa de captura encontrada",
+ /*0183*/"No fingerprint readers found" => "Nenhum leitor de impressão digital encontrado",
+ /*0184*/"Download the xml file of all the <b>acquisition cards</b> in the database" => "Baixar o arquivo xml de todas as <b>placas de captura</b> existentes no banco de dados",
+ /*0185*/"Download the xml file of all the <b>fingerprint readers</b> in the database" => "Baixar o arquivo xml de todos os <b>leitores de impressão digital</b> existentes no banco de dados",
+ /*0186*/"architecture" => "arquitetura",
+ /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Adicione aqui o nome do dispositivo como escrito nele próprio ou na caixa. Adicione-o apenas se ele for diferente do <i>nome do dispositivo</i> já inserido no campo acima. Adicione o novo nome em uma única linha.",
+ /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Digite aqui o nome do modelo, conforme obtido através do comando lspci ou lsusb.",
+ /*0189*/"This is the name of the chipset of your device." => "Este é o nome do chipset do seu dispositivo.",
+ /*0190*/"possible other names of the device" => "outros possíveis nomes do dispositivo",
+ /*0191*/"Description entry preview" => "Visualização do campo descrição",
+ /*0192*/"Page preview" => "Visualização da página",
+ /*0193*/"This device page has been hidden" => "Esta página do dispositivo foi ocultada",
+ /*0194*/"restore the device page" => "restaurar a página do dispositivo",
+ /*0195*/"hide the device page" => "ocultar a página do dispositivo",
+ /*0196*/"Download the xml file of all the <b>scanners</b> in the database" => "Baixar o arquivo xml de todos os <b>scanners</b> existentes no banco de dados",
+ /*0197*/"Special pages for administrators" => "Páginas especiais para administradores",
+ /*0198*/"Special pages for moderators" => "Páginas especiais para moderadores",
+ /*0199*/"see the page" => "veja a página",
+ /*0200*/"hidden device pages" => "Páginas ocultas do dispositivo",
+ /*0201*/"panel" => "painel",
+ /*0202*/"List of hidden device pages" => "Lista das páginas ocultas do dispositivo",
+ /*0203*/"approve the device page" => "aprovar a página do dispositivo",
+ /*0204*/"This device page has not been approved yet" => "Esta página do dispositivo ainda não foi aprovada",
+ /*0205*/"Device pages that have to be approved" => "Páginas do dispositivo que foram aprovadas",
+ /*0206*/"The device page has to be approved by an administrator of the website" => "A página do dispositivo foi aprovada por um dos administradores da página Web",
+ /*0207*/"permanently delete the device page" => "excluir permanentemente a página do dispositivo",
+ /*0208*/"This page has been permanently deleted by an administrator of the website" => "Esta página foi excluída de forma permanente por um dos administradores da página Web",
+ /*0209*/"No ethernet devices found" => "Nenhum dispositivo ethernet encontrado",
+ /*0210*/"free BIOS" => "BIOS livre",
+ /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Você não é um usuário registrado ou não está autenticado. A sua contribuição não será publicada até que seja aprovada por um administrador. Se você deseja que suas contribuições seja publicadas automaticamente, por favor, autentique-se ou crie uma conta.",
+ /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "foi inserida por um usuário anônimo, ela precisa ser aprovada por um administrador para ser publicada",
+ /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "você também pode assinar a fonte de notícias (feed) para receber novas notificações que precisam de moderação",
+ /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "você precisa ativar o javascript para usar corretamente as abas de idiomas (veja abaixo)",
+ /*0215*/"yes" => "sim",
+ /*0216*/"works with 3D acceleration" => "funciona com aceleração 3D",
+ /*0217*/"works, but without 3D acceleration" => "funciona, mas sem aceleração 3D",
+ /*0218*/"it does not work" => "não funciona",
+ /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablet PC",
+ /*0220*/"Wifi cards" => "Placas wifi",
+ /*0221*/"Video cards" => "Placas de vídeo",
+ /*0222*/"Printers and multifunction" => "Impressoras e multifuncionais",
+ /*0223*/"Scanners" => "Scanners",
+ /*0224*/"3G cards" => "Dispositivos 3G",
+ /*0225*/"Sound cards" => "Placas de som",
+ /*0226*/"Webcams" => "Webcams",
+ /*0227*/"Bluetooth devices" => "Dispositivos bluetooth",
+ /*0228*/"TV/Video/FM acquisition cards" => "Placas de captura de vídeo/TV/FM",
+ /*0229*/"Fingerprint readers" => "Leitores de impressão digital",
+ /*0230*/"Ethernet cards" => "Placas de rede",
+ /*0231*/"Hardware" => "Hardware",
+ /*0232*/"Issues" => "Discussões",
+ /*0233*/"Search" => "Pesquisar",
+ /*0234*/"News" => "Novidades",
+ /*0235*/"Download" => "Download",
+ /*0236*/"Help" => "Ajuda",
+ /*0237*/"List of" => "Lista de",
+ /*0238*/"talk messages" => "mensagens",
+ /*0239*/"History" => "Histórico",
+ /*0240*/"Revision" => "Versões",
+ /*0241*/"This is an old revision of this page, as edited by" => "Esta é uma versão antiga desta página, editada por",
+ /*0242*/"It may differ significantly from the" => "Ela pode ser muito diferente da",
+ /*0243*/"Differences between the revision of" => "Diferenças entre a versão de",
+ /*0244*/"created by" => "criada por",
+ /*0245*/"and the revision of" => "e a versão de",
+ /*0246*/"<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed." => "<b>Aviso</b>: o texto em <del>vermelho</del> foi excluído da versão anterior, o texto em <ins>verde</ins> foi adicionado nesta versão e o texto em <span class='gray_text_notice'>cinza</span> não foi alterado.",
+ /*0247*/"Insert" => "Inserir",
+ /*0248*/"Edit" => "Editar",
+ /*0249*/"Talk page" => "Pagina de discussões",
+ /*0250*/"Download the xml file of all the <b>ethernet cards</b> in the database" => "Baixar o arquivo xml de todas as <b>placas de rede</b> existentes no banco de dados",
+ /*0251*/"No SD card readers found" => "Nenhum leitor de cartão SD encontrado",
+ /*0252*/"SD card readers" => "Leitores de cartão SD",
+ /*0253*/"Download the xml file of all the <b>SD card readers</b> in the database" => "Baixar o arquivo xml de todos os <b>leitores de cartão SD</b> existentes no banco de dados",
+ /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Não há dispositivos no banco de dados com o código vendorid:productid indicado.",
+ /*0255*/"Would you like to add it to the database?" => "Gostaria de adicioná-lo ao banco de dados?",
+ /*0256*/"can free operating systems be installed?" => "É possível instalar sistemas operacionais livres?",
+ /*0257*/"This issue has been deleted" => "Esta discussão foi excluída",
+ /*0258*/"hidden for those who are not moderators" => "Oculto para os que não forem moderadores",
+ /*0259*/"This issue is hidden for all the users that are not moderators" => "Esta discussão foi oculta para todos os usuários que não são moderadores",
+ /*0260*/"hide the issue" => "ocultar esta discussão",
+ /*0261*/"show the issue" => "mostrar esta discussão",
+ /*0262*/"open the issue again" => "abrir a discussão novamente",
+ /*0263*/"close the issue" => "fechar a discussão",
+ /*0264*/"This issue is closed" => "Esta discussão está fechada",
+ /*0265*/"This issue is opened" => "Esta discussão está aberta",
+ /*0266*/"does it adopt any techniques to track users?" => "Ela adota alguma técnica para controlar usuários?",
+ /*0267*/"Actions carried out by users" => "Ações realizadas por usuários",
+ /*0268*/"No modems found" => "Nenhum modem encontrado",
+ /*0269*/"Download the xml file of all the <b>modems</b> in the database" => "Baixar o arquivo xml de todos os <b>modems</b> existentes no banco de dados",
+ /*0270*/"Modems and ADSL cards" => "Modems e placas ADSL",
+ /*0271*/"Table of contents" => "Índice",
+ /*0272*/"by" => "ciado por",
+ /*0273*/"Add a message" => "Adicionar uma mensagem",
+ /*0274*/"Save" => "Salvar",
+ /*0275*/"Revision of the wiki page" => "Versão da página wiki",
+ /*0276*/"Preview" => "Visualizar",
+ /*0277*/"January" => "Janeiro",
+ /*0278*/"February" => "Fevereiro",
+ /*0279*/"March" => "Março",
+ /*0280*/"April" => "Abril",
+ /*0281*/"May" => "Maio",
+ /*0282*/"June" => "Junho",
+ /*0283*/"July" => "Julho",
+ /*0284*/"August" => "Agosto",
+ /*0285*/"September" => "Setembro",
+ /*0286*/"October" => "Outubro",
+ /*0287*/"November" => "Novembro",
+ /*0288*/"December" => "Dezembro",
+ /*0289*/"not-specified" => "não especificado",
+ /*0290*/"last-inserted" => "inserido por último",
+ /*0291*/"last inserted" => "inserido por último",
+ /*0292*/"alphabetically" => "ordem alfabética",
+ /*0293*/"alphabetically-desc" => "ordem alfabética decrescente",
+ /*0294*/"alphabetically desc" => "ordem alfabética decrescente",
+ /*0295*/"undef" => "indefinido",
+ /*0296*/"All" => "Todos",
+ /*0297*/"inkjet" => "jato de tinta",
+ /*0298*/"A-Full" => "A-Total",
+ /*0299*/"B-Partial" => "B-Parcial",
+ /*0300*/"C-None" => "C-Nenhuma",
+ /*0301*/"A-platinum" => "A-Platina",
+ /*0302*/"B-gold" => "B-Ouro",
+ /*0303*/"C-silver" => "C-Prata",
+ /*0304*/"D-bronze" => "D-Bronze",
+ /*0305*/"E-garbage" => "E-Nenhuma",
+ /*0306*/"not specified how it works" => "o funcionamento não foi indicado",
+ /*0307*/"there is no wifi card" => "não há placa wifi",
+ /*0308*/"there is no webcam" => "não há webcam",
+ /*0309*/"it works" => "funciona",
+ /*0310*/"does_not_work" => "não funciona",
+ /*0311*/"works_without_3D" => "funciona sem 3D",
+ /*0312*/"works_with_3D" => "funciona com 3D",
+ /*0313*/"list of languages" => "lista de idiomas",
+ /*0314*/"Choose the language" => "Escolha o idioma",
+ /*0315*/"back" => "voltar",
+ /*0316*/"next" => "próximo",
+ /*0317*/"previous" => "anterior",
+ /*0318*/"type" => "tipo",
+ /*0319*/"contact us" => "entre em contato",
+ /*0320*/"credits" => "créditos",
+ /*0321*/"desktop version" => "versão para desktop",
+ /*0322*/"RAID adapters" => "Adaptadores RAID",
+ /*0323*/"No RAID adapter found" => "Nenhum adptador RAID encontrado",
+ /*0324*/"Download the xml file of all the <b>RAID adapters</b> in the database" => "Baixar o arquivo xml de todos os <b>adaptadores RAID</b> existentes no banco de dados",
+ /*0325*/"No PCMCIA Controller found" => "Nenhum controlador PCMCIA encontrado",
+ /*0326*/"PCMCIA Controllers" => "Controladores PCMCIA",
+ /*0327*/"Download the xml file of all the <b>PCMCIA Controllers</b> in the database" => "Baixar o arquivo xml de todos os <b>controladores PCMCIA</b> existentes no banco de dados",
+ /*0328*/"notebook" => "notebook",
+ /*0329*/"netbook" => "netbook",
+ /*0330*/"motherboard" => "placa-mãe",
+ /*0331*/"tablet" => "tablet",
+ /*0332*/"netbooks" => "netbook",
+ /*0333*/"Notebooks" => "Notebook",
+ /*0334*/"tablet PC" => "Tablet PC",
+ /*0335*/"motherboards" => "placas-mãe",
+ /*0336*/"Write a comma-separated list of kernel versions" => "Escreva uma lista de versões do kernel separadas por vírgula",
+ /*0337*/"Example" => "Exemplo",
+ /*0338*/"free boot firmware?" => "Firmware com boot livre?",
+ /*0339*/"can be installed" => "pode ser instalado",
+ /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "tem um firmware com boot livre (BIOS, UEFI,...)?",
+ /*0341*/"Hello,\n\nyou have registered an account at"=>"Olá!\n\nVocê tem uma conta registrada em",
+ /*0342*/"with the following data:\nusername: " => "com os seguintes dados:\nnome de usuário: ",
+ /*0343*/"in order to confirm the registration of the new account please follow the link below" => "a fim de confirmar o registro da nova conta,\nsiga o link abaixo",
+ /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Se não quiser confirmar o registro da conta,\nentão aguarde por uma hora para que seu nome de usuário e senha sejam excluídos do banco de dados",
+ /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Se recebeu este e-mail por engano, por favor, simplesmente ignore esta mensagem",
+ /*0346*/"account registration" => "Controlador de host",
+ /*0347*/"Host Controllers" => "Controladores de host",
+ /*0348*/"No Host Controller found" => "Nenhum controlador de host encontrado",
+ /*0349*/"Download the xml file of all the <b>Host Controllers</b> in the database" => "Baixar o arquivo xml de todos os <b>Controladores de host</b> do banco de dados",
+ /*0350*/"PCMCIA Controller" => "Controlador PCMCIA",
+ /*0351*/"USB Controller" => "Controlador USB",
+ /*0352*/"Firewire Controller" => "Controlador Firewire",
+ /*0353*/"HECI Controller" => "Controlador HECI",
+ /*0354*/"device type" => "tipo de dispositivo",
+ /*0355*/"Thanks for your contribution!" => "Obrigado pela sua contribuição!",
+ /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "o dispositivo evita a instalação de placas wi-fi não aprovados pelo vendedor?",
+ /*0357*/"see the details inside the description entry" => "veja os detalhes dentro da entrada da descrição",
+ /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Grazie per aver aiutato il progetto h-node e il movimento del software libero!",
+ /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Obrigado por ajudar o Projeto H-node e o movimento Software Livre!?",
+ /*0360*/"insert" => "inserir",
+ /*0361*/"List of allowed fully free distributions" => "Lista de distribuições consideradas totalmente livres",
+ /*0362*/"Insert a new distro" => "Inserir uma nova distribuição",
+ /*0363*/"DISTRO-CODE" => "CÓDIGO DA DISTRIBUIÇÃO",
+ ),
+ );
+
+ public static $singular = array(
+ 'en' => array(
+ /*01*/'notebooks' => 'notebook',
+ /*02*/'wifi' => 'wifi card',
+ /*03*/'videocards' => 'video card',
+ /*04*/'printers' => 'printer',
+ /*05*/'scanners' => 'scanner',
+ /*06*/'threegcards' => '3G-card',
+ /*07*/'soundcards' => 'soundcard',
+ /*08*/'webcams' => 'webcam',
+ /*09*/'bluetooth' => 'bluetooth device',
+ /*10*/'acquisitioncards' => 'acquisition card',
+ /*11*/'fingerprintreaders' => 'fingerprint reader',
+ /*12*/'ethernetcards' => 'ethernet card',
+ /*13*/'sdcardreaders' => 'sd card reader',
+ /*14*/'modems' => 'modem',
+ /*15*/'raidadapters' => 'RAID adapter',
+ /*16*/'hostcontrollers' => 'host controller',
+ ),
+ 'it' => array(
+ /*01*/'notebooks' => 'notebook',
+ /*02*/'wifi' => 'scheda wifi',
+ /*03*/'videocards' => 'scheda video',
+ /*04*/'printers' => 'stampante',
+ /*05*/'scanners' => 'scanner',
+ /*06*/'threegcards' => 'scheda 3G',
+ /*07*/'soundcards' => 'scheda audio',
+ /*08*/'webcams' => 'webcam',
+ /*09*/'bluetooth' => 'dispositivo bluetooth',
+ /*10*/'acquisitioncards' => 'scheda di acquisizione',
+ /*11*/'fingerprintreaders' => 'lettore di impronte digitali',
+ /*12*/'ethernetcards' => 'scheda ethernet',
+ /*13*/'sdcardreaders' => 'lettore di schede sd',
+ /*14*/'modems' => 'modem',
+ /*15*/'raidadapters' => 'adattatore RAID',
+ /*16*/'hostcontrollers' => 'host controller',
+ ),
+ 'es' => array(
+ /*01*/'notebooks' => 'portátil',
+ /*02*/'wifi' => 'tarjeta wifi',
+ /*03*/'videocards' => 'tarjeta de video',
+ /*04*/'printers' => 'impresora',
+ /*05*/'scanners' => 'escáner',
+ /*06*/'threegcards' => 'tarjeta 3G',
+ /*07*/'soundcards' => 'tarjeta de audio',
+ /*08*/'webcams' => 'camara web',
+ /*09*/'bluetooth' => 'dispositivo bluetooth',
+ /*10*/'acquisitioncards' => 'tarjeta de adquisición',
+ /*11*/'fingerprintreaders' => 'lector de huella digital',
+ /*12*/'ethernetcards' => 'tarjeta de ethernet',
+ /*13*/'sdcardreaders' => 'lector de tarjetas sd',
+ /*14*/'modems' => 'modem',
+ /*15*/'raidadapters' => 'adaptador RAID',
+ /*16*/'hostcontrollers' => 'host controller',
+ ),
+ 'fr' => array(
+ /*01*/'notebooks' => 'notebook',
+ /*02*/'wifi' => 'carte wifi',
+ /*03*/'videocards' => 'carte graphique',
+ /*04*/'printers' => 'imprimante',
+ /*05*/'scanners' => 'scanneur',
+ /*06*/'threegcards' => 'carte 3G',
+ /*07*/'soundcards' => 'carte son',
+ /*08*/'webcams' => 'webcam',
+ /*09*/'bluetooth' => 'périphérique bluetooth',
+ /*10*/'acquisitioncards' => 'carte d\'acquisition',
+ /*11*/'fingerprintreaders' => 'lecteur d\'empreintes digitales',
+ /*12*/'ethernetcards' => 'carte ethernet',
+ /*13*/'sdcardreaders' => 'lecteur de carte SD',
+ /*14*/'modem' => 'modem',
+ /*15*/'raidadapters' => 'Adaptateur RAID',
+ /*16*/'hostcontrollers' => 'contrôleur hôte',
+ ),
+ 'de' => array(
+ /*01*/'notebooks' => 'notebook',
+ /*02*/'wifi' => 'wifi card',
+ /*03*/'videocards' => 'video card',
+ /*04*/'printers' => 'printer',
+ /*05*/'scanners' => 'scanner',
+ /*06*/'threegcards' => '3G-card',
+ /*07*/'soundcards' => 'soundcard',
+ /*08*/'webcams' => 'webcam',
+ /*09*/'bluetooth' => 'bluetooth device',
+ /*10*/'acquisitioncards' => 'acquisition card',
+ /*11*/'fingerprintreaders' => 'fingerprint reader',
+ /*12*/'ethernetcards' => 'ethernet card',
+ /*13*/'sdcardreaders' => 'sd card reader',
+ /*14*/'modems' => 'modem',
+ /*15*/'raidadapters' => 'RAID adapter',
+ /*16*/'hostcontrollers' => 'host controller',
+ ),
+ 'gr' => array(
+ /*01*/'notebooks' => 'Υπο-φορητοί υπολογιστές',
+ /*02*/'wifi' => 'Κάρτες wifi',
+ /*03*/'videocards' => 'Κάρτες γραφικών',
+ /*04*/'printers' => 'Εκτυπωτές',
+ /*05*/'scanners' => 'Σαρωτές',
+ /*06*/'threegcards' => 'Κάρτες 3G',
+ /*07*/'soundcards' => 'Κάρτες ήχου',
+ /*08*/'webcams' => 'Διαδικτυακές κάμερες',
+ /*09*/'bluetooth' => 'Συσκευές bluetooth',
+ /*10*/'acquisitioncards' => 'Κάρτες λήψης',
+ /*11*/'fingerprintreaders' => 'Συσκευές ανάγνωσης δακτυλικών αποτυπωμάτων',
+ /*12*/'ethernetcards' => 'Κάρτες ethernet',
+ /*13*/'sdcardreaders' => 'Συσκευές ανάγνωσης καρτών sd',
+ /*14*/'modems' => 'Συσκευές modem',
+ /*15*/'raidadapters' => 'RAID adapter',
+ /*16*/'hostcontrollers' => 'host controller',
+ ),
+ 'pt' => array(
+ /*01*/'notebooks' => 'notebook',
+ /*02*/'wifi' => 'wifi',
+ /*03*/'videocards' => 'placas de vídeo',
+ /*04*/'printers' => 'impressoras',
+ /*05*/'scanners' => 'scanners',
+ /*06*/'threegcards' => 'dispositivos 3G',
+ /*07*/'soundcards' => 'placas de som',
+ /*08*/'webcams' => 'webcams',
+ /*09*/'bluetooth' => 'dispositivos bluetooth',
+ /*10*/'acquisitioncards' => 'placas de captura',
+ /*11*/'fingerprintreaders' => 'leitores de impressão digital',
+ /*12*/'ethernetcards' => 'placas de rede',
+ /*13*/'sdcardreaders' => 'leitores de cartão SD',
+ /*14*/'modems' => 'modems',
+ /*15*/'raidadapters' => 'adaptadores RAID',
+ /*16*/'hostcontrollers' => 'controlador de host',
+ ),
+ );
+
+ public static $plural = array(
+ 'en' => array(
+ /*01*/'notebooks' => 'notebooks',
+ /*02*/'wifi' => 'wifi cards',
+ /*03*/'videocards' => 'video cards',
+ /*04*/'printers' => 'printers',
+ /*05*/'scanners' => 'scanners',
+ /*06*/'threegcards' => '3G-cards',
+ /*07*/'soundcards' => 'soundcards',
+ /*08*/'webcams' => 'webcams',
+ /*09*/'bluetooth' => 'bluetooth devices',
+ /*10*/'acquisitioncards' => 'acquisition cards',
+ /*11*/'fingerprintreaders' => 'fingerprint readers',
+ /*12*/'ethernetcards' => 'ethernet cards',
+ /*13*/'sdcardreaders' => 'sd card readers',
+ /*14*/'modems' => 'modems',
+ /*15*/'raidadapters' => 'RAID adapters',
+ /*16*/'hostcontrollers' => 'host controllers',
+ ),
+ 'it' => array(
+ /*01*/'notebooks' => 'notebook',
+ /*02*/'wifi' => 'schede wifi',
+ /*03*/'videocards' => 'schede video',
+ /*04*/'printers' => 'stampanti',
+ /*05*/'scanners' => 'scanner',
+ /*06*/'threegcards' => 'schede 3G',
+ /*07*/'soundcards' => 'schede audio',
+ /*08*/'webcams' => 'webcam',
+ /*09*/'bluetooth' => 'dispositivi bluetooth',
+ /*10*/'acquisitioncards' => 'schede di acquisizione',
+ /*11*/'fingerprintreaders' => 'lettori di impronte digitali',
+ /*12*/'ethernetcards' => 'schede ethernet',
+ /*13*/'sdcardreaders' => 'lettori di schede sd',
+ /*14*/'modems' => 'modem',
+ /*15*/'raidadapters' => 'adattatori RAID',
+ /*16*/'hostcontrollers' => 'host controller',
+ ),
+ 'es' => array(
+ /*01*/'notebooks' => 'portátiles',
+ /*02*/'wifi' => 'tarjetas wifi',
+ /*03*/'videocards' => 'tarjetas de video',
+ /*04*/'printers' => 'impresoras',
+ /*05*/'scanners' => 'escáneres',
+ /*06*/'threegcards' => 'tarjetas 3G',
+ /*07*/'soundcards' => 'tarjetas de audio',
+ /*08*/'webcams' => 'cámaras web',
+ /*09*/'bluetooth' => 'dispositivos bluetooth',
+ /*10*/'acquisitioncards' => 'tarjetas de adquisición',
+ /*11*/'fingerprintreaders' => 'lectores de huella digital',
+ /*12*/'ethernetcards' => 'tarjetas de ethernet',
+ /*13*/'sdcardreaders' => 'lectores de tarjetas sd',
+ /*14*/'modems' => 'modems',
+ /*15*/'raidadapters' => 'adaptadores RAID',
+ /*16*/'hostcontrollers' => 'host controllers',
+ ),
+ 'fr' => array(
+ /*01*/'notebooks' => 'notebooks',
+ /*02*/'wifi' => 'cartes wifi',
+ /*03*/'videocards' => 'cartes graphiques',
+ /*04*/'printers' => 'imprimantes',
+ /*05*/'scanners' => 'scanneurs',
+ /*06*/'threegcards' => 'cartes 3G',
+ /*07*/'soundcards' => 'cartes son',
+ /*08*/'webcams' => 'webcams',
+ /*09*/'bluetooth' => 'périphériques bluetooth',
+ /*10*/'acquisitioncards' => 'cartes d\'acquisition',
+ /*11*/'fingerprintreaders' => 'lecteurs d\'empreintes digitales ',
+ /*12*/'ethernetcards' => 'cartes ethernet',
+ /*13*/'sdcardreaders' => 'lecteurs de cartes SD',
+ /*14*/'modems' => 'modems',
+ /*15*/'raidadapters' => 'Adaptateurs RAID',
+ /*16*/'hostcontrollers' => 'contrôleurs hôte',
+
+ ),
+ 'de' => array(
+ /*01*/'notebooks' => 'notebooks',
+ /*02*/'wifi' => 'wifi cards',
+ /*03*/'videocards' => 'video cards',
+ /*04*/'printers' => 'printers',
+ /*05*/'scanners' => 'scanners',
+ /*06*/'threegcards' => '3G-cards',
+ /*07*/'soundcards' => 'soundcards',
+ /*08*/'webcams' => 'webcams',
+ /*09*/'bluetooth' => 'bluetooth devices',
+ /*10*/'acquisitioncards' => 'acquisition cards',
+ /*11*/'fingerprintreaders' => 'fingerprint readers',
+ /*12*/'ethernetcards' => 'ethernet cards',
+ /*13*/'sdcardreaders' => 'sd card readers',
+ /*14*/'modems' => 'modems',
+ /*15*/'raidadapters' => 'RAID adapters',
+ /*16*/'hostcontrollers' => 'host controllers',
+ ),
+ 'gr' => array(
+ /*01*/'notebooks' => 'Υπο-φορητοί υπολογιστές',
+ /*02*/'wifi' => 'Κάρτες wifi',
+ /*03*/'videocards' => 'Κάρτες γραφικών',
+ /*04*/'printers' => 'Εκτυπωτές',
+ /*05*/'scanners' => 'Σαρωτές',
+ /*06*/'threegcards' => 'Κάρτες 3G',
+ /*07*/'soundcards' => 'Κάρτες ήχου',
+ /*08*/'webcams' => 'Διαδικτυακές κάμερες',
+ /*09*/'bluetooth' => 'Συσκευές bluetooth',
+ /*10*/'acquisitioncards' => 'Κάρτες λήψης',
+ /*11*/'fingerprintreaders' => 'Συσκευές ανάγνωσης δακτυλικών αποτυπωμάτων',
+ /*12*/'ethernetcards' => 'Κάρτες ethernet',
+ /*13*/'sdcardreaders' => 'Συσκευές ανάγνωσης καρτών sd',
+ /*14*/'modems' => 'Συσκευές modem',
+ /*15*/'raidadapters' => 'RAID adapters',
+ /*16*/'hostcontrollers' => 'host controllers',
+ ),
+ 'pt' => array(
+ /*01*/'notebooks' => 'notebooks',
+ /*02*/'wifi' => 'wifi',
+ /*03*/'videocards' => 'placas de vídeo',
+ /*04*/'printers' => 'impressoras',
+ /*05*/'scanners' => 'scanners',
+ /*06*/'threegcards' => 'dispositivos 3G',
+ /*07*/'soundcards' => 'placas de som',
+ /*08*/'webcams' => 'webcams',
+ /*09*/'bluetooth' => 'dispositivos bluetooth',
+ /*10*/'acquisitioncards' => 'placas de captura',
+ /*11*/'fingerprintreaders' => 'leitores de impressão digital',
+ /*12*/'ethernetcards' => 'placas de rede',
+ /*13*/'sdcardreaders' => 'leitores de cartão SD',
+ /*14*/'modems' => 'modems',
+ /*15*/'raidadapters' => 'adaptadores RAID',
+ /*16*/'hostcontrollers' => 'controladores de host',
+ ),
+ );
+
+ public static function sanitize($lang = 'en')
+ {
+ return (in_array($lang,self::$allowed)) ? sanitizeAll($lang) : 'en';
+ }
+}
+
+class Go
+{
+
+ public static function toHardwareType($type)
+ {
+ return Url::getRoot().Hardware::getControllerFromType($type)."/catalogue/".Lang::$current;
+ }
+
+ public static function toHardwareInsert($type)
+ {
+ return Url::getRoot().Hardware::getControllerFromType($type)."/insert/".Lang::$current;
+ }
+
+ //go to the page of one device from the id of that device
+ public static function toHardwarePage($idHard = 0)
+ {
+ $clean['idHard'] = (int)$idHard;
+ $urls = getUrlsFromIdHard($clean['idHard']);
+ return $urls['urlView'];
+ }
+
+}
+
+class MyStrings
+{
+
+ public static $view = array(
+
+ );
+
+ //type => controller
+ public static $reverse = array(
+ 'notebook' => 'notebooks',
+ 'wifi' => 'wifi',
+ 'videocard' => 'videocards',
+ 'printer' => 'printers',
+ 'scanner' => 'scanners',
+ '3G-card' => 'threegcards',
+ 'soundcard' => 'soundcards',
+ 'webcam' => 'webcams',
+ 'bluetooth' => 'bluetooth',
+ 'acquisition-card' => 'acquisitioncards',
+ 'fingerprint-reader' => 'fingerprintreaders',
+ 'ethernet-card' => 'ethernetcards',
+ 'sd-card-reader' => 'sdcardreaders',
+ 'modem' => 'modems',
+ );
+
+ public static function getTypes()
+ {
+ return implode(',',array_keys(self::$reverse));
+ }
+
+}
diff --git a/Application/Include/license.php b/Application/Include/license.php
new file mode 100644
index 0000000..08a6a2c
--- /dev/null
+++ b/Application/Include/license.php
@@ -0,0 +1,93 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class License
+{
+
+ //license notice that does appear at the bottom of each hardware and wiki page
+ public static $bottom = array(
+ 'en' => "The contents of this page are in the Public Domain. (see the <a href='http://creativecommons.org/publicdomain/zero/1.0/'>CC0 page</a> for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text for any purpose, commercial or non-commercial, and by any means.",
+ 'it' => "I contenuti di questa pagina sono di Pubblico Dominio. (leggi la <a href='http://creativecommons.org/publicdomain/zero/1.0/deed.it'>pagina CC0</a> per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere, o distribuire tale contenuto per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.",
+ 'es' => "El contenido de esta página está en Dominio Público. (vea la <a href='http://creativecommons.org/publicdomain/zero/1.0/deed.es_ES'>página CC0</a> para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto para cualquier propósito, comercial o no comercial, y por cualquier medio.",
+ 'fr' => "Le contenu de cette page est dans le Domaine Public (voir la <a href='http://creativecommons.org/publicdomain/zero/1.0/deed.fr'>page CC0</a> pour plus d'informations). Quiquonque est libre de copier, modifier, publier, utiliser, vendre ou distribuer le texte , quelques soit le but et le moyen.",
+ );
+
+ //license notice that does appear inside the xml download page
+ public static $insideXml = array(
+ 'en' => "The contents of this page are in the Public Domain. (see the CC0 page at http://creativecommons.org/publicdomain/zero/1.0/ for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text for any purpose, commercial or non-commercial, and by any means.",
+ 'it' => "I contenuti di questa pagina sono di Pubblico Dominio. (leggi la pagina CC0 all'indirizzo http://creativecommons.org/publicdomain/zero/1.0/deed.it per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere, o distribuire tale contenuto per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.",
+ 'es' => "El contenido de esta página está en Dominio Público. (vea la página CC0 http://creativecommons.org/publicdomain/zero/1.0/deed.es_ES para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto para cualquier propósito, comercial o no comercial, y por cualquier medio.",
+ 'fr' => "Le contenu de cette page est dans le Domaine Public (voir la page CC0 http://creativecommons.org/publicdomain/zero/1.0/deed.fr pour plus d'informations). Quiquonque est libre de copier, modifier, publier, utiliser, vendre ou distribuer le texte , quelques soit le but et le moyen.",
+ );
+
+ //license notice that does appear before the submission of each hardware and wiki page
+ public static $submissionNotice = array(
+ 'en' => "Any text submitted by you will be put in the Public Domain (see the <a href='http://creativecommons.org/publicdomain/zero/1.0/'>CC0 page</a> for detailed information).",
+ 'it' => "Ogni testo da te inviato diventerà di Pubblico Dominio. (leggi la <a href='http://creativecommons.org/publicdomain/zero/1.0/deed.it'>pagina CC0</a> per informazioni dettagliate).",
+ 'es' => "Cualquier texto agregado por usted será colocado en el Dominio Público (vea la <a href='http://creativecommons.org/publicdomain/zero/1.0/deed.es_ES'>página CC0</a> para información detallada).",
+ 'fr' => "Chaque texte que vous soumettrez seront placés dans le Domaine Public (voir la <a href='http://creativecommons.org/publicdomain/zero/1.0/deed.fr'>page CC0</a> pour plus d'informations)"
+ );
+
+ //license notice that does appear before the submission of each hardware page from the h-node client (h-client)
+ public static $submissionNoticeClient = array(
+ 'en' => "Any text submitted by you will be put in the Public Domain (see the CC0 page at \nhttp://creativecommons.org/publicdomain/zero/1.0/ for detailed information).",
+ 'it' => "Ogni testo da te inviato diventerà di Pubblico Dominio. (leggi la pagina CC0 all'indirizzo \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.it per informazioni dettagliate).",
+ 'es' => "Cualquier texto agregado por usted será colocado en el Dominio Público (vea la página CC0 \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.es_ES para información detallada).",
+ 'fr' => "Chaque texte que vous soumettrez seront placés dans le Domaine Public (voir la page CC0 \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.fr pour plus d'informations)"
+ );
+
+ public static function getNotice($noticeArray)
+ {
+ if (array_key_exists(Lang::$current,$noticeArray))
+ {
+ return $noticeArray[Lang::$current];
+ }
+ else
+ {
+ return $noticeArray['en'];
+ }
+ }
+
+ //get the bottom notice
+ public static function getBottom()
+ {
+ return self::getNotice(self::$bottom);
+ }
+
+ //get the submission notice
+ public static function getSubmissionNotice()
+ {
+ return self::getNotice(self::$submissionNotice);
+ }
+
+ //get the license notice insidethe xml download page
+ public static function getInsideXml()
+ {
+ return self::getNotice(self::$insideXml);
+ }
+
+ //get the notice for the client
+ public static function getClientNotice()
+ {
+ return self::getNotice(self::$submissionNoticeClient);
+ }
+} \ No newline at end of file
diff --git a/Application/Include/myFunctions.php b/Application/Include/myFunctions.php
new file mode 100644
index 0000000..b121424
--- /dev/null
+++ b/Application/Include/myFunctions.php
@@ -0,0 +1,542 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+function encodeUrl($url)
+{
+ $url = str_replace(' ','-',$url);
+ $url = str_replace('.','-',$url);
+ $url = str_replace(',','-',$url);
+ $url = str_replace('[','-',$url);
+ $url = str_replace(']','-',$url);
+ $url = str_replace('(','-',$url);
+ $url = str_replace(')','-',$url);
+ $url = str_replace('/','-',$url);
+ $url = str_replace('&#039;','-',$url);
+ $url = str_replace('@','-at-',$url);
+ $url = str_replace('?','-',$url);
+
+// $temp = null;
+// for ($i=0;$i<strlen($url); $i++)
+// {
+// if (strcmp($url[$i],' ') === 0)
+// {
+// $temp .= '-';
+// }
+// else
+// {
+// if (preg_match('/^[a-zA-Z0-9\-]$/',$url[$i])) $temp .= $url[$i];
+// }
+// }
+
+// $url = urlencode($url);
+// $url = urlencode($url);
+ return $url;
+}
+
+function titleForRedirect($title)
+{
+ return html_entity_decode(encodeUrl($title),ENT_QUOTES,DEFAULT_CHARSET);
+}
+
+// function encodeUrl($url)
+// {
+// $url = str_replace(' ','-',$url);
+// $url = str_replace('[','-',$url);
+// $url = str_replace(']','-',$url);
+// $url = str_replace('(','-',$url);
+// $url = str_replace(')','-',$url);
+// $url = str_replace('/','-',$url);
+// $url = str_replace('@','-at-',$url);
+// $url = urlencode($url);
+// // $url = html_entity_decode($url, ENT_QUOTES);
+// // $url = xml_encode($url);
+// return $url;
+// }
+
+
+function smartDate($uglyDate = null, $lang = 'en')
+{
+ if (strcmp($lang,'en'))
+ {
+ return date('H:i, j F Y',strtotime($uglyDate));
+ }
+ else
+ {
+ return date('H:i, j ',strtotime($uglyDate)).gtext(date('F',strtotime($uglyDate))).date(' Y',strtotime($uglyDate));
+ }
+}
+
+function pubDateFormat($uglyDate = null)
+{
+ return date('r',strtotime($uglyDate));
+}
+
+function sanitizeString($string)
+{
+ $string = preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$string) ? sanitizeAll($string) : 'undef';
+ return $string;
+}
+
+function sanitizeAlphanum($string)
+{
+ $string = ctype_alnum($string) ? sanitizeAll($string) : 'undef';
+ return $string;
+}
+
+function sanitizePciid($string)
+{
+ $string = preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$string) ? sanitizeAll($string) : '0';
+ return $string;
+}
+
+function getOrderByClause($string)
+{
+ switch ($string)
+ {
+ case 'last-inserted':
+ $orderBy = 'hardware.id_hard desc';
+ break;
+ case 'alphabetically':
+ $orderBy = 'model';
+ break;
+ case 'alphabetically-desc':
+ $orderBy = 'model desc';
+ break;
+ case 'compatibility':
+ $orderBy = 'compatibility, hardware.id_hard desc';
+ break;
+ case 'compatibility-desc':
+ $orderBy = 'compatibility desc, hardware.id_hard desc';
+ break;
+ case 'wifi-works':
+ $orderBy = 'wifi_works desc, hardware.id_hard desc';
+ break;
+ case 'video-card-works':
+ $orderBy = 'video_card_works desc, hardware.id_hard desc';
+ break;
+ case 'sound-card-works':
+ $orderBy = 'sound_card_works desc, hardware.id_hard desc';
+ break;
+ case 'webcam-works':
+ $orderBy = 'webcam_works desc, hardware.id_hard desc';
+ break;
+ case 'bluetooth-works':
+ $orderBy = 'bluetooth_works desc, hardware.id_hard desc';
+ break;
+ case 'fingerprint-works':
+ $orderBy = 'fingerprint_works desc, hardware.id_hard desc';
+ break;
+ case 'ethernet-works':
+ $orderBy = 'ethernet_card_works desc, hardware.id_hard desc';
+ break;
+ case 'sdcard-works':
+ $orderBy = 'sd_card_works desc, hardware.id_hard desc';
+ break;
+ case 'undef':
+ $orderBy = 'compatibility, hardware.id_hard desc';
+ break;
+ default:
+ $orderBy = 'compatibility, hardware.id_hard desc';
+ }
+ return $orderBy;
+}
+
+//remove empty elements
+function removeEmptyStrings($oArray)
+{
+ $nArray = array();
+ foreach ($oArray as $oValue)
+ {
+ if (strcmp($oValue,'') !== 0)
+ {
+ $nArray[] = $oValue;
+ }
+ }
+ return $nArray;
+}
+
+function diff($old, $new)
+{
+ $maxlen = 0;
+ foreach($old as $oindex => $ovalue)
+ {
+ $nkeys = array_keys($new, $ovalue);
+// echo memory_get_peak_usage(true)."<br />";
+ foreach($nkeys as $nindex)
+ {
+ $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
+ $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
+ if($matrix[$oindex][$nindex] > $maxlen)
+ {
+ $maxlen = $matrix[$oindex][$nindex];
+ $omax = $oindex + 1 - $maxlen;
+ $nmax = $nindex + 1 - $maxlen;
+ }
+ }
+ }
+ if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new));
+ return array_merge(
+ diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
+ array_slice($new, $nmax, $maxlen),
+ diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
+}
+
+function htmlDiff($old, $new)
+{
+ $old = str_replace("\r\n"," \r\n ",$old);
+ $new = str_replace("\r\n"," \r\n ",$new);
+
+ $ret = null;
+ $diff = diff(removeEmptyStrings(explode(' ', $old)),removeEmptyStrings(explode(' ', $new)));
+ foreach($diff as $k)
+ {
+ if(is_array($k))
+ $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
+ (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
+ else $ret .= $k . ' ';
+ }
+ return $ret;
+}
+
+
+function applyBreaks($values,$fields)
+{
+ $fieldsArray = explode(',',$fields);
+
+ foreach ($fieldsArray as $field)
+ {
+ if (array_key_exists($field,$values))
+ {
+ $values[$field] = nl2br($values[$field]);
+ }
+ }
+ return $values;
+}
+
+
+function getLinkToUser($user)
+{
+ if (strstr($user,'__'))
+ {
+ return str_replace('__',null,$user);
+ }
+ else
+ {
+ return "<a href='".Url::getRoot()."meet/user/".Lang::$current."/$user'>$user</a>";
+ }
+}
+
+function getUserName($id_user = 0)
+{
+ $clean['id_user'] = (int)$id_user;
+ $u = new UsersModel();
+ return $u->getUser($clean['id_user']);
+}
+
+function getMotivation($row,$controller)
+{
+ if (strcmp($row['deletion']['object'],'duplication') === 0)
+ {
+ $clean['id_hard'] = (int)$row['deletion']['id_duplicate'];
+ $hardware = new HardwareModel();
+ $name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
+ return "<b>duplication</b> of the model having id <b><a href='".Url::getRoot().$controller."/view/".Lang::$current."/".$clean['id_hard']."/".$name."'>".$clean['id_hard']."</a></b>";
+ }
+ else
+ {
+ return "<b>".$row['deletion']['object']."</b>";
+ }
+}
+
+//get the text in the right language
+function gtext($string)
+{
+ if (isset(Lang::$i18n[Lang::$current][$string]))
+ {
+ return Lang::$i18n[Lang::$current][$string];
+ }
+ return $string;
+}
+
+function singular($string)
+{
+ if (isset(Lang::$singular[Lang::$current][$string]))
+ {
+ return Lang::$singular[Lang::$current][$string];
+ }
+ return $string;
+}
+
+function plural($string)
+{
+ if (isset(Lang::$plural[Lang::$current][$string]))
+ {
+ return Lang::$plural[Lang::$current][$string];
+ }
+ return $string;
+}
+
+//get the hardware info from the talk id
+function getHardwareInfoFromTalkId($id = 0)
+{
+ $clean['id'] = (int)$id;
+ $talk = new TalkModel();
+ $res = $talk->select('hardware.type,hardware.id_hard')->from('hardware inner join talk')->using('id_hard')->where(array('id_talk'=>$clean['id']))->send();
+ return count($res) > 0 ? $res[0]['hardware'] : null;
+}
+
+//get hardware info from id
+function getHardwareInfoFromId($id = 0)
+{
+ $clean['id'] = (int)$id;
+ $hw = new HardwareModel();
+ $res = $hw->select()->where(array('id_hard'=>$clean['id']))->send();
+ $controller = 'home/index/en';
+ $model = '';
+ if (count($res) > 0)
+ {
+ $controller = Hardware::getControllerFromType($res[0]['hardware']['type']);
+ $controller = strcmp($controller,'') !== 0 ? $controller : 'home/index/en';
+ $model = $res[0]['hardware']['model'];
+ }
+
+ return array('controller'=>$controller,'model'=>$model);
+}
+
+//get the wiki page info from the talk id
+function getWikiPageInfoFromTalkId($id = 0)
+{
+ $clean['id'] = (int)$id;
+ $talk = new WikitalkModel();
+ $res = $talk->select('wiki.id_wiki')->from('wiki inner join wiki_talk')->using('id_wiki')->where(array('id_talk'=>$clean['id']))->send();
+ return count($res) > 0 ? $res[0]['wiki']['id_wiki'] : '';
+}
+
+//get the issue info from the message id
+function getIssueNumberFromMessageId($id = 0)
+{
+ $clean['id'] = (int)$id;
+ $mess = new MessagesModel();
+ $res = $mess->select('issues.id_issue')->from('issues inner join messages')->using('id_issue')->where(array('id_mes'=>$clean['id']))->toList('issues.id_issue')->send();
+ return count($res) > 0 ? $res[0] : '';
+}
+
+//get thw wiki name from the id
+function getWikiNameFromId($id = 0)
+{
+ $clean['id'] = (int)$id;
+ $wiki = new WikiModel();
+ $name = $wiki->getTheModelName($clean['id']);
+ return $name;
+}
+
+//return the URL to the moderated object page
+function goToModeratedItem( $row = array() )
+{
+ $url = null;
+
+ switch ($row['type'])
+ {
+ case 'message':
+ $url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id'];
+ break;
+ case 'talk':
+ $hardInfo = getHardwareInfoFromTalkId($row['id']);
+ if (isset($hardInfo))
+ {
+ $controller = Hardware::$typeToController[$hardInfo['type']];
+ $url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id'];
+ }
+ else
+ {
+ $url = 'last/modactions/'.Lang::$current;
+ }
+ break;
+ case 'user':
+ $url = 'meet/user/'.Lang::$current.'/'.getUserName($row['id']);
+ break;
+ case 'issue':
+ $url = 'issues/view/'.Lang::$current.'/'.$row['id'];
+ break;
+ case 'issue_del':
+ $url = 'issues/view/'.Lang::$current.'/'.$row['id'];
+ break;
+ case 'wiki_talk':
+ $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$row['id'];
+ break;
+ case 'page':
+ $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id']));
+ break;
+ case 'page_del':
+ $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id']));
+ break;
+ case 'device':
+ $hardInfo = getHardwareInfoFromId($row['id']);
+ $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']);
+ break;
+ case 'device_app':
+ $hardInfo = getHardwareInfoFromId($row['id']);
+ $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']);
+ break;
+ case 'device_cl':
+ $hardInfo = getHardwareInfoFromId($row['id']);
+ $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']);
+ break;
+ case 'message_ins':
+ $url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id'];
+ break;
+ case 'wiki_talk_ins':
+ $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$row['id'];
+ break;
+ case 'issue_ins':
+ $url = 'issues/view/'.Lang::$current.'/'.$row['id'];
+ break;
+ case 'talk_ins':
+ $hardInfo = getHardwareInfoFromTalkId($row['id']);
+ if (isset($hardInfo))
+ {
+ $controller = Hardware::$typeToController[$hardInfo['type']];
+ $url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id'];
+ }
+ else
+ {
+ $url = 'last/modactions/'.Lang::$current;
+ }
+ break;
+ case 'hardware':
+ $hardInfo = getHardwareInfoFromId($row['id']);
+ $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']);
+ break;
+ case 'wiki':
+ $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id']));
+ break;
+ }
+ return Url::getRoot($url);
+}
+
+function getUrlsFromIdHard($id_hard)
+{
+ $clean['id_hard'] = (int)$id_hard;
+
+ $urlView = $urlTalk = Url::getRoot();
+
+ $deviceName = null;
+
+ $hard = new HardwareModel();
+ $res = $hard->select('type,model')->where(array('id_hard'=>$clean['id_hard']))->send();
+ if (count($res) > 0)
+ {
+ $urlView = Url::getRoot().Hardware::$typeToController[$res[0]['hardware']['type']]."/view/".Lang::$current."/".$clean['id_hard']."/".encodeUrl($res[0]['hardware']['model']);
+
+ $urlTalk = Url::getRoot().Hardware::$typeToController[$res[0]['hardware']['type']]."/talk/".Lang::$current."/".$clean['id_hard'];
+
+ $deviceName = $res[0]['hardware']['model'];
+ }
+
+ return array('urlView'=>$urlView,'urlTalk'=>$urlTalk,'modelName'=>$deviceName);
+
+}
+
+function getDiffArray($associativeArray, $oldArray, $newArray)
+{
+ $diffArray = array();
+ foreach ($associativeArray as $field => $label)
+ {
+ if (array_key_exists($field,$oldArray) and array_key_exists($field,$newArray))
+ {
+ $diffArray[$label] = htmlDiff($oldArray[$field], $newArray[$field]);
+ }
+ }
+ return $diffArray;
+}
+
+//get the translation function
+function getTranslationFunction($fieldName)
+{
+ $fieldsFunc = array(
+ "vendor" => "betterVendor",
+ "interface" => "translate_and_gtext",
+ "subtype" => "translate_and_gtext",
+ );
+
+ if (array_key_exists($fieldName,$fieldsFunc))
+ {
+ return $fieldsFunc[$fieldName];
+ }
+
+ return "gtext";
+}
+
+//Map db type names to display names
+function displayName($name) {
+ switch ($name) {
+ case '3G-card':
+ $name = '3G cards';
+ break;
+ case 'bluetooth':
+ $name = 'Bluetooth';
+ break;
+ case 'ethernet-card':
+ $name = 'Ethernet cards';
+ break;
+ case 'fingerprint-reader':
+ $name = 'Fingerprint readers';
+ break;
+ case 'host-controller':
+ $name = 'Host Controllers';
+ break;
+ case 'modem':
+ $name = 'Modems';
+ break;
+ case 'notebook':
+ $name = 'Notebooks';
+ break;
+ case 'printer':
+ $name = 'Printers';
+ break;
+ case 'RAID-adapter';
+ $name = 'RAID adapters';
+ break;
+ case 'scanner':
+ $name = 'Scanners';
+ break;
+ case 'sd-card-reader':
+ $name = 'SD card readers';
+ break;
+ case 'soundcard':
+ $name = 'Sound cards';
+ break;
+ case 'videocard':
+ $name = 'Video cards';
+ break;
+ case 'webcam':
+ $name = 'Webcams';
+ break;
+ case 'wifi':
+ $name = 'Wifi cards';
+ break;
+ case 'acquisition-card':
+ $name = 'Acquisition cards';
+ break;
+ }
+ return $name;
+}
diff --git a/Application/Include/params.php b/Application/Include/params.php
new file mode 100644
index 0000000..5ab28df
--- /dev/null
+++ b/Application/Include/params.php
@@ -0,0 +1,228 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Website
+{
+ static public $generalMail = "";
+
+ static public $fromEmail = "noreply@h-node.org";
+
+ static public $generalName = "h-node.org";
+
+ static public $projectName = "h-node";
+
+ static public $mailServer = "";
+
+ static public $mailPassword = "";
+
+ static public $allowAnonymousSubmission = "yes";
+
+ static public $statusnetGroupText = "";
+
+ static public $useSMTP = true;
+
+ //use a xml file the modules of the website?
+ static public $useXmlConfigFile = true;
+
+ //folder of the xml configuration file
+ //the constant ROOT contains the path to the root folder of your installaton of h-source
+ static public $xmlConfigFileFolder = ROOT;
+}
+
+class Account
+{
+
+ static public $confirmTime = 3600;
+
+ public static function getTransport()
+ {
+ if (Website::$useSMTP)
+ {
+ return Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword);
+ }
+ else
+ {
+ return Swift_MailTransport::newInstance();
+ }
+ }
+
+ static public function confirm($username,$e_mail,$id_user,$token)
+ {
+ require_once (ROOT.'/External/swiftmailer/lib/swift_required.php');
+
+ $clean['username'] = sanitizeAll($username);
+ $clean['id_user'] = (int)$id_user;
+ $clean['token'] = sanitizeAll($token);
+
+ $siteName = Website::$generalName;
+ $siteMail = Website::$generalMail;
+
+ $mess = gtext("Hello,\n\nyou have registered an account at")." $siteName ".gtext("with the following data:\nusername: ").$clean['username']."\n\n".gtext("in order to confirm the registration of the new account please follow the link below")."\n".Url::getRoot()."users/confirm/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\n".gtext("If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database")."\n\n".gtext("If you received this e-mail for error, please simply disregard this message");
+
+ $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] '.gtext("account registration"))->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess);
+
+ //Create the Transport
+ $transport = self::getTransport();
+
+ //Create the Mailer using your created Transport
+ $mailer = Swift_Mailer::newInstance($transport);
+
+ //Send the message
+ $result = $mailer->send($message);
+
+ if ($result)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+
+ static public function sendnew($username,$e_mail,$id_user,$token)
+ {
+ require_once (ROOT.'/External/swiftmailer/lib/swift_required.php');
+
+ $clean['username'] = sanitizeAll($username);
+ $clean['id_user'] = (int)$id_user;
+ $clean['token'] = sanitizeAll($token);
+
+ $siteName = Website::$generalName;
+ $siteMail = Website::$generalMail;
+
+ $mess = "Hello,\n\nyou have requested a new password for your account at $siteName.\nYour username is:\n".$clean['username']."\n\nin order to obtain a new password for your account follow the link below\n".Url::getRoot()."users/change/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to change the password then disregard this mail\n";
+
+ $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] request a new password')->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess);
+
+ //Create the Transport
+ $transport = self::getTransport();
+
+ //Create the Mailer using your created Transport
+ $mailer = Swift_Mailer::newInstance($transport);
+
+ //Send the message
+ $result = $mailer->send($message);
+
+ if ($result)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+
+ static public function sendpassword($username,$e_mail,$password)
+ {
+ require_once (ROOT.'/External/swiftmailer/lib/swift_required.php');
+
+ $clean['username'] = sanitizeAll($username);
+ $clean['password'] = sanitizeAll($password);
+
+ $siteName = Website::$generalName;
+ $siteMail = Website::$generalMail;
+
+ $mess = "Hello,\n\nyou have requested a new password for your account to $siteName.\nYour username is:\n".$clean['username']."\n\nYour new password is:\n".$clean['password']."\n";
+
+ $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] get your new password ')->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess);
+
+ //Create the Transport
+ $transport = self::getTransport();
+
+ //Create the Mailer using your created Transport
+ $mailer = Swift_Mailer::newInstance($transport);
+
+ //Send the message
+ $result = $mailer->send($message);
+
+ if ($result)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+
+ static public function sendTalkNotice($who,$e_mails,$id_hard)
+ {
+ require_once (ROOT.'/External/swiftmailer/lib/swift_required.php');
+
+ $who = sanitizeAll($who);
+ $id_hard = (int)$id_hard;
+
+ $siteName = Website::$generalName;
+ $siteMail = Website::$generalMail;
+
+ $urls = getUrlsFromIdHard($id_hard);
+
+ $mess = "$who has added a message to the talk page of a device you have contributed to maintain at $siteName\n\nThe whole conversation is here:\n\n".$urls['urlTalk']."\n\nThe device page is here:\n\n".$urls['urlView']."\n\nBest regards\nthe ".Website::$projectName." team\n\nP.S: you can disable the mail notifications in the profile page of your control panel";
+
+ $message = Swift_Message::newInstance()->setSubject("[".Website::$projectName."] $who sent a notice to your attention")->setFrom(array(Website::$fromEmail => $siteName))->setTo($e_mails)->setBody($mess);
+
+ //Create the Transport
+ $transport = self::getTransport();
+
+ //Create the Mailer using your created Transport
+ $mailer = Swift_Mailer::newInstance($transport);
+
+ //Send the message
+ $result = $mailer->batchSend($message);
+
+ }
+
+ static public function sendWikiTalkNotice($who,$e_mails,$id_wiki)
+ {
+ require_once (ROOT.'/External/swiftmailer/lib/swift_required.php');
+
+ $who = sanitizeAll($who);
+ $id_wiki = (int)$id_wiki;
+
+ $siteName = Website::$generalName;
+ $siteMail = Website::$generalMail;
+
+ $wiki = new WikiModel();
+ $pageUrl = $wiki->toWikiPage($id_wiki);
+ $domainName = rtrim(Url::getRoot(),"/");
+ $talkUrl = $domainName."/wiki/talk/".Lang::$current."/$id_wiki";
+
+ $mess = "$who has added a message to the talk page of a wiki page you have contributed to maintain at $siteName\n\nThe whole conversation is here:\n\n".$talkUrl."\n\nThe wiki page is here:\n\n".$pageUrl."\n\nBest regards\nthe ".Website::$projectName." team\n\nP.S: you can disable the mail notifications in the profile page of your control panel";
+
+ $message = Swift_Message::newInstance()->setSubject("[".Website::$projectName."] $who sent a notice to your attention")->setFrom(array(Website::$fromEmail => $siteName))->setTo($e_mails)->setBody($mess);
+
+ //Create the Transport
+ $transport = self::getTransport();
+
+ //Create the Mailer using your created Transport
+ $mailer = Swift_Mailer::newInstance($transport);
+
+ //Send the message
+ $result = $mailer->batchSend($message);
+
+ }
+}
diff --git a/Application/Include/vendorTranslations.php b/Application/Include/vendorTranslations.php
new file mode 100644
index 0000000..bb86b76
--- /dev/null
+++ b/Application/Include/vendorTranslations.php
@@ -0,0 +1,4247 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//rewrite the vendor name
+function betterVendor($string)
+{
+ if ($string === 'undef')
+ {
+ return gtext($string);
+ }
+
+ $vendors = new VendorsModel();
+
+ $exceptions = array(
+ "One-Laptop-per-Child-Non-Profit" => "One Laptop per Child (Non-Profit)",
+ "ZaReason-Inc" => "ZaReason, Inc",
+ "Blue-Light" => "Blue Light",
+ "Openpandora-Ltd" => "Openpandora Ltd.",
+ "Packard-Bell" => "Packard Bell",
+ );
+
+ return (array_key_exists($string,$exceptions)) ? $exceptions[$string] : $vendors->getFullName($string);
+
+// $names = array(
+// "One-Laptop-per-Child-Non-Profit" => "One Laptop per Child (Non-Profit)",
+// "AT-T" => "AT&T",
+// "Franklin-Wireless-Corporation" => "Franklin Wireless Corporation",
+// "Novatel-Wireless" => "Novatel Wireless",
+// "Sierra-Wireless" => "Sierra Wireless",
+// "ALi-Corporation" => "ALi Corporation",
+// "Advanced-Micro-Devices" => "Advanced Micro Devices (AMD)",
+// "Analog-Devices" => "Analog Devices",
+// "ATI-Technologies-Inc" => "ATI Technologies Inc",
+// "Aureal-Semiconductor" => "Aureal Semiconductor",
+// "Avance-Logic-Inc" => "Avance Logic Inc (ALI)",
+// "Aztech-System-Ltd" => "Aztech System Ltd",
+// "Brooktree-Corporation" => "Brooktree Corporation",
+// "C-Media-Electronics-Inc" => "C-Media Electronics Inc",
+// "Cirrus-Logic" => "Cirrus Logic",
+// "Creative-Labs" => "Creative Labs",
+// "Ensoniq" => "Ensoniq",
+// "ESS-Technology" => "ESS Technology",
+// "ForteMedia-Inc" => "ForteMedia Inc",
+// "Intel-Corporation" => "Intel Corporation",
+// "Motorola" => "Motorola",
+// "National-Semiconductor-Corporation" => "National Semiconductor Corporation",
+// "Neomagic-Corp" => "Neomagic Corp",
+// "nVidia-Corporation" => "nVidia Corporation",
+// "RME" => "RME",
+// "S3 Inc" => "S3-Inc",
+// "Silicon-Integrated-Systems" => "Silicon Integrated Systems (SiS)",
+// "Trident-Microsystems" => "Trident Microsystems",
+// "VIA-Technologies-Inc" => "VIA Technologies Inc",
+// "Xilinx-Corporation" => "Xilinx Corporation",
+// "Yamaha-Corporation" => "Yamaha Corporation",
+// "Aiptek-Inc" => "Aiptek Inc",
+// "Arkmicro-Technologies-Inc" => "Arkmicro Technologies Inc",
+// "Askey-Computer-Corporation" => "Askey Computer Corporation",
+// "Chicony-Electronics-CO" => "Chicony Electronics CO",
+// "Conexant-Systems-Inc" => "Conexant Systems, Inc",
+// "Creative-Technology-Ltd" => "Creative Technology, Ltd",
+// "eMPIA-Technology-Inc" => "eMPIA Technology, Inc",
+// "Genesys-Logic-Inc" => "Genesys Logic, Inc",
+// "Hama-Trading-Co" => "Hama Trading Co",
+// "Hewlett-Packard" => "Hewlett Packard",
+// "IMC-Networks" => "IMC Networks",
+// "iPassion-Technology-Inc" => "iPassion Technology Inc",
+// "KYE-Systems-Corp" => "KYE Systems Corp",
+// "LG-Electronics" => "LG Electronics",
+// "OmniVision-Technologies-Inc" => "OmniVision Technologies, Inc",
+// "PixArt-Imaging-Inc" => "PixArt Imaging Inc",
+// "Primax-Electronics-Ltd" => "Primax Electronics Ltd",
+// "Quanta-Computer-Inc" => "Quanta Computer Inc.",
+// "Ricoh-Company-Ltd" => "Ricoh Company, Ltd",
+// "Sony-Corporation" => "Sony Corporation",
+// "Syntek-Semiconductor-Ltd" => "Syntek Semiconductor Ltd",
+// "Sunplus-Technology-Co" => "Sunplus Technology Co",
+// "Tekom-Technologies-Inc" => "Tekom Technologies, Inc",
+// "Trust-International" => "Trust International",
+// "ViewQuest-Technologies-Inc" => "ViewQuest Technologies, Inc",
+// "Vista-Imaging-Inc" => "Vista Imaging, Inc",
+// "Z-Star-Microelectronics-Corporation" => "Z-Star Microelectronics Corporation",
+// "Micro-Star-International" => "Micro Star International",
+// "VIA-Technologies-Inc" => "VIA Technologies, Inc",
+// "ALFA-NETWORK-Inc" => "ALFA NETWORK Inc",
+// "Amigo-Technology-Inc" => "Amigo Technology Inc",
+// "amit-Inc" => "amit Inc",
+// "Atlantis_S-p-A" => "Atlantis S.p.A.",
+// "Buffalo-Technology-Ltd" => "Buffalo Technology, Ltd",
+// "Compex-Systems-Pte-Ltd" => "Compex Systems Pte Ltd",
+// "Encore-Electronics-Inc" => "Encore Electronics Inc",
+// "JAHT-Technologies-Corp" => "JAHT Technologies Corp",
+// "Micronet-Communications-Inc" => "Micronet Communications, Inc",
+// "Minitar-Corporation" => "Minitar Corporation",
+// "OvisLink-Technologies-Corp" => "OvisLink Technologies Corp",
+// "PRO-NETS_Technology_Corp" => "PRO-NETS Technology Corp",
+// "Sparklan-comunications-Inc" => "Sparklan comunications, Inc",
+// "Unex-Technology-Corp" => "Unex Technology Corp",
+// "Vimicro-Corp" => "Vimicro Corp",
+// "LOREX-Technology-Inc" => "LOREX Technology Inc",
+// "ADOMAX-technology" => "ADOMAX technology",
+// "Omega-Technology-Corp" => "Omega Technology Corp",
+// "Shenzhen-Vigor-Electronic" => "Shenzhen Vigor Electronic",
+// "Astak-Inc" => "Astak Inc",
+// "iMicro-Electronics" => "iMicro Electronics",
+// "Active-Pixel" => "Active Pixel",
+// "Microdia-Ltd" => "Microdia Ltd",
+// "Silicon-Integrated-Systems-Corp" => "Silicon Integrated Systems Corp",
+// 'Allied-Telesis-Inc' => 'Allied Telesis, Inc',
+// 'Ascend-Communications-Inc.' => 'Ascend Communications, Inc.',
+// 'PEAK-System-Technik-GmbH' => 'PEAK-System Technik GmbH',
+// 'Paradyne-corp.' => 'Paradyne corp.',
+// 'Lockheed-Martin-Marietta-Corp' => 'Lockheed Martin-Marietta Corp',
+// 'Hauppauge-computer-works-Inc.' => 'Hauppauge computer works Inc.',
+// 'Nebula-Electronics-Ltd.' => 'Nebula Electronics Ltd.',
+// 'BFG-Technologies-Inc.' => 'BFG Technologies, Inc.',
+// 'Ncipher-Corp-Ltd' => 'Ncipher Corp Ltd',
+// 'General-Dynamics' => 'General Dynamics',
+// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.',
+// 'XFX-Pine-Group-Inc' => 'XFX Pine Group Inc',
+// 'SK-Electronics-Co.-Ltd.' => 'SK-Electronics Co., Ltd.',
+// 'TTTech-AG' => 'TTTech AG',
+// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.',
+// 'SCM-Microsystems-Inc.' => 'SCM Microsystems, Inc.',
+// 'Microsoft' => 'Microsoft',
+// 'Kyocera' => 'Kyocera',
+// 'Myson-Century-Inc' => 'Myson Century, Inc',
+// 'Belkin' => 'Belkin',
+// 'Alcor-Micro-Corporation' => 'Alcor Micro Corporation',
+// 'OmniVision' => 'OmniVision',
+// 'CyberDoor' => 'CyberDoor',
+// 'Sigmatel-Inc.' => 'Sigmatel Inc.',
+// 'Dynalink' => 'Dynalink',
+// 'Hughes-Network-Systems-HNS' => 'Hughes Network Systems (HNS)',
+// 'Sapphire-Inc.' => 'Sapphire, Inc.',
+// 'Wired-Inc.' => 'Wired Inc.',
+// 'AVerMedia-Technologies-Inc.' => 'AVerMedia Technologies Inc.',
+// 'ITT-Geospatial-Systems' => 'ITT Geospatial Systems',
+// 'AuthenTec' => 'AuthenTec',
+// 'PixArt-Imaging-Inc.' => 'PixArt Imaging Inc.',
+// 'Arris' => 'Arris',
+// 'BREA-Technologies-Inc' => 'BREA Technologies Inc',
+// 'ZyDAS' => 'ZyDAS',
+// 'Rhino-Equipment-Corp.' => 'Rhino Equipment Corp.',
+// 'Brontes-Technologies' => 'Brontes Technologies',
+// 'ASCII-Corporation' => 'ASCII Corporation',
+// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH',
+// 'Compaq-Computer-Corporation' => 'Compaq Computer Corporation',
+// 'Cowon-Systems-Inc.' => 'Cowon Systems, Inc.',
+// 'HaSoTec-GmbH' => 'HaSoTec GmbH',
+// 'Acrox-Technologies-Co.-Ltd.' => 'Acrox Technologies Co., Ltd.',
+// 'Kolter-Electronic' => 'Kolter Electronic',
+// 'ATI-Technologies-Inc' => 'ATI Technologies Inc',
+// 'ULSI-Systems' => 'ULSI Systems',
+// 'VLSI-Technology-Inc' => 'VLSI Technology Inc',
+// 'Avance-Logic-Inc.-ALI' => 'Avance Logic Inc. [ALI]',
+// 'Reply-Group' => 'Reply Group',
+// 'NetFrame-Systems-Inc' => 'NetFrame Systems Inc',
+// 'Epson' => 'Epson',
+// 'Phoenix-Technologies' => 'Phoenix Technologies',
+// 'Tseng-Labs-Inc' => 'Tseng Labs Inc',
+// 'AST-Research-Inc' => 'AST Research Inc',
+// 'Weitek' => 'Weitek',
+// 'Video-Logic-Ltd.' => 'Video Logic, Ltd.',
+// 'Digital-Equipment-Corporation' => 'Digital Equipment Corporation',
+// 'Micronics-Computers-Inc' => 'Micronics Computers Inc',
+// 'Cirrus-Logic' => 'Cirrus Logic',
+// 'IBM' => 'IBM',
+// 'LSI-Logic-Corp-of-Canada' => 'LSI Logic Corp of Canada',
+// 'ICL-Personal-Systems' => 'ICL Personal Systems',
+// 'SPEA-Software-AG' => 'SPEA Software AG',
+// 'Unisys-Systems' => 'Unisys Systems',
+// 'Elitegroup-Computer-Systems' => 'Elitegroup Computer Systems',
+// 'AT-T-GIS-NCR' => 'AT&T GIS (NCR)',
+// 'Vitesse-Semiconductor' => 'Vitesse Semiconductor',
+// 'Western-Digital' => 'Western Digital',
+// 'American-Megatrends-Inc.' => 'American Megatrends Inc.',
+// 'PictureTel' => 'PictureTel',
+// 'Hitachi-Computer-Products' => 'Hitachi Computer Products',
+// 'Advanced-Micro-Devices-AMD' => 'Advanced Micro Devices [AMD]',
+// 'Trident-Microsystems' => 'Trident Microsystems',
+// 'Zenith-Data-Systems' => 'Zenith Data Systems',
+// 'Acer-Incorporated-ALI' => 'Acer Incorporated [ALI]',
+// 'Dell' => 'Dell',
+// 'Siemens-Nixdorf-IS' => 'Siemens Nixdorf IS',
+// 'LSI-Logic' => 'LSI Logic',
+// 'Matrox-Graphics-Inc.' => 'Matrox Graphics, Inc.',
+// 'Chips-and-Technologies' => 'Chips and Technologies',
+// 'Wyse-Technology-Inc.' => 'Wyse Technology Inc.',
+// 'Olivetti-Advanced-Technology' => 'Olivetti Advanced Technology',
+// 'Toshiba-America' => 'Toshiba America',
+// 'TMC-Research' => 'TMC Research',
+// 'Miro-Computer-Products-AG' => 'Miro Computer Products AG',
+// 'Compaq' => 'Compaq',
+// 'NEC-Corporation' => 'NEC Corporation',
+// 'Framatome-Connectors-USA-Inc.' => 'Framatome Connectors USA Inc.',
+// 'Comp.---Comm.-Research-Lab' => 'Comp. & Comm. Research Lab',
+// 'Future-Domain-Corp.' => 'Future Domain Corp.',
+// 'Hitachi-Micro-Systems' => 'Hitachi Micro Systems',
+// 'AMP-Inc' => 'AMP, Inc',
+// 'Seiko-Epson-Corporation' => 'Seiko Epson Corporation',
+// 'Tatung-Corp.-Of-America' => 'Tatung Corp. Of America',
+// 'Hewlett-Packard-Company' => 'Hewlett-Packard Company',
+// 'Solliday-Engineering' => 'Solliday Engineering',
+// 'Synopsys-Logic-Modeling-Group' => 'Synopsys/Logic Modeling Group',
+// 'Accelgraphics-Inc.' => 'Accelgraphics Inc.',
+// 'Computrend' => 'Computrend',
+// 'Micron' => 'Micron',
+// 'ASUSTeK-Computer-Inc.' => 'ASUSTeK Computer Inc.',
+// 'Adaptec-formerly-DPT' => 'Adaptec (formerly DPT)',
+// 'OPTi-Inc.' => 'OPTi Inc.',
+// 'IPC-Corporation-Ltd.' => 'IPC Corporation, Ltd.',
+// 'Genoa-Systems-Corp' => 'Genoa Systems Corp',
+// 'Elsa-AG' => 'Elsa AG',
+// 'Fountain-Technologies-Inc.' => 'Fountain Technologies, Inc.',
+// 'BusLogic' => 'BusLogic',
+// 'Texas-Instruments' => 'Texas Instruments',
+// 'Sony-Corporation' => 'Sony Corporation',
+// 'Oak-Technology-Inc' => 'Oak Technology, Inc',
+// 'Co-time-Computer-Ltd' => 'Co-time Computer Ltd',
+// 'Winbond-Electronics-Corp' => 'Winbond Electronics Corp',
+// 'Anigma-Inc.' => 'Anigma, Inc.',
+// '-Young-Micro-Systems' => '?Young Micro Systems',
+// 'Young-Micro-Systems' => 'Young Micro Systems',
+// 'Hitachi-Ltd' => 'Hitachi, Ltd',
+// 'Efar-Microsystems' => 'Efar Microsystems',
+// 'ICL' => 'ICL',
+// 'Promise-Technology-Inc.' => 'Promise Technology, Inc.',
+// 'Foxconn-International-Inc.' => 'Foxconn International, Inc.',
+// 'Wipro-Infotech-Limited' => 'Wipro Infotech Limited',
+// 'Number-9-Computer-Company' => 'Number 9 Computer Company',
+// 'Vtech-Computers-Ltd' => 'Vtech Computers Ltd',
+// 'Infotronic-America-Inc' => 'Infotronic America Inc',
+// 'United-Microelectronics-UMC' => 'United Microelectronics [UMC]',
+// 'I.I.T.' => 'I.I.T.',
+// 'Maspar-Computer-Corp' => 'Maspar Computer Corp',
+// 'Ocean-Office-Automation' => 'Ocean Office Automation',
+// 'Alcatel' => 'Alcatel',
+// 'Texas-Microsystems' => 'Texas Microsystems',
+// 'PicoPower-Technology' => 'PicoPower Technology',
+// 'Mitsubishi-Electric' => 'Mitsubishi Electric',
+// 'Diversified-Technology' => 'Diversified Technology',
+// 'Mylex-Corporation' => 'Mylex Corporation',
+// 'Aten-Research-Inc' => 'Aten Research Inc',
+// 'Apple-Computer-Inc.' => 'Apple Computer Inc.',
+// 'Hynix-Semiconductor' => 'Hynix Semiconductor',
+// 'Sequent-Computer-Systems' => 'Sequent Computer Systems',
+// 'DFI-Inc' => 'DFI, Inc',
+// 'City-Gate-Development-Ltd' => 'City Gate Development Ltd',
+// 'Daewoo-Telecom-Ltd' => 'Daewoo Telecom Ltd',
+// 'Mitac' => 'Mitac',
+// 'GIT-Co-Ltd' => 'GIT Co Ltd',
+// 'Yamaha-Corporation' => 'Yamaha Corporation',
+// 'NexGen-Microsystems' => 'NexGen Microsystems',
+// 'Chaintech-Computer-Co.-Ltd' => 'Chaintech Computer Co. Ltd',
+// 'QLogic-Corp.' => 'QLogic Corp.',
+// 'Cyrix-Corporation' => 'Cyrix Corporation',
+// 'I-Bus' => 'I-Bus',
+// 'NetWorth' => 'NetWorth',
+// 'Gateway-2000' => 'Gateway 2000',
+// 'LeadTek-Research-Inc.' => 'LeadTek Research Inc.',
+// 'Interphase-Corporation' => 'Interphase Corporation',
+// 'Data-Technology-Corporation' => 'Data Technology Corporation',
+// 'Contaq-Microsystems' => 'Contaq Microsystems',
+// 'Supermac-Technology' => 'Supermac Technology',
+// 'EFA-Corporation-of-America' => 'EFA Corporation of America',
+// 'Forex-Computer-Corporation' => 'Forex Computer Corporation',
+// 'Parador' => 'Parador',
+// 'Tulip-Computers-Int.B.V.' => 'Tulip Computers Int.B.V.',
+// 'J.-Bond-Computer-Systems' => 'J. Bond Computer Systems',
+// 'Cache-Computer' => 'Cache Computer',
+// 'Microcomputer-Systems-M-Son' => 'Microcomputer Systems (M) Son',
+// 'Data-General-Corporation' => 'Data General Corporation',
+// 'Oakleigh-Systems-Inc.' => 'Oakleigh Systems Inc.',
+// 'Olicom' => 'Olicom',
+// 'Systemsoft' => 'Systemsoft',
+// 'Intergraph-Corporation' => 'Intergraph Corporation',
+// 'Diamond-Multimedia-Systems' => 'Diamond Multimedia Systems',
+// 'National-Instruments' => 'National Instruments',
+// 'Alacron' => 'Alacron',
+// 'Appian-Technology' => 'Appian Technology',
+// 'Quantum-Designs-H.K.-Ltd' => 'Quantum Designs (H.K.) Ltd',
+// 'Samsung-Electronics-Co.-Ltd' => 'Samsung Electronics Co., Ltd',
+// 'Packard-Bell' => 'Packard Bell',
+// 'Gemlight-Computer-Ltd.' => 'Gemlight Computer Ltd.',
+// 'Megachips-Corporation' => 'Megachips Corporation',
+// 'Zida-Technologies-Ltd.' => 'Zida Technologies Ltd.',
+// 'Brooktree-Corporation' => 'Brooktree Corporation',
+// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.',
+// 'Meidensha-Corporation' => 'Meidensha Corporation',
+// 'Juko-Electronics-Ind.-Co.-Ltd' => 'Juko Electronics Ind. Co. Ltd',
+// 'Quantum-Corporation' => 'Quantum Corporation',
+// 'Everex-Systems-Inc' => 'Everex Systems Inc',
+// 'Globe-Manufacturing-Sales' => 'Globe Manufacturing Sales',
+// 'Smart-Link-Ltd.' => 'Smart Link Ltd.',
+// 'Informtech-Industrial-Ltd.' => 'Informtech Industrial Ltd.',
+// 'Benchmarq-Microelectronics' => 'Benchmarq Microelectronics',
+// 'Sierra-Semiconductor' => 'Sierra Semiconductor',
+// 'Silicon-Graphics-Inc.' => 'Silicon Graphics, Inc.',
+// 'ACC-Microelectronics' => 'ACC Microelectronics',
+// 'Digicom' => 'Digicom',
+// 'Honeywell-IAC' => 'Honeywell IAC',
+// 'Symphony-Labs' => 'Symphony Labs',
+// 'Cornerstone-Technology' => 'Cornerstone Technology',
+// 'Micro-Computer-Systems-Inc' => 'Micro Computer Systems Inc',
+// 'CardExpert-Technology' => 'CardExpert Technology',
+// 'Cabletron-Systems-Inc' => 'Cabletron Systems Inc',
+// 'Raytheon-Company' => 'Raytheon Company',
+// 'Databook-Inc' => 'Databook Inc',
+// 'STB-Systems-Inc' => 'STB Systems Inc',
+// 'PLX-Technology-Inc.' => 'PLX Technology, Inc.',
+// 'Madge-Networks' => 'Madge Networks',
+// '3Com-Corporation' => '3Com Corporation',
+// 'ALi-Corporation' => 'ALi Corporation',
+// 'Mitsubishi-Electric-Corp.' => 'Mitsubishi Electric Corp.',
+// 'Dapha-Electronics-Corporation' => 'Dapha Electronics Corporation',
+// 'Advanced-Logic-Research' => 'Advanced Logic Research',
+// 'Surecom-Technology' => 'Surecom Technology',
+// 'Tseng-Labs-International-Co.' => 'Tseng Labs International Co.',
+// 'Most-Inc' => 'Most Inc',
+// 'Boca-Research-Inc.' => 'Boca Research Inc.',
+// 'ICM-Co.-Ltd.' => 'ICM Co., Ltd.',
+// 'Auspex-Systems-Inc.' => 'Auspex Systems Inc.',
+// 'Samsung-Semiconductors-Inc.' => 'Samsung Semiconductors, Inc.',
+// 'Xerox-Corporation' => 'Xerox Corporation',
+// 'Rambus-Inc.' => 'Rambus Inc.',
+// 'Media-Vision' => 'Media Vision',
+// 'Neomagic-Corporation' => 'Neomagic Corporation',
+// 'Dataexpert-Corporation' => 'Dataexpert Corporation',
+// 'Fujitsu-Microelectr.-Inc.' => 'Fujitsu Microelectr., Inc.',
+// 'Omron-Corporation' => 'Omron Corporation',
+// 'Advanced-System-Products-Inc' => 'Advanced System Products, Inc',
+// 'Radius' => 'Radius',
+// 'FuturePlus-Systems-Corp.' => 'FuturePlus Systems Corp.',
+// 'Molex-Incorporated' => 'Molex Incorporated',
+// 'Jabil-Circuit-Inc' => 'Jabil Circuit Inc',
+// 'Hualon-Microelectronics' => 'Hualon Microelectronics',
+// 'Autologic-Inc.' => 'Autologic Inc.',
+// 'Cetia' => 'Cetia',
+// 'BCM-Advanced-Research' => 'BCM Advanced Research',
+// 'Advanced-Peripherals-Labs' => 'Advanced Peripherals Labs',
+// 'Macronix-Inc.-MXIC' => 'Macronix, Inc. [MXIC]',
+// 'Compaq-IPG-Austin' => 'Compaq IPG-Austin',
+// 'Rohm-LSI-Systems-Inc.' => 'Rohm LSI Systems, Inc.',
+// 'CERN-ECP-EDU' => 'CERN/ECP/EDU',
+// 'Evans---Sutherland' => 'Evans & Sutherland',
+// 'nVidia-Corporation' => 'nVidia Corporation',
+// 'Emulex-Corporation' => 'Emulex Corporation',
+// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.',
+// 'Aptix-Corporation' => 'Aptix Corporation',
+// 'Tundra-Semiconductor-Corp.' => 'Tundra Semiconductor Corp.',
+// 'Tandem-Computers' => 'Tandem Computers',
+// 'Micro-Industries-Corporation' => 'Micro Industries Corporation',
+// 'Vadem' => 'Vadem',
+// 'Applied-Micro-Circuits-Corp.' => 'Applied Micro Circuits Corp.',
+// 'Alps-Electric-Co.-Ltd.' => 'Alps Electric Co., Ltd.',
+// 'Integraphics' => 'Integraphics',
+// 'Artists-Graphics' => 'Artists Graphics',
+// 'Ascii-Corporation' => 'Ascii Corporation',
+// 'Xilinx-Corporation' => 'Xilinx Corporation',
+// 'Peritek-Corporation' => 'Peritek Corporation',
+// 'Tyan-Computer' => 'Tyan Computer',
+// 'Achme-Computer-Inc.' => 'Achme Computer, Inc.',
+// 'Alaris-Inc.' => 'Alaris, Inc.',
+// 'S-MOS-Systems-Inc.' => 'S-MOS Systems, Inc.',
+// 'NKK-Corporation' => 'NKK Corporation',
+// 'Altos-India-Ltd' => 'Altos India Ltd',
+// 'PC-Direct' => 'PC Direct',
+// 'Truevision' => 'Truevision',
+// 'I-O-Data-Device-Inc.' => 'I-O Data Device, Inc.',
+// 'Soyo-Computer-Inc' => 'Soyo Computer, Inc',
+// 'Fast-Multimedia-AG' => 'Fast Multimedia AG',
+// 'NCube' => 'NCube',
+// 'Jazz-Multimedia' => 'Jazz Multimedia',
+// 'Initio-Corporation' => 'Initio Corporation',
+// 'Creative-Labs' => 'Creative Labs',
+// 'RasterOps-Corp.' => 'RasterOps Corp.',
+// 'Sigma-Designs-Inc.' => 'Sigma Designs, Inc.',
+// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.',
+// 'Stratus-Computers' => 'Stratus Computers',
+// 'Proteon-Inc.' => 'Proteon, Inc.',
+// 'Siemens-Nixdorf-AG' => 'Siemens Nixdorf AG',
+// 'Chromatic-Research-Inc.' => 'Chromatic Research Inc.',
+// 'Mini-Max-Technology-Inc.' => 'Mini-Max Technology, Inc.',
+// 'Znyx-Advanced-Systems' => 'Znyx Advanced Systems',
+// 'CPU-Technology' => 'CPU Technology',
+// 'Ross-Technology' => 'Ross Technology',
+// 'Powerhouse-Systems' => 'Powerhouse Systems',
+// 'Santa-Cruz-Operation' => 'Santa Cruz Operation',
+// 'Accton-Technology-Corporation' => 'Accton Technology Corporation',
+// 'Atmel-Corporation' => 'Atmel Corporation',
+// '3D-Labs' => '3D Labs',
+// 'Data-Translation' => 'Data Translation',
+// 'Datacube-Inc' => 'Datacube, Inc',
+// 'Berg-Electronics' => 'Berg Electronics',
+// 'Efficient-Networks-Inc' => 'Efficient Networks, Inc',
+// 'Teledyne-Electronic-Systems' => 'Teledyne Electronic Systems',
+// 'Tricord-Systems-Inc.' => 'Tricord Systems Inc.',
+// 'Eldec' => 'Eldec',
+// 'Precision-Digital-Images' => 'Precision Digital Images',
+// 'EMC-Corporation' => 'EMC Corporation',
+// 'Zilog' => 'Zilog',
+// 'Multi-tech-Systems-Inc.' => 'Multi-tech Systems, Inc.',
+// 'Excellent-Design-Inc.' => 'Excellent Design, Inc.',
+// 'Leutron-Vision-AG' => 'Leutron Vision AG',
+// 'Eurocore' => 'Eurocore',
+// 'Vigra' => 'Vigra',
+// 'FORE-Systems-Inc' => 'FORE Systems Inc',
+// 'Firmworks' => 'Firmworks',
+// 'Linotype---Hell-AG' => 'Linotype - Hell AG',
+// 'Zenith-Data-Systems' => 'Zenith Data Systems',
+// 'Ravicad' => 'Ravicad',
+// 'Dalsa-Inc.' => 'Dalsa Inc.',
+// 'Computervision' => 'Computervision',
+// 'Philips-Semiconductors' => 'Philips Semiconductors',
+// 'Mitel-Corp.' => 'Mitel Corp.',
+// 'Dialogic-Corporation' => 'Dialogic Corporation',
+// 'Mercury-Computer-Systems' => 'Mercury Computer Systems',
+// 'Fuji-Xerox-Co-Ltd' => 'Fuji Xerox Co Ltd',
+// 'Momentum-Data-Systems' => 'Momentum Data Systems',
+// 'Cisco-Systems-Inc' => 'Cisco Systems Inc',
+// 'Ziatech-Corporation' => 'Ziatech Corporation',
+// 'Dynamic-Pictures-Inc' => 'Dynamic Pictures, Inc',
+// 'FWB-Inc' => 'FWB Inc',
+// 'Network-Computing-Devices' => 'Network Computing Devices',
+// 'Cyclone-Microsystems-Inc.' => 'Cyclone Microsystems, Inc.',
+// 'Leading-Edge-Products-Inc' => 'Leading Edge Products Inc',
+// 'Equinox-Systems-Inc.' => 'Equinox Systems, Inc.',
+// 'Intervoice-Inc' => 'Intervoice Inc',
+// 'Crest-Microsystem-Inc' => 'Crest Microsystem Inc',
+// 'NetPower-Inc' => 'NetPower, Inc',
+// 'Cincinnati-Milacron' => 'Cincinnati Milacron',
+// 'Workbit-Corporation' => 'Workbit Corporation',
+// 'Force-Computers' => 'Force Computers',
+// 'Interface-Corp' => 'Interface Corp',
+// 'Win-System-Corporation' => 'Win System Corporation',
+// 'VMIC' => 'VMIC',
+// 'Canopus-Co.-Ltd' => 'Canopus Co., Ltd',
+// 'Annabooks' => 'Annabooks',
+// 'IC-Corporation' => 'IC Corporation',
+// 'Nikon-Systems-Inc' => 'Nikon Systems Inc',
+// 'Digi-International' => 'Digi International',
+// 'Thinking-Machines-Corp' => 'Thinking Machines Corp',
+// 'JAE-Electronics-Inc.' => 'JAE Electronics Inc.',
+// 'Megatek' => 'Megatek',
+// 'Land-Win-Electronic-Corp' => 'Land Win Electronic Corp',
+// 'Melco-Inc' => 'Melco Inc',
+// 'Pine-Technology-Ltd' => 'Pine Technology Ltd',
+// 'Periscope-Engineering' => 'Periscope Engineering',
+// 'Avsys-Corporation' => 'Avsys Corporation',
+// 'Voarx-R---D-Inc' => 'Voarx R & D Inc',
+// 'Mutech-Corp' => 'Mutech Corp',
+// 'Harlequin-Ltd' => 'Harlequin Ltd',
+// 'Parallax-Graphics' => 'Parallax Graphics',
+// 'Photron-Ltd.' => 'Photron Ltd.',
+// 'Xircom' => 'Xircom',
+// 'Peer-Protocols-Inc' => 'Peer Protocols Inc',
+// 'Maxtor-Corporation' => 'Maxtor Corporation',
+// 'Megasoft-Inc' => 'Megasoft Inc',
+// 'PFU-Limited' => 'PFU Limited',
+// 'OA-Laboratory-Co-Ltd' => 'OA Laboratory Co Ltd',
+// 'Rendition' => 'Rendition',
+// 'Imagraph-Corporation' => 'Imagraph Corporation',
+// 'Broadcom nee-ServerWorks' => 'Broadcom nee ServerWorks',
+// 'Mutoh-Industries-Inc' => 'Mutoh Industries Inc',
+// 'Thine-Electronics-Inc' => 'Thine Electronics Inc',
+// 'Connectware-Inc' => 'Connectware Inc',
+// 'Martin-Marietta' => 'Martin-Marietta',
+// 'Electronics-for-Imaging' => 'Electronics for Imaging',
+// 'Workstation-Technology' => 'Workstation Technology',
+// 'Inventec-Corporation' => 'Inventec Corporation',
+// 'Loughborough-Sound-Images-Plc' => 'Loughborough Sound Images Plc',
+// 'Altera-Corporation' => 'Altera Corporation',
+// 'Adobe-Systems-Inc' => 'Adobe Systems, Inc',
+// 'Bridgeport-Machines' => 'Bridgeport Machines',
+// 'Mitron-Computer-Inc.' => 'Mitron Computer Inc.',
+// 'SBE-Incorporated' => 'SBE Incorporated',
+// 'Silicon-Engineering' => 'Silicon Engineering',
+// 'Alfa-Inc.' => 'Alfa, Inc.',
+// 'Toshiba-America-Info-Systems' => 'Toshiba America Info Systems',
+// 'A-Trend-Technology' => 'A-Trend Technology',
+// 'L-G-Electronics-Inc.' => 'L G Electronics, Inc.',
+// 'Atto-Technology' => 'Atto Technology',
+// 'Becton---Dickinson' => 'Becton & Dickinson',
+// 'T-R-Systems' => 'T/R Systems',
+// 'Integrated-Circuit-Systems' => 'Integrated Circuit Systems',
+// 'Ricoh-Co-Ltd' => 'Ricoh Co Ltd',
+// 'Telmatics-International' => 'Telmatics International',
+// 'Fujikura-Ltd' => 'Fujikura Ltd',
+// 'Forks-Inc' => 'Forks Inc',
+// 'Dataworld-International-Ltd' => 'Dataworld International Ltd',
+// 'D-Link-System-Inc' => 'D-Link System Inc',
+// 'Matsushita-Electronics-Co-Ltd' => 'Matsushita Electronics Co Ltd',
+// 'Hilevel-Technology' => 'Hilevel Technology',
+// 'Hypertec-Pty-Limited' => 'Hypertec Pty Limited',
+// 'Corollary-Inc' => 'Corollary, Inc',
+// 'BitFlow-Inc' => 'BitFlow Inc',
+// 'Hermstedt-GmbH' => 'Hermstedt GmbH',
+// 'Green-Logic' => 'Green Logic',
+// 'Tripace' => 'Tripace',
+// 'Artop-Electronic-Corp' => 'Artop Electronic Corp',
+// 'Densan-Company-Ltd' => 'Densan Company Ltd',
+// 'Zeitnet-Inc.' => 'Zeitnet Inc.',
+// 'Toucan-Technology' => 'Toucan Technology',
+// 'Ratoc-System-Inc' => 'Ratoc System Inc',
+// 'Hytec-Electronics-Ltd' => 'Hytec Electronics Ltd',
+// 'Gage-Applied-Sciences-Inc.' => 'Gage Applied Sciences, Inc.',
+// 'Lambda-Systems-Inc' => 'Lambda Systems Inc',
+// 'Attachmate-Corporation' => 'Attachmate Corporation',
+// 'Mind-Share-Inc.' => 'Mind Share, Inc.',
+// 'Omega-Micro-Inc.' => 'Omega Micro Inc.',
+// 'Information-Technology-Inst.' => 'Information Technology Inst.',
+// 'Bug-Inc.-Sapporo-Japan' => 'Bug, Inc. Sapporo Japan',
+// 'Fujitsu-Microelectronics-Ltd.' => 'Fujitsu Microelectronics Ltd.',
+// 'Bull-HN-Information-Systems' => 'Bull HN Information Systems',
+// 'Convex-Computer-Corporation' => 'Convex Computer Corporation',
+// 'Hamamatsu-Photonics-K.K.' => 'Hamamatsu Photonics K.K.',
+// 'Barco-Graphics-NV' => 'Barco Graphics NV',
+// 'Microunity-Systems-Eng.-Inc' => 'Microunity Systems Eng. Inc',
+// 'Pure-Data-Ltd.' => 'Pure Data Ltd.',
+// 'Power-Computing-Corp.' => 'Power Computing Corp.',
+// 'Systech-Corp.' => 'Systech Corp.',
+// 'InnoSys-Inc.' => 'InnoSys Inc.',
+// 'Actel' => 'Actel',
+// 'Lite-On-Communications-Inc' => 'Lite-On Communications Inc',
+// 'Aztech-System-Ltd' => 'Aztech System Ltd',
+// 'Avid-Technology-Inc.' => 'Avid Technology Inc.',
+// 'V3-Semiconductor-Inc.' => 'V3 Semiconductor Inc.',
+// 'Apricot-Computers' => 'Apricot Computers',
+// 'Eastman-Kodak' => 'Eastman Kodak',
+// 'Barr-Systems-Inc.' => 'Barr Systems Inc.',
+// 'Radstone-Technology-Plc' => 'Radstone Technology Plc',
+// 'United-Video-Corp' => 'United Video Corp',
+// 'Motorola' => 'Motorola',
+// 'XPoint-Technologies-Inc' => 'XPoint Technologies, Inc',
+// 'Pathlight-Technology-Inc.' => 'Pathlight Technology Inc.',
+// 'Videotron-Corp' => 'Videotron Corp',
+// 'Pyramid-Technology' => 'Pyramid Technology',
+// 'Network-Peripherals-Inc' => 'Network Peripherals Inc',
+// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems Inc.',
+// 'Astrodesign-Inc.' => 'Astrodesign, Inc.',
+// 'Hewlett-Packard' => 'Hewlett Packard',
+// 'Sand-Microelectronics' => 'Sand Microelectronics',
+// 'NEC-Corporation' => 'NEC Corporation',
+// 'Document-Technologies-Inc' => 'Document Technologies, Inc',
+// 'Shiva-Corporation' => 'Shiva Corporation',
+// 'Dainippon-Screen-Mfg.-Co.-Ltd' => 'Dainippon Screen Mfg. Co. Ltd',
+// 'D.C.M.-Data-Systems' => 'D.C.M. Data Systems',
+// 'Magma' => 'Magma',
+// 'LSI-Systems-Inc' => 'LSI Systems, Inc',
+// 'Specialix-Research-Ltd.' => 'Specialix Research Ltd.',
+// 'HAL-Computer-Systems-Inc.' => 'HAL Computer Systems, Inc.',
+// 'Netaccess' => 'Netaccess',
+// 'Auravision' => 'Auravision',
+// 'Intercom-Inc.' => 'Intercom Inc.',
+// 'Trancell-Systems-Inc' => 'Trancell Systems Inc',
+// 'Analog-Devices' => 'Analog Devices',
+// 'Ikon-Corporation' => 'Ikon Corporation',
+// 'Tekelec-Telecom' => 'Tekelec Telecom',
+// 'Trenton-Technology-Inc.' => 'Trenton Technology, Inc.',
+// 'TEC-Corporation' => 'TEC Corporation',
+// 'Novell' => 'Novell',
+// 'Sega-Enterprises-Ltd' => 'Sega Enterprises Ltd',
+// 'Questra-Corporation' => 'Questra Corporation',
+// 'Crosfield-Electronics-Limited' => 'Crosfield Electronics Limited',
+// 'Zoran-Corporation' => 'Zoran Corporation',
+// 'New-Wave-PDG' => 'New Wave PDG',
+// 'Cray-Communications-A-S' => 'Cray Communications A/S',
+// 'GEC-Plessey-Semi-Inc.' => 'GEC Plessey Semi Inc.',
+// 'Quicklogic-Corporation' => 'Quicklogic Corporation',
+// 'Second-Wave-Inc' => 'Second Wave Inc',
+// 'IIX-Consulting' => 'IIX Consulting',
+// 'Mitsui-Zosen-System-Research' => 'Mitsui-Zosen System Research',
+// 'Highwater-Designs-Ltd.' => 'Highwater Designs Ltd.',
+// 'Elsag-Bailey' => 'Elsag Bailey',
+// 'Formation-Inc.' => 'Formation Inc.',
+// 'Coreco-Inc' => 'Coreco Inc',
+// 'Mediamatics' => 'Mediamatics',
+// 'Dome-Imaging-Systems-Inc' => 'Dome Imaging Systems Inc',
+// 'Nicolet-Technologies-B.V.' => 'Nicolet Technologies B.V.',
+// 'Compu-Shack' => 'Compu-Shack',
+// 'Symbios-Logic-Inc' => 'Symbios Logic Inc',
+// 'Picture-Tel-Japan-K.K.' => 'Picture Tel Japan K.K.',
+// 'Keithley-Metrabyte' => 'Keithley Metrabyte',
+// 'Kinetic-Systems-Corporation' => 'Kinetic Systems Corporation',
+// 'Compex' => 'Compex',
+// 'Scientific-Atlanta' => 'Scientific Atlanta',
+// 'PMC-Sierra-Inc.' => 'PMC-Sierra Inc.',
+// 'I-Cube-Inc' => 'I-Cube Inc',
+// 'Datel-Inc' => 'Datel Inc',
+// 'Silicon-Magic' => 'Silicon Magic',
+// 'High-Street-Consultants' => 'High Street Consultants',
+// 'Comtrol-Corporation' => 'Comtrol Corporation',
+// 'Scion-Corporation' => 'Scion Corporation',
+// 'CSS-Corporation' => 'CSS Corporation',
+// 'Vista-Controls-Corp' => 'Vista Controls Corp',
+// 'Network-General-Corp.' => 'Network General Corp.',
+// 'Array-Corporation' => 'Array Corporation',
+// 'Amdahl-Corporation' => 'Amdahl Corporation',
+// 'Parsytec-GmbH' => 'Parsytec GmbH',
+// 'SCI-Systems-Inc' => 'SCI Systems Inc',
+// 'Synaptel' => 'Synaptel',
+// 'Adaptive-Solutions' => 'Adaptive Solutions',
+// 'Technical-Corp.' => 'Technical Corp.',
+// 'Compression-Labs-Inc.' => 'Compression Labs, Inc.',
+// 'Cyclades-Corporation' => 'Cyclades Corporation',
+// 'Essential-Communications' => 'Essential Communications',
+// 'Hyperparallel-Technologies' => 'Hyperparallel Technologies',
+// 'Braintech-Inc' => 'Braintech Inc',
+// 'Kingston-Technology-Corp.' => 'Kingston Technology Corp.',
+// 'Interware-Co.-Ltd' => 'Interware Co., Ltd',
+// 'Purup-Prepress-A-S' => 'Purup Prepress A/S',
+// 'O2-Micro-Inc.' => 'O2 Micro, Inc.',
+// 'Hybricon-Corp.' => 'Hybricon Corp.',
+// 'First-Virtual-Corporation' => 'First Virtual Corporation',
+// '3Dfx-Interactive-Inc.' => '3Dfx Interactive, Inc.',
+// 'Nippon-Texaco.-Ltd' => 'Nippon Texaco., Ltd',
+// 'CSPI' => 'CSPI',
+// 'Arcus-Technology-Inc.' => 'Arcus Technology, Inc.',
+// 'Ariel-Corporation' => 'Ariel Corporation',
+// 'Contec-Co.-Ltd' => 'Contec Co., Ltd',
+// 'Ancor-Communications-Inc.' => 'Ancor Communications, Inc.',
+// 'Interactive-Images' => 'Interactive Images',
+// 'Power-I-O-Inc.' => 'Power I/O, Inc.',
+// 'Tech-Source' => 'Tech-Source',
+// 'Norsk-Elektro-Optikk-A-S' => 'Norsk Elektro Optikk A/S',
+// 'Data-Kinesis-Inc.' => 'Data Kinesis Inc.',
+// 'Integrated-Telecom' => 'Integrated Telecom',
+// 'Sican-GmbH' => 'Sican GmbH',
+// 'Aztech-System-Ltd' => 'Aztech System Ltd',
+// 'Xyratex' => 'Xyratex',
+// 'Andrew-Corporation' => 'Andrew Corporation',
+// 'Fishcamp-Engineering' => 'Fishcamp Engineering',
+// 'Woodward-McCoach-Inc.' => 'Woodward McCoach, Inc.',
+// 'GPT-Limited' => 'GPT Limited',
+// 'Bus-Tech-Inc.' => 'Bus-Tech, Inc.',
+// 'Risq-Modular-Systems-Inc.' => 'Risq Modular Systems, Inc.',
+// 'Sigma-Designs-Corporation' => 'Sigma Designs Corporation',
+// 'Alta-Technology-Corporation' => 'Alta Technology Corporation',
+// 'Adtran' => 'Adtran',
+// '3DO-Company' => '3DO Company',
+// 'Visicom-Laboratories-Inc.' => 'Visicom Laboratories, Inc.',
+// 'Seeq-Technology-Inc.' => 'Seeq Technology, Inc.',
+// 'Century-Systems-Inc.' => 'Century Systems, Inc.',
+// 'Engineering-Design-Team-Inc.' => 'Engineering Design Team, Inc.',
+// 'Simutech-Inc.' => 'Simutech, Inc.',
+// 'C-Cube-Microsystems' => 'C-Cube Microsystems',
+// 'Marathon-Technologies-Corp.' => 'Marathon Technologies Corp.',
+// 'DSC-Communications' => 'DSC Communications',
+// 'Delphax' => 'Delphax',
+// 'A.P.D.-S.A.' => 'A.P.D., S.A.',
+// 'Dipix-Technologies-Inc.' => 'Dipix Technologies, Inc.',
+// 'Xylon-Research-Inc.' => 'Xylon Research, Inc.',
+// 'Central-Data-Corporation' => 'Central Data Corporation',
+// 'Samsung-Electronics-Co.-Ltd.' => 'Samsung Electronics Co., Ltd.',
+// 'AEG-Electrocom-GmbH' => 'AEG Electrocom GmbH',
+// 'SBS-Greenspring-Modular-I-O' => 'SBS/Greenspring Modular I/O',
+// 'Solitron-Technologies-Inc.' => 'Solitron Technologies, Inc.',
+// 'Stallion-Technologies-Inc.' => 'Stallion Technologies, Inc.',
+// 'Cylink' => 'Cylink',
+// 'Infortrend-Technology-Inc.' => 'Infortrend Technology, Inc.',
+// 'VLSI-Solutions-Oy' => 'VLSI Solutions Oy',
+// 'Guzik-Technical-Enterprises' => 'Guzik Technical Enterprises',
+// 'Linear-Systems-Ltd.' => 'Linear Systems Ltd.',
+// 'Optibase-Ltd' => 'Optibase Ltd',
+// 'Perceptive-Solutions-Inc.' => 'Perceptive Solutions, Inc.',
+// 'Vertex-Networks-Inc.' => 'Vertex Networks, Inc.',
+// 'Gilbarco-Inc.' => 'Gilbarco, Inc.',
+// 'Allied-Telesyn-International' => 'Allied Telesyn International',
+// 'ABB-Power-Systems' => 'ABB Power Systems',
+// 'Asix-Electronics-Corporation' => 'Asix Electronics Corporation',
+// 'Aurora-Technologies-Inc.' => 'Aurora Technologies, Inc.',
+// 'ESS-Technology' => 'ESS Technology',
+// 'Specialvideo-Engineering-SRL' => 'Specialvideo Engineering SRL',
+// 'Concurrent-Technologies-Inc.' => 'Concurrent Technologies, Inc.',
+// 'Intersil-Corporation' => 'Intersil Corporation',
+// 'ES-Computer-Company-Ltd.' => 'ES Computer Company, Ltd.',
+// 'Sonic-Solutions' => 'Sonic Solutions',
+// 'Aval-Nagasaki-Corporation' => 'Aval Nagasaki Corporation',
+// 'Casio-Computer-Co.-Ltd.' => 'Casio Computer Co., Ltd.',
+// 'Microdyne-Corporation' => 'Microdyne Corporation',
+// 'S.-A.-Telecommunications' => 'S. A. Telecommunications',
+// 'Tektronix' => 'Tektronix',
+// 'Thomson-CSF-TTM' => 'Thomson-CSF/TTM',
+// 'Lexmark-International-Inc.' => 'Lexmark International, Inc.',
+// 'Adax-Inc.' => 'Adax, Inc.',
+// 'Northern-Telecom' => 'Northern Telecom',
+// 'Splash-Technology-Inc.' => 'Splash Technology, Inc.',
+// 'Silicon-Motion-Inc.' => 'Silicon Motion, Inc.',
+// 'Olympus-Optical-Co.-Ltd.' => 'Olympus Optical Co., Ltd.',
+// 'GW-Instruments' => 'GW Instruments',
+// 'Telematics-International' => 'Telematics International',
+// 'Hughes-Network-Systems' => 'Hughes Network Systems',
+// 'Ensoniq' => 'Ensoniq',
+// 'Network-Appliance-Corporation' => 'Network Appliance Corporation',
+// 'Comstream' => 'Comstream',
+// 'Transmeta-Corporation' => 'Transmeta Corporation',
+// 'Rockwell-International' => 'Rockwell International',
+// 'Pixera-Corporation' => 'Pixera Corporation',
+// 'Crosspoint-Solutions-Inc.' => 'Crosspoint Solutions, Inc.',
+// 'Vela-Research' => 'Vela Research',
+// 'Winnov-L.P.' => 'Winnov, L.P.',
+// 'Fujifilm' => 'Fujifilm',
+// 'Photoscript-Group-Ltd.' => 'Photoscript Group Ltd.',
+// 'Yokogawa-Electric-Corporation' => 'Yokogawa Electric Corporation',
+// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.',
+// 'Sahara-Networks-Inc.' => 'Sahara Networks, Inc.',
+// 'Platform-Technologies-Inc.' => 'Platform Technologies, Inc.',
+// 'Mazet-GmbH' => 'Mazet GmbH',
+// 'M-Pact-Inc.' => 'M-Pact, Inc.',
+// 'Timestep-Corporation' => 'Timestep Corporation',
+// 'AVC-Technology-Inc.' => 'AVC Technology, Inc.',
+// 'Asante-Technologies-Inc.' => 'Asante Technologies, Inc.',
+// 'Transwitch-Corporation' => 'Transwitch Corporation',
+// 'Retix-Corporation' => 'Retix Corporation',
+// 'G2-Networks-Inc.' => 'G2 Networks, Inc.',
+// 'Tateno-Dennou-Inc.' => 'Tateno Dennou, Inc.',
+// 'Sord-Computer-Corporation' => 'Sord Computer Corporation',
+// 'NCS-Computer-Italia' => 'NCS Computer Italia',
+// 'Tritech-Microelectronics-Inc' => 'Tritech Microelectronics Inc',
+// 'Media-Reality-Technology' => 'Media Reality Technology',
+// 'Rhetorex-Inc.' => 'Rhetorex, Inc.',
+// 'Imagenation-Corporation' => 'Imagenation Corporation',
+// 'Kofax-Image-Products' => 'Kofax Image Products',
+// 'Knowledge-Technology-Lab.' => 'Knowledge Technology Lab.',
+// 'VMetro-inc.' => 'VMetro, inc.',
+// 'Image-Access' => 'Image Access',
+// 'Jaycor' => 'Jaycor',
+// 'Compcore-Multimedia-Inc.' => 'Compcore Multimedia, Inc.',
+// 'Victor-Company-of-Japan-Ltd.' => 'Victor Company of Japan, Ltd.',
+// 'OEC-Medical-Systems-Inc.' => 'OEC Medical Systems, Inc.',
+// 'Allen-Bradley-Company' => 'Allen-Bradley Company',
+// 'Simpact-Associates-Inc.' => 'Simpact Associates, Inc.',
+// 'Newgen-Systems-Corporation' => 'Newgen Systems Corporation',
+// 'Lucent-Technologies' => 'Lucent Technologies',
+// 'Vision-Dynamics-Ltd.' => 'Vision Dynamics Ltd.',
+// 'Scalable-Networks-Inc.' => 'Scalable Networks, Inc.',
+// 'AMO-GmbH' => 'AMO GmbH',
+// 'News-Datacom' => 'News Datacom',
+// 'Xiotech-Corporation' => 'Xiotech Corporation',
+// 'SDL-Communications-Inc.' => 'SDL Communications, Inc.',
+// 'Measurex-Corporation' => 'Measurex Corporation',
+// 'Multidata-GmbH' => 'Multidata GmbH',
+// 'Alteon-Networks-Inc.' => 'Alteon Networks Inc.',
+// 'TDK-USA-Corp' => 'TDK USA Corp',
+// 'Jorge-Scientific-Corp' => 'Jorge Scientific Corp',
+// 'GammaLink' => 'GammaLink',
+// 'General-Signal-Networks' => 'General Signal Networks',
+// 'Inter-Face-Co-Ltd' => 'Inter-Face Co Ltd',
+// 'FutureTel-Inc' => 'FutureTel Inc',
+// 'Granite-Systems-Inc.' => 'Granite Systems Inc.',
+// 'Natural-Microsystems' => 'Natural Microsystems',
+// 'Korg' => 'Korg',
+// 'BittWare-Inc.' => 'BittWare, Inc.',
+// 'Nippon-Unisoft-Corporation' => 'Nippon Unisoft Corporation',
+// 'Array-Microsystems' => 'Array Microsystems',
+// 'Computerm-Corp.' => 'Computerm Corp.',
+// 'Anchor-Chips-Inc.' => 'Anchor Chips Inc.',
+// 'Fujifilm-Microdevices' => 'Fujifilm Microdevices',
+// 'Infimed' => 'Infimed',
+// 'GMM-Research-Corp' => 'GMM Research Corp',
+// 'Mentec-Limited' => 'Mentec Limited',
+// 'Holtek-Microelectronics-Inc' => 'Holtek Microelectronics Inc',
+// 'Connect-Tech-Inc' => 'Connect Tech Inc',
+// 'Picture-Elements-Incorporated' => 'Picture Elements Incorporated',
+// 'Mitani-Corporation' => 'Mitani Corporation',
+// 'Dialogic-Corp' => 'Dialogic Corp',
+// 'G-Force-Co-Ltd' => 'G Force Co, Ltd',
+// 'Gigi-Operations' => 'Gigi Operations',
+// 'Integrated-Computing-Engines' => 'Integrated Computing Engines',
+// 'Antex-Electronics-Corporation' => 'Antex Electronics Corporation',
+// 'Aims-Lab' => 'Aims Lab',
+// 'Netspeed-Inc.' => 'Netspeed Inc.',
+// 'Prophet-Systems-Inc.' => 'Prophet Systems, Inc.',
+// 'GDE-Systems-Inc.' => 'GDE Systems, Inc.',
+// 'PSITech' => 'PSITech',
+// 'Vingmed-Sound-A-S' => 'Vingmed Sound A/S',
+// 'Ulticom-Formerly-DGM-S' => 'Ulticom (Formerly DGM&S)',
+// 'Equator-Technologies-Inc' => 'Equator Technologies Inc',
+// 'Analogic-Corp' => 'Analogic Corp',
+// 'Biotronic-SRL' => 'Biotronic SRL',
+// 'Pericom-Semiconductor' => 'Pericom Semiconductor',
+// 'Aculab-PLC' => 'Aculab PLC',
+// 'True-Time-Inc.' => 'True Time Inc.',
+// 'Annapolis-Micro-Systems-Inc' => 'Annapolis Micro Systems, Inc',
+// 'Management-Graphics' => 'Management Graphics',
+// 'Rainbow-Technologies' => 'Rainbow Technologies',
+// 'SBS-Technologies-Inc' => 'SBS Technologies Inc',
+// 'Chase-Research' => 'Chase Research',
+// 'Nintendo-Co-Ltd' => 'Nintendo Co, Ltd',
+// 'Brooktrout-Technology-Inc' => 'Brooktrout Technology Inc',
+// 'Apex-Semiconductor-Inc' => 'Apex Semiconductor Inc',
+// 'Cirel-Systems' => 'Cirel Systems',
+// 'Sunsgroup-Corporation' => 'Sunsgroup Corporation',
+// 'Crisc-Corp' => 'Crisc Corp',
+// 'GE-Spacenet' => 'GE Spacenet',
+// 'Zuken' => 'Zuken',
+// 'Aureal-Semiconductor' => 'Aureal Semiconductor',
+// '3A-International-Inc.' => '3A International, Inc.',
+// 'Optivision-Inc.' => 'Optivision Inc.',
+// 'Orange-Micro' => 'Orange Micro',
+// 'Vienna-Systems' => 'Vienna Systems',
+// 'Pentek' => 'Pentek',
+// 'Sorenson-Vision-Inc' => 'Sorenson Vision Inc',
+// 'Gammagraphx-Inc.' => 'Gammagraphx, Inc.',
+// 'Radstone-Technology' => 'Radstone Technology',
+// 'Megatel' => 'Megatel',
+// 'Forks' => 'Forks',
+// 'Dawson-France' => 'Dawson France',
+// 'Cognex' => 'Cognex',
+// 'Electronic-Design-GmbH' => 'Electronic Design GmbH',
+// 'Four-Fold-Ltd' => 'Four Fold Ltd',
+// 'Spectrum-Signal-Processing' => 'Spectrum Signal Processing',
+// 'Capital-Equipment-Corp' => 'Capital Equipment Corp',
+// 'I2S' => 'I2S',
+// 'Lexicon' => 'Lexicon',
+// 'Computer-Sciences-Corp' => 'Computer Sciences Corp',
+// 'Innovative-Integration' => 'Innovative Integration',
+// 'Juniper-Networks' => 'Juniper Networks',
+// 'Netphone-Inc' => 'Netphone, Inc',
+// 'Duet-Technologies' => 'Duet Technologies',
+// 'Jato-Technologies-Inc.' => 'Jato Technologies Inc.',
+// 'AB-Semiconductor-Ltd' => 'AB Semiconductor Ltd',
+// 'Ambex-Technologies-Inc' => 'Ambex Technologies, Inc',
+// 'Accelerix-Inc' => 'Accelerix Inc',
+// 'Yamatake-Honeywell-Co.-Ltd' => 'Yamatake-Honeywell Co. Ltd',
+// 'Advanet-Inc' => 'Advanet Inc',
+// 'Gespac' => 'Gespac',
+// 'Videoserver-Inc' => 'Videoserver, Inc',
+// 'Acuity-Imaging-Inc' => 'Acuity Imaging, Inc',
+// 'Yaskawa-Electric-Co.' => 'Yaskawa Electric Co.',
+// 'Wavesat' => 'Wavesat',
+// 'Teradyne-Inc' => 'Teradyne Inc',
+// 'ADMtek' => 'ADMtek',
+// 'Packet-Engines-Inc.' => 'Packet Engines Inc.',
+// 'Fortemedia-Inc' => 'Fortemedia, Inc',
+// 'Finisar-Corp.' => 'Finisar Corp.',
+// 'Sysmic-Inc.' => 'Sysmic, Inc.',
+// 'Xinex-Networks-Inc' => 'Xinex Networks Inc',
+// 'Siig-Inc' => 'Siig Inc',
+// 'Crypto-AG' => 'Crypto AG',
+// 'Arcobel-Graphics-BV' => 'Arcobel Graphics BV',
+// 'MTT-Co.-Ltd' => 'MTT Co., Ltd',
+// 'Dome-Inc' => 'Dome Inc',
+// 'Sphere-Communications' => 'Sphere Communications',
+// 'Salix-Technologies-Inc' => 'Salix Technologies, Inc',
+// 'Seachange-international' => 'Seachange international',
+// 'Voss-scientific' => 'Voss scientific',
+// 'quadrant-international' => 'quadrant international',
+// 'Productivity-Enhancement' => 'Productivity Enhancement',
+// 'Microcom-Inc.' => 'Microcom Inc.',
+// 'Broadband-Technologies' => 'Broadband Technologies',
+// 'Micrel-Inc' => 'Micrel Inc',
+// 'MMC-Networks' => 'MMC Networks',
+// 'RadiSys-Corporation' => 'RadiSys Corporation',
+// 'Micro-Memory' => 'Micro Memory',
+// 'Redcreek-Communications-Inc' => 'Redcreek Communications, Inc',
+// 'Videomail-Inc' => 'Videomail, Inc',
+// 'Third-Planet-Publishing' => 'Third Planet Publishing',
+// 'BT-Electronics' => 'BT Electronics',
+// 'Vtel-Corp' => 'Vtel Corp',
+// 'Softcom-Microsystems' => 'Softcom Microsystems',
+// 'Holontech-Corp' => 'Holontech Corp',
+// 'SS-Technologies' => 'SS Technologies',
+// 'Virtual-Computer-Corp' => 'Virtual Computer Corp',
+// 'SCM-Microsystems' => 'SCM Microsystems',
+// 'Atalla-Corp' => 'Atalla Corp',
+// 'Kyoto-Microcomputer-Co' => 'Kyoto Microcomputer Co',
+// 'Promax-Systems-Inc' => 'Promax Systems Inc',
+// 'Phylon-Communications-Inc' => 'Phylon Communications Inc',
+// 'Arescom-Inc' => 'Arescom Inc',
+// 'Odetics' => 'Odetics',
+// 'DTC-Technology-Corp.' => 'DTC Technology Corp.',
+// 'ARK-Research-Corp.' => 'ARK Research Corp.',
+// 'Chori-Joho-System-Co.-Ltd' => 'Chori Joho System Co. Ltd',
+// 'PCTel-Inc' => 'PCTel Inc',
+// 'CSTI' => 'CSTI',
+// 'Algo-System-Co-Ltd' => 'Algo System Co Ltd',
+// 'Systec-Co.-Ltd' => 'Systec Co. Ltd',
+// 'Sonix-Inc' => 'Sonix Inc',
+// 'Thales-Idatys' => 'Thales Idatys',
+// 'Dwave-System-Inc' => 'Dwave System Inc',
+// 'Kratos-Analytical-Ltd' => 'Kratos Analytical Ltd',
+// 'The-Logical-Co' => 'The Logical Co',
+// 'Prisa-Networks' => 'Prisa Networks',
+// 'Brain-Boxes' => 'Brain Boxes',
+// 'Giganet-Inc' => 'Giganet Inc',
+// 'Quatech-Inc' => 'Quatech Inc',
+// 'ABB-Network-Partner-AB' => 'ABB Network Partner AB',
+// 'Sealevel-Systems-Inc' => 'Sealevel Systems Inc',
+// 'I-Data-International-A-S' => 'I-Data International A-S',
+// 'Meinberg-Funkuhren' => 'Meinberg Funkuhren',
+// 'Soliton-Systems-K.K.' => 'Soliton Systems K.K.',
+// 'Fujifacom-Corporation' => 'Fujifacom Corporation',
+// 'Phoenix-Technology-Ltd' => 'Phoenix Technology Ltd',
+// 'ATM-Communications-Inc' => 'ATM Communications Inc',
+// 'Hypercope-GmbH' => 'Hypercope GmbH',
+// 'Teijin-Seiki-Co.-Ltd' => 'Teijin Seiki Co. Ltd',
+// 'Hitachi-Zosen-Corporation' => 'Hitachi Zosen Corporation',
+// 'Skyware-Corporation' => 'Skyware Corporation',
+// 'Digigram' => 'Digigram',
+// 'High-Soft-Tech' => 'High Soft Tech',
+// 'Kawasaki-Steel-Corporation' => 'Kawasaki Steel Corporation',
+// 'Adtek-System-Science-Co-Ltd' => 'Adtek System Science Co Ltd',
+// 'Gigalabs-Inc' => 'Gigalabs Inc',
+// 'Applied-Magic-Inc' => 'Applied Magic Inc',
+// 'ATL-Products' => 'ATL Products',
+// 'CNet-Technology-Inc' => 'CNet Technology Inc',
+// 'Silicon-Vision-Inc' => 'Silicon Vision Inc',
+// 'Silicom-Ltd.' => 'Silicom Ltd.',
+// 'Argosystems-Inc' => 'Argosystems Inc',
+// 'LMC' => 'LMC',
+// 'Telemann-Co.-Ltd' => 'Telemann Co. Ltd',
+// 'Mark-of-the-Unicorn-Inc' => 'Mark of the Unicorn Inc',
+// 'PPT-Vision' => 'PPT Vision',
+// 'Iwatsu-Electric-Co-Ltd' => 'Iwatsu Electric Co Ltd',
+// 'Dynachip-Corporation' => 'Dynachip Corporation',
+// 'Japan-Satellite-Systems-Inc' => 'Japan Satellite Systems Inc',
+// 'Sanritz-Automation-Co-Ltd' => 'Sanritz Automation Co Ltd',
+// 'Brains-Co.-Ltd' => 'Brains Co. Ltd',
+// 'Controlnet-Inc' => 'Controlnet Inc',
+// 'Netgear' => 'Netgear',
+// 'Video-Domain-Technologies' => 'Video Domain Technologies',
+// 'Systran-Corp' => 'Systran Corp',
+// 'Applicom-International' => 'Applicom International',
+// 'Fusion-Micromedia-Corp' => 'Fusion Micromedia Corp',
+// 'Tokimec-Inc' => 'Tokimec Inc',
+// 'Silicon-Reality' => 'Silicon Reality',
+// 'Future-Techno-Designs-pte-Ltd' => 'Future Techno Designs pte Ltd',
+// 'Basler-GmbH' => 'Basler GmbH',
+// 'Patapsco-Designs-Inc' => 'Patapsco Designs Inc',
+// 'Concept-Development-Inc' => 'Concept Development Inc',
+// 'Development-Concepts-Inc' => 'Development Concepts Inc',
+// 'Medialight-Inc' => 'Medialight Inc',
+// 'Moxa-Technologies-Co-Ltd' => 'Moxa Technologies Co Ltd',
+// 'Level-One-Communications' => 'Level One Communications',
+// 'Ambicom-Inc' => 'Ambicom Inc',
+// 'Cipher-Systems-Inc' => 'Cipher Systems Inc',
+// 'Cologne-Chip-Designs-GmbH' => 'Cologne Chip Designs GmbH',
+// 'Clarion-co.-Ltd' => 'Clarion co. Ltd',
+// 'Rios-systems-Co-Ltd' => 'Rios systems Co Ltd',
+// 'Alacritech-Inc' => 'Alacritech Inc',
+// 'Quantum-3d-Inc' => 'Quantum 3d Inc',
+// 'EPL-limited' => 'EPL limited',
+// 'Media4' => 'Media4',
+// 'Aethra-s.r.l.' => 'Aethra s.r.l.',
+// 'Crystal-Group-Inc' => 'Crystal Group Inc',
+// 'Kawasaki-Heavy-Industries-Ltd' => 'Kawasaki Heavy Industries Ltd',
+// 'Ositech-Communications-Inc' => 'Ositech Communications Inc',
+// 'Hifn-Inc.' => 'Hifn Inc.',
+// 'Rascom-Inc' => 'Rascom Inc',
+// 'Audio-Digital-Imaging-Inc' => 'Audio Digital Imaging Inc',
+// 'Videonics-Inc' => 'Videonics Inc',
+// 'Teles-AG' => 'Teles AG',
+// 'Exar-Corp.' => 'Exar Corp.',
+// 'Broadband-Networks-Inc' => 'Broadband Networks Inc',
+// 'Arcom-Control-Systems-Ltd' => 'Arcom Control Systems Ltd',
+// 'Motion-Media-Technology-Ltd' => 'Motion Media Technology Ltd',
+// 'Nexus-Inc' => 'Nexus Inc',
+// 'ALD-Technology-Ltd' => 'ALD Technology Ltd',
+// 'T.Sqware' => 'T.Sqware',
+// 'Maxspeed-Corp' => 'Maxspeed Corp',
+// 'Tamura-corporation' => 'Tamura corporation',
+// 'Techno-Chips-Co.-Ltd' => 'Techno Chips Co. Ltd',
+// 'Lanart-Corporation' => 'Lanart Corporation',
+// 'Wellbean-Co-Inc' => 'Wellbean Co Inc',
+// 'ARM' => 'ARM',
+// 'Dlog-GmbH' => 'Dlog GmbH',
+// 'Logic-Devices-Inc' => 'Logic Devices Inc',
+// 'Nokia-Telecommunications-oy' => 'Nokia Telecommunications oy',
+// 'Elecom-Co-Ltd' => 'Elecom Co Ltd',
+// 'Oxford-Instruments' => 'Oxford Instruments',
+// 'Sanyo-Technosound-Co-Ltd' => 'Sanyo Technosound Co Ltd',
+// 'Bitran-Corporation' => 'Bitran Corporation',
+// 'Sharp-corporation' => 'Sharp corporation',
+// 'Miroku-Jyoho-Service-Co.-Ltd' => 'Miroku Jyoho Service Co. Ltd',
+// 'Sharewave-Inc' => 'Sharewave Inc',
+// 'Microgate-Corporation' => 'Microgate Corporation',
+// '3ware-Inc' => '3ware Inc',
+// 'Janz-Computer-AG' => 'Janz Computer AG',
+// 'Phase-Metrics' => 'Phase Metrics',
+// 'Alphi-Technology-Corp' => 'Alphi Technology Corp',
+// 'Condor-Engineering-Inc' => 'Condor Engineering Inc',
+// 'Blue-Chip-Technology-Ltd' => 'Blue Chip Technology Ltd',
+// 'Apptech-Inc' => 'Apptech Inc',
+// 'Eaton-Corporation' => 'Eaton Corporation',
+// 'Iomega-Corporation' => 'Iomega Corporation',
+// 'Yano-Electric-Co-Ltd' => 'Yano Electric Co Ltd',
+// 'Metheus-Corporation' => 'Metheus Corporation',
+// 'Cocom-A-S' => 'Cocom A/S',
+// 'Studio-Audio---Video-Ltd' => 'Studio Audio & Video Ltd',
+// 'Techsan-Electronics-Co-Ltd' => 'Techsan Electronics Co Ltd',
+// 'Abocom-Systems-Inc' => 'Abocom Systems Inc',
+// 'Shark-Multimedia-Inc' => 'Shark Multimedia Inc',
+// 'IMC-Networks' => 'IMC Networks',
+// 'Graphics-Microsystems-Inc' => 'Graphics Microsystems Inc',
+// 'Media-100-Inc' => 'Media 100 Inc',
+// 'K.I.-Technology-Co-Ltd' => 'K.I. Technology Co Ltd',
+// 'Phobos-corporation' => 'Phobos corporation',
+// 'Apex-PC-Solutions-Inc' => 'Apex PC Solutions Inc',
+// 'Intresource-Systems-pte-Ltd' => 'Intresource Systems pte Ltd',
+// 'Netboost-Corporation' => 'Netboost Corporation',
+// 'Multimedia-Bundle-Inc' => 'Multimedia Bundle Inc',
+// 'ABB-Robotics-Products-AB' => 'ABB Robotics Products AB',
+// 'E-Tech-Inc' => 'E-Tech Inc',
+// 'GVC-Corporation' => 'GVC Corporation',
+// 'Dynamics-Research-Corporation' => 'Dynamics Research Corporation',
+// 'Nest-Inc' => 'Nest Inc',
+// 'Calculex-Inc' => 'Calculex Inc',
+// 'Telesoft-Design-Ltd' => 'Telesoft Design Ltd',
+// 'Argosy-research-Inc' => 'Argosy research Inc',
+// 'NAC-Incorporated' => 'NAC Incorporated',
+// 'Chip-Express-Corporation' => 'Chip Express Corporation',
+// 'Intraserver-Technology-Inc' => 'Intraserver Technology Inc',
+// 'Dallas-Semiconductor' => 'Dallas Semiconductor',
+// 'Hauppauge-Computer-Works-Inc' => 'Hauppauge Computer Works Inc',
+// 'Zydacron-Inc' => 'Zydacron Inc',
+// 'Raytheion-E-Systems' => 'Raytheion E-Systems',
+// 'Coppercom-Inc' => 'Coppercom Inc',
+// 'Oce---Technologies-B.V.' => 'Oce - Technologies B.V.',
+// 'Ford-Microelectronics-Inc' => 'Ford Microelectronics Inc',
+// 'Mcdata-Corporation' => 'Mcdata Corporation',
+// 'Troika-Networks-Inc.' => 'Troika Networks, Inc.',
+// 'Kansai-Electric-Co.-Ltd' => 'Kansai Electric Co. Ltd',
+// 'C-Media-Electronics-Inc' => 'C-Media Electronics Inc',
+// 'Wildfire-Communications' => 'Wildfire Communications',
+// 'Ad-Lib-Multimedia-Inc' => 'Ad Lib Multimedia Inc',
+// 'NTT-Advanced-Technology-Corp.' => 'NTT Advanced Technology Corp.',
+// 'Pentland-Systems-Ltd' => 'Pentland Systems Ltd',
+// 'Aydin-Corp' => 'Aydin Corp',
+// 'Micro-Science-Inc' => 'Micro Science Inc',
+// 'Advantech-Co.-Ltd' => 'Advantech Co. Ltd',
+// 'Silicon-Spice-Inc' => 'Silicon Spice Inc',
+// 'Artx-Inc' => 'Artx Inc',
+// 'CR-Systems-A-S' => 'CR-Systems A/S',
+// 'Meilhaus-Electronic-GmbH' => 'Meilhaus Electronic GmbH',
+// 'Ascor-Inc' => 'Ascor Inc',
+// 'Fundamental-Software-Inc' => 'Fundamental Software Inc',
+// 'Excalibur-Systems-Inc' => 'Excalibur Systems Inc',
+// 'Oce-Printing-Systems-GmbH' => 'Oce Printing Systems GmbH',
+// 'Lava-Computer-mfg-Inc' => 'Lava Computer mfg Inc',
+// 'Aloka-Co.-Ltd' => 'Aloka Co. Ltd',
+// 'Timedia-Technology-Co-Ltd' => 'Timedia Technology Co Ltd',
+// 'DSP-Research-Inc' => 'DSP Research Inc',
+// 'Elmic-Systems-Inc' => 'Elmic Systems Inc',
+// 'Matsushita-Electric-Works-Ltd' => 'Matsushita Electric Works Ltd',
+// 'Goepel-Electronic-GmbH' => 'Goepel Electronic GmbH',
+// 'Salient-Systems-Corp' => 'Salient Systems Corp',
+// 'Midas-lab-Inc' => 'Midas lab Inc',
+// 'Ikos-Systems-Inc' => 'Ikos Systems Inc',
+// 'Addonics' => 'Addonics',
+// 'Microsoft-Corporation' => 'Microsoft Corporation',
+// 'Oxford-Semiconductor-Ltd' => 'Oxford Semiconductor Ltd',
+// 'Multiwave-Innovation-pte-Ltd' => 'Multiwave Innovation pte Ltd',
+// 'Convergenet-Technologies-Inc' => 'Convergenet Technologies Inc',
+// 'Excel-Switching-Corp' => 'Excel Switching Corp',
+// 'Apache-Micro-Peripherals-Inc' => 'Apache Micro Peripherals Inc',
+// 'Zoom-Telephonics-Inc' => 'Zoom Telephonics Inc',
+// 'Digitan-Systems-Inc' => 'Digitan Systems Inc',
+// 'Fanuc-Ltd' => 'Fanuc Ltd',
+// 'Visiontech-Ltd' => 'Visiontech Ltd',
+// 'Psion-Dacom-plc' => 'Psion Dacom plc',
+// 'Ads-Technologies-Inc' => 'Ads Technologies Inc',
+// 'Ygrec-Systems-Co-Ltd' => 'Ygrec Systems Co Ltd',
+// 'Custom-Technology-Corp.' => 'Custom Technology Corp.',
+// 'Videoserver-Connections' => 'Videoserver Connections',
+// 'Chelsio-Communications-Inc' => 'Chelsio Communications Inc',
+// 'Storage-Technology-Corp.' => 'Storage Technology Corp.',
+// 'Better-On-Line-Solutions' => 'Better On-Line Solutions',
+// 'Edec-Co-Ltd' => 'Edec Co Ltd',
+// 'Unex-Technology-Corp.' => 'Unex Technology Corp.',
+// 'Kingmax-Technology-Inc' => 'Kingmax Technology Inc',
+// 'Radiolan' => 'Radiolan',
+// 'Minton-Optic-Industry-Co-Ltd' => 'Minton Optic Industry Co Ltd',
+// 'Pix-stream-Inc' => 'Pix stream Inc',
+// 'Vitec-Multimedia' => 'Vitec Multimedia',
+// 'Radicom-Research-Inc' => 'Radicom Research Inc',
+// 'Gilat-Satellite-Networks' => 'Gilat Satellite Networks',
+// 'Edimax-Computer-Co.' => 'Edimax Computer Co.',
+// 'Eltec-Elektronik-GmbH' => 'Eltec Elektronik GmbH',
+// 'CIS-Technology-Inc' => 'CIS Technology Inc',
+// 'Nissin-Inc-Co' => 'Nissin Inc Co',
+// 'Atmel-dream' => 'Atmel-dream',
+// 'Stargate-Solutions-Inc' => 'Stargate Solutions Inc',
+// 'Amlogic-Inc' => 'Amlogic Inc',
+// 'Tamarack-Microelectronics-Inc' => 'Tamarack Microelectronics Inc',
+// 'Jones-Futurex-Inc' => 'Jones Futurex Inc',
+// 'ALGOL-Corp.' => 'ALGOL Corp.',
+// 'AGIE-Ltd' => 'AGIE Ltd',
+// 'Phoenix-Contact-GmbH---Co.' => 'Phoenix Contact GmbH & Co.',
+// 'Unibrain-S.A.' => 'Unibrain S.A.',
+// 'TRW' => 'TRW',
+// 'Logical-DO-Ltd' => 'Logical DO Ltd',
+// 'Graphin-Co-Ltd' => 'Graphin Co Ltd',
+// 'AIM-GmBH' => 'AIM GmBH',
+// 'Alesis-Studio-Electronics' => 'Alesis Studio Electronics',
+// 'TUT-Systems-Inc' => 'TUT Systems Inc',
+// 'Adlink-Technology' => 'Adlink Technology',
+// 'Catalina-Research-Inc' => 'Catalina Research Inc',
+// 'Samsung-Electronics-Co-Ltd' => 'Samsung Electronics Co Ltd',
+// 'OLITEC' => 'OLITEC',
+// 'Askey-Computer-Corp.' => 'Askey Computer Corp.',
+// 'Octave-Communications-Ind.' => 'Octave Communications Ind.',
+// 'SP3D-Chip-Design-GmBH' => 'SP3D Chip Design GmBH',
+// 'MYCOM-Inc' => 'MYCOM Inc',
+// 'Altiga-Networks' => 'Altiga Networks',
+// 'Logic-Plus-Plus-Inc' => 'Logic Plus Plus Inc',
+// 'Nuera-Communications-Inc' => 'Nuera Communications Inc',
+// 'Giga-byte-Technology' => 'Giga-byte Technology',
+// 'DOOIN-Electronics' => 'DOOIN Electronics',
+// 'Escalate-Networks-Inc' => 'Escalate Networks Inc',
+// 'PRAIM-SRL' => 'PRAIM SRL',
+// 'Cryptek' => 'Cryptek',
+// 'Gallant-Computer-Inc' => 'Gallant Computer Inc',
+// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.',
+// 'Baldor-Electric-Company' => 'Baldor Electric Company',
+// 'DYNARC-INC' => 'DYNARC INC',
+// 'Avermedia-Technologies-Inc' => 'Avermedia Technologies Inc',
+// 'Fast-Corporation' => 'Fast Corporation',
+// 'GN-NETTEST-Telecom-DIV.' => 'GN NETTEST Telecom DIV.',
+// 'Designpro-Inc.' => 'Designpro Inc.',
+// 'DIGICOM-SPA' => 'DIGICOM SPA',
+// 'AMBIT-Microsystem-Corp.' => 'AMBIT Microsystem Corp.',
+// 'Cleveland-Motion-Controls' => 'Cleveland Motion Controls',
+// 'IFR' => 'IFR',
+// 'Parascan-Technologies-Ltd' => 'Parascan Technologies Ltd',
+// 'Ruby-Tech-Corp.' => 'Ruby Tech Corp.',
+// 'Tachyon-INC.' => 'Tachyon, INC.',
+// 'Bay-Networks' => 'Bay Networks',
+// 'DAIKIN-Industries-Ltd' => 'DAIKIN Industries, Ltd',
+// 'ZAPEX-Technologies-Inc' => 'ZAPEX Technologies Inc',
+// 'Doug-Carson---Associates' => 'Doug Carson & Associates',
+// 'PICAZO-Communications' => 'PICAZO Communications',
+// 'MORTARA-Instrument-Inc' => 'MORTARA Instrument Inc',
+// 'Net-Insight' => 'Net Insight',
+// 'DIATREND-Corporation' => 'DIATREND Corporation',
+// 'TORAY-Industries-Inc' => 'TORAY Industries Inc',
+// 'FORMOSA-Industrial-Computing' => 'FORMOSA Industrial Computing',
+// 'ABIT-Computer-Corp.' => 'ABIT Computer Corp.',
+// 'AWARE-Inc.' => 'AWARE, Inc.',
+// 'Interworks-Computer-Products' => 'Interworks Computer Products',
+// 'NIHON-UNISYS-Ltd.' => 'NIHON UNISYS, Ltd.',
+// 'SCII-Telecom' => 'SCII Telecom',
+// 'BIOPAC-Systems-Inc' => 'BIOPAC Systems Inc',
+// 'LABWAY-Corporation' => 'LABWAY Corporation',
+// 'Logic-Corporation' => 'Logic Corporation',
+// 'ERMA---Electronic-GmBH' => 'ERMA - Electronic GmBH',
+// 'MARQUETTE-Medical-Systems' => 'MARQUETTE Medical Systems',
+// 'KONTRON-Electronik-GmBH' => 'KONTRON Electronik GmBH',
+// 'KYE-Systems-Corporation' => 'KYE Systems Corporation',
+// 'OPTO' => 'OPTO',
+// 'INNOMEDIALOGIC-Inc.' => 'INNOMEDIALOGIC Inc.',
+// 'C.P.-Technology-Co.-Ltd' => 'C.P. Technology Co. Ltd',
+// 'DIGICOM-Systems-Inc.' => 'DIGICOM Systems, Inc.',
+// 'OSI-Plus-Corporation' => 'OSI Plus Corporation',
+// 'Plant-Equipment-Inc.' => 'Plant Equipment, Inc.',
+// 'Stone-Microsystems-PTY-Ltd.' => 'Stone Microsystems PTY Ltd.',
+// 'ZEAL-Corporation' => 'ZEAL Corporation',
+// 'Time-Logic-Corporation' => 'Time Logic Corporation',
+// 'MAKER-Communications' => 'MAKER Communications',
+// 'WINTOP-Technology-Inc.' => 'WINTOP Technology, Inc.',
+// 'JOYTECH-Computer-Co.-Ltd.' => 'JOYTECH Computer Co., Ltd.',
+// 'SMA-Regelsysteme-GmBH' => 'SMA Regelsysteme GmBH',
+// 'TEWS-Technologies-GmbH' => 'TEWS Technologies GmbH',
+// 'EMTEC-CO.-Ltd' => 'EMTEC CO., Ltd',
+// 'ANDOR-Technology-Ltd' => 'ANDOR Technology Ltd',
+// 'SEIKO-Instruments-Inc' => 'SEIKO Instruments Inc',
+// 'OVISLINK-Corp.' => 'OVISLINK Corp.',
+// 'NEWTEK-Inc' => 'NEWTEK Inc',
+// 'Mapletree-Networks-Inc.' => 'Mapletree Networks Inc.',
+// 'LECTRON-Co-Ltd' => 'LECTRON Co Ltd',
+// 'SOFTING-GmBH' => 'SOFTING GmBH',
+// 'Systembase-Co-Ltd' => 'Systembase Co Ltd',
+// 'Millennium-Engineering-Inc' => 'Millennium Engineering Inc',
+// 'Maverick-Networks' => 'Maverick Networks',
+// 'GVC-BCM-Advanced-Research' => 'GVC/BCM Advanced Research',
+// 'INOVA-Computers-GmBH---Co-KG' => 'INOVA Computers GmBH & Co KG',
+// 'MYTHOS-Systems-Inc' => 'MYTHOS Systems Inc',
+// 'HIVERTEC-Inc' => 'HIVERTEC Inc',
+// 'Advanced-MOS-Technology-Inc' => 'Advanced MOS Technology Inc',
+// 'Mentor-Graphics-Corp.' => 'Mentor Graphics Corp.',
+// 'Novaweb-Technologies-Inc' => 'Novaweb Technologies Inc',
+// 'Time-Space-Radio-AB' => 'Time Space Radio AB',
+// 'CTI-Inc' => 'CTI, Inc',
+// 'Guillemot-Corporation' => 'Guillemot Corporation',
+// 'Nextcom-K.K.' => 'Nextcom K.K.',
+// 'ENNOVATE-Networks-Inc' => 'ENNOVATE Networks Inc',
+// 'XPEED-Inc' => 'XPEED Inc',
+// 'Creamware-GmBH' => 'Creamware GmBH',
+// 'Quantum-Data-Corp.' => 'Quantum Data Corp.',
+// 'PROXIM-Inc' => 'PROXIM Inc',
+// 'Techsoft-Technology-Co-Ltd' => 'Techsoft Technology Co Ltd',
+// 'INTERNIX-Inc.' => 'INTERNIX Inc.',
+// 'SEMTECH-Corporation' => 'SEMTECH Corporation',
+// 'Globespan-Semiconductor-Inc.' => 'Globespan Semiconductor Inc.',
+// 'CARDIO-Control-N.V.' => 'CARDIO Control N.V.',
+// 'L3-Communications' => 'L3 Communications',
+// 'SPIDER-Communications-Inc.' => 'SPIDER Communications Inc.',
+// 'COMPAL-Electronics-Inc' => 'COMPAL Electronics Inc',
+// 'MYRICOM-Inc.' => 'MYRICOM Inc.',
+// 'DTK-Computer' => 'DTK Computer',
+// 'MEDIATEK-Corp.' => 'MEDIATEK Corp.',
+// 'Automation-Products-AB' => 'Automation Products AB',
+// 'Data-Race-Inc' => 'Data Race Inc',
+// 'Turbocomm-Tech.-Inc.' => 'Turbocomm Tech. Inc.',
+// 'ODIN-Telesystems-Inc' => 'ODIN Telesystems Inc',
+// 'PE-Logic-Corp.' => 'PE Logic Corp.',
+// 'Billionton-Systems-Inc' => 'Billionton Systems Inc',
+// 'NAKAYO-Telecommunications-Inc' => 'NAKAYO Telecommunications Inc',
+// 'Universal-Scientific-Ind.' => 'Universal Scientific Ind.',
+// 'Whistle-Communications' => 'Whistle Communications',
+// 'TEK-Microsystems-Inc.' => 'TEK Microsystems Inc.',
+// 'Ericsson-Axe-R---D' => 'Ericsson Axe R & D',
+// 'Computer-Hi-Tech-Co-Ltd' => 'Computer Hi-Tech Co Ltd',
+// 'Titan-Electronics-Inc' => 'Titan Electronics Inc',
+// 'CIRTECH-UK-Ltd' => 'CIRTECH (UK) Ltd',
+// 'Panacom-Technology-Corp' => 'Panacom Technology Corp',
+// 'Nitsuko-Corporation' => 'Nitsuko Corporation',
+// 'Accusys-Inc' => 'Accusys Inc',
+// 'Hirakawa-Hewtech-Corp' => 'Hirakawa Hewtech Corp',
+// 'HOPF-Elektronik-GmBH' => 'HOPF Elektronik GmBH',
+// 'AFAVLAB-Technology-Inc' => 'AFAVLAB Technology Inc',
+// 'Amplicon-Liveline-Ltd' => 'Amplicon Liveline Ltd',
+// 'Boulder-Design-Labs-Inc' => 'Boulder Design Labs Inc',
+// 'ASIC-Communications-Corp' => 'ASIC Communications Corp',
+// 'INVERTEX' => 'INVERTEX',
+// 'INFOLIBRIA' => 'INFOLIBRIA',
+// 'AMTELCO' => 'AMTELCO',
+// 'Broadcom-Corporation' => 'Broadcom Corporation',
+// 'Pixelfusion-Ltd' => 'Pixelfusion Ltd',
+// 'SHINING-Technology-Inc' => 'SHINING Technology Inc',
+// '3CX' => '3CX',
+// 'RAYCER-Inc' => 'RAYCER Inc',
+// 'GARNETS-System-CO-Ltd' => 'GARNETS System CO Ltd',
+// 'Planex-Communications-Inc' => 'Planex Communications, Inc',
+// 'SEIKO-EPSON-Corp' => 'SEIKO EPSON Corp',
+// 'ACQIRIS' => 'ACQIRIS',
+// 'DATAKINETICS-Ltd' => 'DATAKINETICS Ltd',
+// 'MASPRO-KENKOH-Corp' => 'MASPRO KENKOH Corp',
+// 'CARRY-Computer-ENG.-CO-Ltd' => 'CARRY Computer ENG. CO Ltd',
+// 'CANON-RESEACH-CENTRE-FRANCE' => 'CANON RESEACH CENTRE FRANCE',
+// 'Conexant-Systems-Inc.' => 'Conexant Systems, Inc.',
+// 'MOBILITY-Electronics' => 'MOBILITY Electronics',
+// 'BroadLogic' => 'BroadLogic',
+// 'SOPAC-Ltd' => 'SOPAC Ltd',
+// 'COYOTE-Technologies-LLC' => 'COYOTE Technologies LLC',
+// 'WOLF-Technology-Inc' => 'WOLF Technology Inc',
+// 'AUDIOCODES-Inc' => 'AUDIOCODES Inc',
+// 'AG-COMMUNICATIONS' => 'AG COMMUNICATIONS',
+// 'WANDEL---GOLTERMANN' => 'WANDEL & GOLTERMANN',
+// 'TRANSAS-MARINE-UK-Ltd' => 'TRANSAS MARINE (UK) Ltd',
+// 'Quadrics-Ltd' => 'Quadrics Ltd',
+// 'JAPAN-Computer-Industry-Inc' => 'JAPAN Computer Industry Inc',
+// 'ARCHTEK-TELECOM-Corp' => 'ARCHTEK TELECOM Corp',
+// 'TWINHEAD-INTERNATIONAL-Corp' => 'TWINHEAD INTERNATIONAL Corp',
+// 'DELTA-Electronics-Inc' => 'DELTA Electronics, Inc',
+// 'BANKSOFT-CANADA-Ltd' => 'BANKSOFT CANADA Ltd',
+// 'KAWASAKI-LSI-USA-Inc' => 'KAWASAKI LSI USA Inc',
+// 'KAISER-Electronics' => 'KAISER Electronics',
+// 'CHAMELEON-Systems-Inc' => 'CHAMELEON Systems Inc',
+// 'FORVUS-RESEARCH-Inc' => 'FORVUS RESEARCH Inc',
+// 'YAMASHITA-Systems-Corp' => 'YAMASHITA Systems Corp',
+// 'KYOPAL-CO-Ltd' => 'KYOPAL CO Ltd',
+// 'WARPSPPED-Inc' => 'WARPSPPED Inc',
+// 'C-PORT-Corp' => 'C-PORT Corp',
+// 'INTEC-GmbH' => 'INTEC GmbH',
+// 'BEHAVIOR-TECH-Computer-Corp' => 'BEHAVIOR TECH Computer Corp',
+// 'CENTILLIUM-Technology-Corp' => 'CENTILLIUM Technology Corp',
+// 'ROSUN-Technologies-Inc' => 'ROSUN Technologies Inc',
+// 'Raychem' => 'Raychem',
+// 'TFL-LAN-Inc' => 'TFL LAN Inc',
+// 'Advent-design' => 'Advent design',
+// 'MYSON-Technology-Inc' => 'MYSON Technology Inc',
+// 'ECHOTEK-Corp' => 'ECHOTEK Corp',
+// 'Globetek' => 'Globetek',
+// 'COMBOX-Ltd' => 'COMBOX Ltd',
+// 'DIGITAL-AUDIO-LABS-Inc' => 'DIGITAL AUDIO LABS Inc',
+// 'MATRIX-Corp' => 'MATRIX Corp',
+// 'TOPIC-SEMICONDUCTOR-Corp' => 'TOPIC SEMICONDUCTOR Corp',
+// 'CHAPLET-System-Inc' => 'CHAPLET System Inc',
+// 'BELL-Corp' => 'BELL Corp',
+// 'MainPine-Ltd' => 'MainPine Ltd',
+// 'MUSIC-Semiconductors' => 'MUSIC Semiconductors',
+// 'ENE-Technology-Inc' => 'ENE Technology Inc',
+// 'IMPACT-Technologies' => 'IMPACT Technologies',
+// 'ISS-Inc' => 'ISS, Inc',
+// 'SOLECTRON' => 'SOLECTRON',
+// 'ACKSYS' => 'ACKSYS',
+// 'AMERICAN-MICROSystems-Inc' => 'AMERICAN MICROSystems Inc',
+// 'QUICKTURN-DESIGN-Systems' => 'QUICKTURN DESIGN Systems',
+// 'FLYTECH-Technology-CO-Ltd' => 'FLYTECH Technology CO Ltd',
+// 'MACRAIGOR-Systems-LLC' => 'MACRAIGOR Systems LLC',
+// 'QUANTA-Computer-Inc' => 'QUANTA Computer Inc',
+// 'MELEC-Inc' => 'MELEC Inc',
+// 'PHILIPS---CRYPTO' => 'PHILIPS - CRYPTO',
+// 'ACQIS-Technology-Inc' => 'ACQIS Technology Inc',
+// 'CHRYON-Corp' => 'CHRYON Corp',
+// 'ECHELON-Corp' => 'ECHELON Corp',
+// 'BALTIMORE' => 'BALTIMORE',
+// 'ROAD-Corp' => 'ROAD Corp',
+// 'EVERGREEN-Technologies-Inc' => 'EVERGREEN Technologies Inc',
+// 'ACTIS-Computer' => 'ACTIS Computer',
+// 'DATALEX-COMMUNCATIONS' => 'DATALEX COMMUNCATIONS',
+// 'ARALION-Inc' => 'ARALION Inc',
+// 'ONO-SOKKI' => 'ONO SOKKI',
+// 'TERRATEC-Electronic-GmbH' => 'TERRATEC Electronic GmbH',
+// 'ANTAL-Electronic' => 'ANTAL Electronic',
+// 'FILANET-Corp' => 'FILANET Corp',
+// 'TECHWELL-Inc' => 'TECHWELL Inc',
+// 'MIPS-Technologies-Inc.' => 'MIPS Technologies, Inc.',
+// 'PROVIDEO-MULTIMEDIA-Co-Ltd' => 'PROVIDEO MULTIMEDIA Co Ltd',
+// 'MACHONE-Communications' => 'MACHONE Communications',
+// 'SILICON-Laboratories' => 'SILICON Laboratories',
+// 'DCM-DATA-Systems' => 'DCM DATA Systems',
+// 'VISIONTEK' => 'VISIONTEK',
+// 'IOI-Technology-Corp' => 'IOI Technology Corp',
+// 'MITUTOYO-Corp' => 'MITUTOYO Corp',
+// 'JET-PROPULSION-Laboratory' => 'JET PROPULSION Laboratory',
+// 'MAX-Technologies-Inc' => 'MAX Technologies Inc',
+// 'COMPUTEX-Co-Ltd' => 'COMPUTEX Co Ltd',
+// 'VISUAL-Technology-Inc' => 'VISUAL Technology Inc',
+// 'SERVOTEST-Ltd' => 'SERVOTEST Ltd',
+// 'STRATABEAM-Technology' => 'STRATABEAM Technology',
+// 'OPEN-NETWORK-Co-Ltd' => 'OPEN NETWORK Co Ltd',
+// 'RACAL-AIRTECH-Ltd' => 'RACAL AIRTECH Ltd',
+// 'CHICONY-Electronics-Co-Ltd' => 'CHICONY Electronics Co Ltd',
+// 'PROLINK-Microsystems-Corp' => 'PROLINK Microsystems Corp',
+// 'GESYTEC-GmBH' => 'GESYTEC GmBH',
+// 'PLD-APPLICATIONS' => 'PLD APPLICATIONS',
+// 'MEDIASTAR-Co-Ltd' => 'MEDIASTAR Co Ltd',
+// 'CLEVO-KAPOK-Computer' => 'CLEVO/KAPOK Computer',
+// 'SI-LOGIC-Ltd' => 'SI LOGIC Ltd',
+// 'INNOMEDIA-Inc' => 'INNOMEDIA Inc',
+// 'PROTAC-INTERNATIONAL-Corp' => 'PROTAC INTERNATIONAL Corp',
+// 'Cemax-Icon-Inc' => 'Cemax-Icon Inc',
+// 'Mac-System-Co-Ltd' => 'Mac System Co Ltd',
+// 'LP-Elektronik-GmbH' => 'LP Elektronik GmbH',
+// 'Perle-Systems-Ltd' => 'Perle Systems Ltd',
+// 'Viewgraphics-Inc' => 'Viewgraphics Inc',
+// 'Symbol-Technologies' => 'Symbol Technologies',
+// 'A-Trend-Technology-Co-Ltd' => 'A-Trend Technology Co Ltd',
+// 'Biostar-Microtech-Intl-Corp' => 'Biostar Microtech Intl Corp',
+// 'Ardent-Technologies-Inc' => 'Ardent Technologies Inc',
+// 'Jungsoft' => 'Jungsoft',
+// 'DDK-Electronics-Inc' => 'DDK Electronics Inc',
+// 'Palit-Microsystems-Inc.' => 'Palit Microsystems Inc.',
+// 'Avtec-Systems' => 'Avtec Systems',
+// '2wire-Inc' => '2wire Inc',
+// 'Vidac-Electronics-GmbH' => 'Vidac Electronics GmbH',
+// 'Alpha-Top-Corp' => 'Alpha-Top Corp',
+// 'Alfa-Inc' => 'Alfa Inc',
+// 'Lecroy-Corp' => 'Lecroy Corp',
+// 'Contemporary-Controls' => 'Contemporary Controls',
+// 'Otis-Elevator-Company' => 'Otis Elevator Company',
+// 'Lattice---Vantis' => 'Lattice - Vantis',
+// 'Fairchild-Semiconductor' => 'Fairchild Semiconductor',
+// 'Viewcast-COM' => 'Viewcast COM',
+// 'HITT' => 'HITT',
+// 'Dual-Technology-Corp' => 'Dual Technology Corp',
+// 'Japan-Elecronics-Ind-Inc' => 'Japan Elecronics Ind Inc',
+// 'Star-Multimedia-Corp' => 'Star Multimedia Corp',
+// 'Eurosoft-UK' => 'Eurosoft (UK)',
+// 'Gemflex-Networks' => 'Gemflex Networks',
+// 'Transition-Networks' => 'Transition Networks',
+// 'PX-Instruments-Technology-Ltd' => 'PX Instruments Technology Ltd',
+// 'Primex-Aerospace-Co' => 'Primex Aerospace Co',
+// 'SEH-Computertechnik-GmbH' => 'SEH Computertechnik GmbH',
+// 'Cytec-Corp' => 'Cytec Corp',
+// 'Inet-Technologies-Inc' => 'Inet Technologies Inc',
+// 'Uniwill-Computer-Corp' => 'Uniwill Computer Corp',
+// 'Logitron' => 'Logitron',
+// 'Lancast-Inc' => 'Lancast Inc',
+// 'Konica-Corp' => 'Konica Corp',
+// 'Solidum-Systems-Corp' => 'Solidum Systems Corp',
+// 'Atlantek-Microsystems-Pty-Ltd' => 'Atlantek Microsystems Pty Ltd',
+// 'Digalog-Systems-Inc' => 'Digalog Systems Inc',
+// 'Allied-Data-Technologies' => 'Allied Data Technologies',
+// 'Point-Multimedia-Systems' => 'Point Multimedia Systems',
+// 'Lara-Technology-Inc' => 'Lara Technology Inc',
+// 'Ditect-Coop' => 'Ditect Coop',
+// '3PAR-Inc.' => '3PAR Inc.',
+// 'ARN' => 'ARN',
+// 'Syba-Tech-Ltd' => 'Syba Tech Ltd',
+// 'Bops-Inc' => 'Bops Inc',
+// 'Netgame-Ltd' => 'Netgame Ltd',
+// 'Diva-Systems-Corp' => 'Diva Systems Corp',
+// 'Folsom-Research-Inc' => 'Folsom Research Inc',
+// 'Memec-Design-Services' => 'Memec Design Services',
+// 'Granite-Microsystems' => 'Granite Microsystems',
+// 'Delta-Electronics-Inc' => 'Delta Electronics Inc',
+// 'General-Instrument' => 'General Instrument',
+// 'Faraday-Technology-Corp' => 'Faraday Technology Corp',
+// 'Stratus-Computer-Systems' => 'Stratus Computer Systems',
+// 'A-Max-Technology-Co-Ltd' => 'A-Max Technology Co Ltd',
+// 'Galea-Network-Security' => 'Galea Network Security',
+// 'Compumaster-SRL' => 'Compumaster SRL',
+// 'Geocast-Network-Systems' => 'Geocast Network Systems',
+// 'Catalyst-Enterprises-Inc' => 'Catalyst Enterprises Inc',
+// 'Italtel' => 'Italtel',
+// 'X-Net-OY' => 'X-Net OY',
+// 'Toyota-Macs-Inc' => 'Toyota Macs Inc',
+// 'SSE-Telecom-Inc' => 'SSE Telecom Inc',
+// 'Moreton-Bay' => 'Moreton Bay',
+// 'Bluesteel-Networks-Inc' => 'Bluesteel Networks Inc',
+// 'North-Atlantic-Instruments' => 'North Atlantic Instruments',
+// 'VMware' => 'VMware',
+// 'Amersham-Pharmacia-Biotech' => 'Amersham Pharmacia Biotech',
+// 'Zoltrix-International-Ltd' => 'Zoltrix International Ltd',
+// 'Source-Technology-Inc' => 'Source Technology Inc',
+// 'Mosaid-Technologies-Inc' => 'Mosaid Technologies Inc',
+// 'Mellanox-Technologies' => 'Mellanox Technologies',
+// 'CCI-TRIAD' => 'CCI/TRIAD',
+// 'Cimetrics-Inc' => 'Cimetrics Inc',
+// 'Texas-Memory-Systems-Inc' => 'Texas Memory Systems Inc',
+// 'Sandisk-Corp' => 'Sandisk Corp',
+// 'ADDI-DATA-GmbH' => 'ADDI-DATA GmbH',
+// 'Impacct-Technology-Corp' => 'Impacct Technology Corp',
+// 'Portwell-Inc' => 'Portwell Inc',
+// 'Agilent-Technologies' => 'Agilent Technologies',
+// 'DFI-Inc' => 'DFI Inc',
+// 'Sola-Electronics' => 'Sola Electronics',
+// 'High-Tech-Computer-Corp-HTC' => 'High Tech Computer Corp (HTC)',
+// 'BVM-Ltd' => 'BVM Ltd',
+// 'Quantel' => 'Quantel',
+// 'Newer-Technology-Inc' => 'Newer Technology Inc',
+// 'Taiwan-Mycomp-Co-Ltd' => 'Taiwan Mycomp Co Ltd',
+// 'EVSX-Inc' => 'EVSX Inc',
+// 'Procomp-Informatics-Ltd' => 'Procomp Informatics Ltd',
+// 'Penta-Media-Co-Ltd' => 'Penta Media Co Ltd',
+// 'Serome-Technology-Inc' => 'Serome Technology Inc',
+// 'Bitboys-OY' => 'Bitboys OY',
+// 'AG-Electronics-Ltd' => 'AG Electronics Ltd',
+// 'Hotrail-Inc' => 'Hotrail Inc',
+// 'Dreamtech-Co-Ltd' => 'Dreamtech Co Ltd',
+// 'Genrad-Inc' => 'Genrad Inc',
+// 'Hilscher-GmbH' => 'Hilscher GmbH',
+// 'Infineon-Technologies-AG' => 'Infineon Technologies AG',
+// 'NDS-Technologies-Israel-Ltd' => 'NDS Technologies Israel Ltd',
+// 'Iwill-Corp' => 'Iwill Corp',
+// 'Tatung-Co' => 'Tatung Co',
+// 'Entridia-Corp' => 'Entridia Corp',
+// 'Rockwell-Collins-Inc' => 'Rockwell-Collins Inc',
+// 'Cybernetics-Technology-Co-Ltd' => 'Cybernetics Technology Co Ltd',
+// 'Super-Micro-Computer-Inc' => 'Super Micro Computer Inc',
+// 'Cyberfirm-Inc' => 'Cyberfirm Inc',
+// 'Applied-Computing-Systems-Inc' => 'Applied Computing Systems Inc',
+// 'Litronic-Inc' => 'Litronic Inc',
+// 'Sigmatel-Inc' => 'Sigmatel Inc',
+// 'Malleable-Technologies-Inc' => 'Malleable Technologies Inc',
+// 'Infinilink-Corp' => 'Infinilink Corp',
+// 'Cacheflow-Inc' => 'Cacheflow Inc',
+// 'Voice-Technologies-Group-Inc' => 'Voice Technologies Group Inc',
+// 'Quicknet-Technologies-Inc' => 'Quicknet Technologies Inc',
+// 'Networth-Technologies-Inc' => 'Networth Technologies Inc',
+// 'VSN-Systemen-BV' => 'VSN Systemen BV',
+// 'Valley-technologies-Inc' => 'Valley technologies Inc',
+// 'Agere-Inc' => 'Agere Inc',
+// 'Get-Engineering-Corp' => 'Get Engineering Corp',
+// 'National-Datacomm-Corp' => 'National Datacomm Corp',
+// 'Pacific-Digital-Corp' => 'Pacific Digital Corp',
+// 'Tokyo-Denshi-Sekei-K.K.' => 'Tokyo Denshi Sekei K.K.',
+// 'Beckhoff-GmbH' => 'Beckhoff GmbH',
+// 'Macrolink-Inc' => 'Macrolink Inc',
+// 'In-Win-Development-Inc' => 'In Win Development Inc',
+// 'Intelligent-Paradigm-Inc' => 'Intelligent Paradigm Inc',
+// 'B-Tree-Systems-Inc' => 'B-Tree Systems Inc',
+// 'Times-N-Systems-Inc' => 'Times N Systems Inc',
+// 'Diagnostic-Instruments-Inc' => 'Diagnostic Instruments Inc',
+// 'Digitmedia-Corp' => 'Digitmedia Corp',
+// 'Valuesoft' => 'Valuesoft',
+// 'Power-Micro-Research' => 'Power Micro Research',
+// 'Extreme-Packet-Device-Inc' => 'Extreme Packet Device Inc',
+// 'Banctec' => 'Banctec',
+// 'Koga-Electronics-Co' => 'Koga Electronics Co',
+// 'Zenith-Electronics-Corp' => 'Zenith Electronics Corp',
+// 'J.P.-Axzam-Corp' => 'J.P. Axzam Corp',
+// 'Zilog-Inc' => 'Zilog Inc',
+// 'Techsan-Electronics-Co-Ltd' => 'Techsan Electronics Co Ltd',
+// 'N-CUBED.NET' => 'N-CUBED.NET',
+// 'Kinpo-Electronics-Inc' => 'Kinpo Electronics Inc',
+// 'Fastpoint-Technologies-Inc' => 'Fastpoint Technologies Inc',
+// 'Northrop-Grumman---Canada-Ltd' => 'Northrop Grumman - Canada Ltd',
+// 'Tenta-Technology' => 'Tenta Technology',
+// 'Prosys-tec-Inc' => 'Prosys-tec Inc',
+// 'Nokia-Wireless-Communications' => 'Nokia Wireless Communications',
+// 'Pairgain-Technologies' => 'Pairgain Technologies',
+// 'Europop-AG' => 'Europop AG',
+// 'Scimetric-Instruments-Inc' => 'Scimetric Instruments Inc',
+// 'Telesynergy-Research-Inc.' => 'Telesynergy Research Inc.',
+// 'Stone-Ridge-Technology' => 'Stone Ridge Technology',
+// 'FarSite-Communications-Ltd' => 'FarSite Communications Ltd',
+// 'Rioworks' => 'Rioworks',
+// 'TDK-Semiconductor-Corp.' => 'TDK Semiconductor Corp.',
+// 'Kongsberg-Spacetec-AS' => 'Kongsberg Spacetec AS',
+// 'Packard-Bell-B.V.' => 'Packard Bell B.V.',
+// 'Smart-Link-Ltd.' => 'Smart Link Ltd.',
+// 'MKNet-Corp.' => 'MKNet Corp.',
+// 'Epix-Inc' => 'Epix Inc',
+// 'Linux-Media-Labs-LLC' => 'Linux Media Labs, LLC',
+// 'Worldspace-Corp.' => 'Worldspace Corp.',
+// 'Actiontec-Electronics-Inc' => 'Actiontec Electronics Inc',
+// 'Bernecker-+-Rainer' => 'Bernecker + Rainer',
+// 'NetEffect' => 'NetEffect',
+// 'Tokyo-Electron-Device-Ltd.' => 'Tokyo Electron Device Ltd.',
+// 'ZyDAS-Technology-Corp.' => 'ZyDAS Technology Corp.',
+// 'ONNTO-Corp.' => 'ONNTO Corp.',
+// 'Hercules' => 'Hercules',
+// 'XFX-Pine-Group-Inc.' => 'XFX Pine Group Inc.',
+// 'CastleNet-Technology-Inc.' => 'CastleNet Technology Inc.',
+// 'Atheros-Communications-Inc.' => 'Atheros Communications Inc.',
+// 'EPoX-Computer-Co.-Ltd.' => 'EPoX Computer Co., Ltd.',
+// 'Netcell-Corporation' => 'Netcell Corporation',
+// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.',
+// 'Global-Sun-Technology-Inc' => 'Global Sun Technology Inc',
+// 'SafeNet-Inc' => 'SafeNet Inc',
+// 'SparkLAN-Communications-Inc.' => 'SparkLAN Communications, Inc.',
+// 'Aspex-Semiconductor-Ltd' => 'Aspex Semiconductor Ltd',
+// 'Sonnet-Technologies-Inc.' => 'Sonnet Technologies, Inc.',
+// 'Creatix-Polymedia-GmbH' => 'Creatix Polymedia GmbH',
+// 'Micrel-Kendin' => 'Micrel-Kendin',
+// 'Octasic-Inc.' => 'Octasic Inc.',
+// 'EONIC-B.V.-The-Netherlands' => 'EONIC B.V. The Netherlands',
+// 'CENATEK-Inc' => 'CENATEK Inc',
+// 'Densitron-Technologies' => 'Densitron Technologies',
+// 'Roland-Corp.' => 'Roland Corp.',
+// 'Acromag-Inc.' => 'Acromag, Inc.',
+// 'Advantech-Co.-Ltd.' => 'Advantech Co., Ltd.',
+// 'PIKA-Technologies-Inc.' => 'PIKA Technologies Inc.',
+// 'Geotest-MTS' => 'Geotest-MTS',
+// 'European-Space-Agency' => 'European Space Agency',
+// 'Intellon-Corp.' => 'Intellon Corp.',
+// 'U.S.-Robotics' => 'U.S. Robotics',
+// 'Sycron-N.-V.' => 'Sycron N. V.',
+// 'Jetway-Information-Co.-Ltd.' => 'Jetway Information Co., Ltd.',
+// 'Vweb-Corp' => 'Vweb Corp',
+// 'VideoTele.com-Inc.' => 'VideoTele.com, Inc.',
+// 'Digital-First-Inc.' => 'Digital First, Inc.',
+// 'NetOctave' => 'NetOctave',
+// 'YottaYotta-Inc.' => 'YottaYotta Inc.',
+// 'EZChip-Technologies' => 'EZChip Technologies',
+// 'Accelerated-Encryption' => 'Accelerated Encryption',
+// 'Fujitsu-Technology-Solutions' => 'Fujitsu Technology Solutions',
+// 'Aten-International-Co.-Ltd.' => 'Aten International Co. Ltd.',
+// 'Linksys' => 'Linksys',
+// 'Altima-nee-Broadcom' => 'Altima (nee Broadcom)',
+// 'Peppercon-AG' => 'Peppercon AG',
+// 'ViXS-Systems-Inc.' => 'ViXS Systems, Inc.',
+// 'RLX-Technologies' => 'RLX Technologies',
+// 'PC-Partner-Limited' => 'PC Partner Limited',
+// 'WellX-Telecom-SA' => 'WellX Telecom SA',
+// 'AudioScience-Inc' => 'AudioScience Inc',
+// 'Sanera-Systems-Inc.' => 'Sanera Systems, Inc.',
+// 'TEDIA-spol.-s-r.-o.' => 'TEDIA spol. s r. o.',
+// 'InnoVISION-Multimedia-Ltd.' => 'InnoVISION Multimedia Ltd.',
+// 'Cavium-Networks' => 'Cavium Networks',
+// 'Ennyah-Technologies-Corp.' => 'Ennyah Technologies Corp.',
+// 'Techwell-Inc.' => 'Techwell Inc.',
+// 'Belkin' => 'Belkin',
+// 'id-Quantique' => 'id Quantique',
+// 'Data-Patterns' => 'Data Patterns',
+// 'Genesys-Logic-Inc' => 'Genesys Logic, Inc',
+// 'Lenovo' => 'Lenovo',
+// 'Phillips-Components' => 'Phillips Components',
+// 'Hawking-Technologies' => 'Hawking Technologies',
+// 'Indra-Networks-Inc.' => 'Indra Networks, Inc.',
+// 'Wistron-Corp.' => 'Wistron Corp.',
+// 'Newisys-Inc.' => 'Newisys, Inc.',
+// 'Airgo-Networks-Inc' => 'Airgo Networks Inc',
+// 'NetChip-Technology-Inc' => 'NetChip Technology, Inc',
+// 'Z-Com-Inc.' => 'Z-Com, Inc.',
+// 'Areca-Technology-Corp.' => 'Areca Technology Corp.',
+// 'Cray-Inc' => 'Cray Inc',
+// 'KWorld-Computer-Co.-Ltd.' => 'KWorld Computer Co. Ltd.',
+// 'Sectra-AB' => 'Sectra AB',
+// 'Entropic-Communications-Inc.' => 'Entropic Communications Inc.',
+// 'Connect-Components-Ltd' => 'Connect Components Ltd',
+// 'Albatron-Corp.' => 'Albatron Corp.',
+// 'RDC-Semiconductor-Inc.' => 'RDC Semiconductor, Inc.',
+// 'Topdek-Semiconductor-Inc.' => 'Topdek Semiconductor Inc.',
+// 'InProComm-Inc.' => 'InProComm Inc.',
+// 'Benq-Corporation' => 'Benq Corporation',
+// 'ProdaSafe-GmbH' => 'ProdaSafe GmbH',
+// 'Euresys-S.A.' => 'Euresys S.A.',
+// 'Lumanate-Inc.' => 'Lumanate, Inc.',
+// 'Ambient-Technologies-Inc' => 'Ambient Technologies Inc',
+// 'RaLink' => 'RaLink',
+// 'Devolo-AG' => 'Devolo AG',
+// 'InfiniCon-Systems-Inc.' => 'InfiniCon Systems Inc.',
+// 'Twinhan-Technology-Co.-Ltd' => 'Twinhan Technology Co. Ltd',
+// 'SiteCom-Europe-BV' => 'SiteCom Europe BV',
+// 'Raza-Microelectronics-Inc.' => 'Raza Microelectronics, Inc.',
+// 'Credence-Systems-Corporation' => 'Credence Systems Corporation',
+// 'MikroM-GmbH' => 'MikroM GmbH',
+// 'ASRock-Incorporation' => 'ASRock Incorporation',
+// 'Thales-Computers' => 'Thales Computers',
+// 'Microtune-Inc.' => 'Microtune, Inc.',
+// 'Anritsu-Corp.' => 'Anritsu Corp.',
+// 'LG-Electronics-Inc.' => 'LG Electronics, Inc.',
+// 'Compro-Technology-Inc.' => 'Compro Technology, Inc.',
+// 'Wistron-NeWeb-Corp.' => 'Wistron NeWeb Corp.',
+// 'SilverBack' => 'SilverBack',
+// 'Topspin-Communications' => 'Topspin Communications',
+// 'Humusoft-s.r.o.' => 'Humusoft, s.r.o.',
+// 'WiNRADiO-Communications' => 'WiNRADiO Communications',
+// 'L-3-Communications' => 'L-3 Communications',
+// 'Avvida-Systems-Inc.' => 'Avvida Systems Inc.',
+// 'Varisys-Ltd' => 'Varisys Ltd',
+// 'Ample-Communications-Inc' => 'Ample Communications, Inc',
+// 'Egenera-Inc.' => 'Egenera, Inc.',
+// 'KNC-One' => 'KNC One',
+// 'AMtek' => 'AMtek',
+// 'Astute-Networks-Inc.' => 'Astute Networks Inc.',
+// 'Stretch-Inc.' => 'Stretch Inc.',
+// 'AT-T' => 'AT&T',
+// 'DViCO-Corporation' => 'DViCO Corporation',
+// 'Ammasso' => 'Ammasso',
+// 'Info-Tek-Corp.' => 'Info-Tek Corp.',
+// 'Cray-Inc Nee-Octigabay-System' => 'Cray Inc Nee Octigabay System',
+// 'ARVOO-Engineering-BV' => 'ARVOO Engineering BV',
+// 'Sitecom' => 'Sitecom',
+// 'Dialogue-Technology-Corp.' => 'Dialogue Technology Corp.',
+// 'Artimi-Inc' => 'Artimi Inc',
+// 'MPL-AG' => 'MPL AG',
+// 'Cesnet-z.s.p.o.' => 'Cesnet, z.s.p.o.',
+// 'Chenming-Mold-Ind.-Corp.' => 'Chenming Mold Ind. Corp.',
+// 'Spectrum-GmbH' => 'Spectrum GmbH',
+// 'Napatech-A-S' => 'Napatech A/S',
+// 'NextIO' => 'NextIO',
+// 'Commtech-Inc.' => 'Commtech, Inc.',
+// 'Resilience-Corporation' => 'Resilience Corporation',
+// 'Micronas-USA-Inc.' => 'Micronas USA, Inc.',
+// 'Renesas-Technology-Corp.' => 'Renesas Technology Corp.',
+// 'Soltek-Computer-Inc.' => 'Soltek Computer Inc.',
+// 'Sangoma-Technologies-Corp.' => 'Sangoma Technologies Corp.',
+// 'Solarflare-Communications' => 'Solarflare Communications',
+// 'TransDimension' => 'TransDimension',
+// 'Option-N.V.' => 'Option N.V.',
+// 'DiBcom' => 'DiBcom',
+// 'MAXIM-Integrated-Products' => 'MAXIM Integrated Products',
+// 'Comtech-AHA-Corp.' => 'Comtech AHA Corp.',
+// 'ClearSpeed-Technology-plc' => 'ClearSpeed Technology plc',
+// 'C-guys-Inc.' => 'C-guys, Inc.',
+// 'Enterasys-Networks' => 'Enterasys Networks',
+// 'DapTechnology-B.V.' => 'DapTechnology B.V.',
+// 'Curtis-Inc.' => 'Curtis, Inc.',
+// 'Freescale-Semiconductor-Inc' => 'Freescale Semiconductor Inc',
+// 'Faster-Technology-LLC.' => 'Faster Technology, LLC.',
+// 'PA-Semi-Inc' => 'PA Semi, Inc',
+// 'Orad-Hi-Tec-Systems' => 'Orad Hi-Tec Systems',
+// 'Sensory-Networks-Inc.' => 'Sensory Networks Inc.',
+// 'Club-3D-BV' => 'Club-3D BV',
+// 'AGEIA-Technologies-Inc.' => 'AGEIA Technologies, Inc.',
+// 'Parsec' => 'Parsec',
+// 'JMicron-Technology-Corp.' => 'JMicron Technology Corp.',
+// 'Montilio-Inc.' => 'Montilio Inc.',
+// 'Nallatech-Ltd.' => 'Nallatech Ltd.',
+// 'Pulse-LINK-Inc.' => 'Pulse-LINK, Inc.',
+// 'Xsigo-Systems' => 'Xsigo Systems',
+// 'Auvitek' => 'Auvitek',
+// 'DAQDATA-GmbH' => 'DAQDATA GmbH',
+// 'Kasten-Chase-Applied-Research' => 'Kasten Chase Applied Research',
+// 'Progeny-Systems-Corporation' => 'Progeny Systems Corporation',
+// 'Exegy-Inc.' => 'Exegy Inc.',
+// 'Quixant-Limited' => 'Quixant Limited',
+// 'Pico-Computing' => 'Pico Computing',
+// 'Vector-Informatik-GmbH' => 'Vector Informatik GmbH',
+// 'DDRdrive-LLC' => 'DDRdrive LLC',
+// 'Netronome-Systems-Inc.' => 'Netronome Systems, Inc.',
+// 'ASPEED-Technology-Inc.' => 'ASPEED Technology, Inc.',
+// 'Kvaser-AB' => 'Kvaser AB',
+// 'Sierra-semiconductor' => 'Sierra semiconductor',
+// 'DekTec-Digital-Video-B.V.' => 'DekTec Digital Video B.V.',
+// 'Force10-Networks-Inc.' => 'Force10 Networks, Inc.',
+// 'GFaI-e.V.' => 'GFaI e.V.',
+// '3Leaf-Systems-Inc.' => '3Leaf Systems, Inc.',
+// 'Ambric-Inc.' => 'Ambric Inc.',
+// 'Fortinet-Inc.' => 'Fortinet, Inc.',
+// 'Ascom-AG' => 'Ascom AG',
+// 'AzureWave' => 'AzureWave',
+// 'Hectronic-AB' => 'Hectronic AB',
+// 'Bigfoot-Networks-Inc.' => 'Bigfoot Networks, Inc.',
+// 'Highly-Reliable-Systems' => 'Highly Reliable Systems',
+// 'Razer-USA-Ltd.' => 'Razer USA Ltd.',
+// 'Celoxica' => 'Celoxica',
+// 'Aprius-Inc.' => 'Aprius Inc.',
+// 'System-TALKS-Inc.' => 'System TALKS Inc.',
+// 'VirtenSys-Limited' => 'VirtenSys Limited',
+// 'XenSource-Inc.' => 'XenSource, Inc.',
+// 'Violin-Memory-Inc' => 'Violin Memory, Inc',
+// 'Wavesat' => 'Wavesat',
+// 'Lightfleet-Corporation' => 'Lightfleet Corporation',
+// 'Virident-Systems-Inc.' => 'Virident Systems Inc.',
+// 'Commex-Technologies' => 'Commex Technologies',
+// 'MEN-Mikro-Elektronik' => 'MEN Mikro Elektronik',
+// 'Verigy-Pte.-Ltd.' => 'Verigy Pte. Ltd.',
+// 'DRS-Technologies' => 'DRS Technologies',
+// 'Ciprico-Inc.' => 'Ciprico, Inc.',
+// 'Global-Velocity-Inc.' => 'Global Velocity, Inc.',
+// 'CalDigit-Inc.' => 'CalDigit, Inc.',
+// 'Espia-Srl' => 'Espia Srl',
+// 'Spectracom-Corporation' => 'Spectracom Corporation',
+// 'Spin-Master-Ltd.' => 'Spin Master Ltd.',
+// 'Google-Inc.' => 'Google, Inc.',
+// 'Silicon-Software-GmbH' => 'Silicon Software GmbH',
+// 'Wolfson-Microelectronics' => 'Wolfson Microelectronics',
+// 'Fusion-io' => 'Fusion-io',
+// 'Caustic-Graphics-Inc.' => 'Caustic Graphics Inc.',
+// 'Netezza-Corp.' => 'Netezza Corp.',
+// 'J---W-Electronics-Co.-Ltd.' => 'J & W Electronics Co., Ltd.',
+// 'Magnum-Semiconductor-Inc' => 'Magnum Semiconductor, Inc,',
+// 'Jaton-Corp' => 'Jaton Corp',
+// 'K-F-Computing-Research-Co.' => 'K&F Computing Research Co.',
+// 'Red-Hat-Inc.' => 'Red Hat, Inc.',
+// 'Westar-Display-Technologies' => 'Westar Display Technologies',
+// 'Teradata-Corp.' => 'Teradata Corp.',
+// 'Marvell-Technology-Group-Ltd.' => 'Marvell Technology Group Ltd.',
+// 'NetUP-Inc.' => 'NetUP Inc.',
+// 'Fresco-Logic' => 'Fresco Logic',
+// 'ReFLEX-CES' => 'ReFLEX CES',
+// 'Bluecherry' => 'Bluecherry',
+// 'VTI-Instruments-Corporation' => 'VTI Instruments Corporation',
+// 'Symphony' => 'Symphony',
+// 'DPT' => 'DPT',
+// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.',
+// 'Tehuti-Networks-Ltd.' => 'Tehuti Networks Ltd.',
+// 'Cognio-Inc.' => 'Cognio Inc.',
+// 'SUNIX-Co.-Ltd.' => 'SUNIX Co., Ltd.',
+// 'Smart-Link-Ltd.' => 'Smart Link Ltd.',
+// 'Temporal-Research-Ltd' => 'Temporal Research Ltd',
+// 'Smart-Link-Ltd.' => 'Smart Link Ltd.',
+// 'Smart-Link-Ltd.' => 'Smart Link Ltd.',
+// 'ZyDAS-Technology-Corp.' => 'ZyDAS Technology Corp.',
+// '21st-Century-Computer-Corp.' => '21st Century Computer Corp.',
+// 'Racore' => 'Racore',
+// 'Kingston-Technologies' => 'Kingston Technologies',
+// 'Xantel-Corporation' => 'Xantel Corporation',
+// 'Chaintech-Computer-Co.-Ltd' => 'Chaintech Computer Co. Ltd',
+// 'AVID-Technology-Inc.' => 'AVID Technology Inc.',
+// '82q35-Express-MEI-Controller' => '82q35 Express MEI Controller',
+// '3D-Vision---' => '3D Vision(???)',
+// 'Hansol-Electronics-Inc.' => 'Hansol Electronics Inc.',
+// 'Post-Impression-Systems.' => 'Post Impression Systems.',
+// 'Hint-Corp' => 'Hint Corp',
+// 'Quantum-Designs-H.K.-Inc' => 'Quantum Designs (H.K.) Inc',
+// 'Bihl+Wiedemann-GmbH' => 'Bihl+Wiedemann GmbH',
+// 'Arastra-Inc.' => 'Arastra Inc.',
+// 'ARCOM-Control-Systems-Ltd' => 'ARCOM Control Systems Ltd',
+// 'eVga.com.-Corp.' => 'eVga.com. Corp.',
+// '4Links' => '4Links',
+// '3DLabs' => '3DLabs',
+// 'Avance-Logic-Inc.' => 'Avance Logic Inc.',
+// 'Addtron-Technology-Co-Inc.' => 'Addtron Technology Co, Inc.',
+// 'NetXen-Incorporated' => 'NetXen Incorporated',
+// 'Digital-Equipment-Corp' => 'Digital Equipment Corp',
+// 'Alpha-Data' => 'Alpha Data',
+// 'ONA-Electroerosion' => 'ONA Electroerosion',
+// 'Auzentech-Inc.' => 'Auzentech, Inc.',
+// 'Aladdin-Knowledge-Systems' => 'Aladdin Knowledge Systems',
+// 'CAST-Navigation-LLC' => 'CAST Navigation LLC',
+// 'Internext-Compression-Inc' => 'Internext Compression Inc',
+// 'Bridgeport-machines' => 'Bridgeport machines',
+// 'Cogetec-Informatique-Inc' => 'Cogetec Informatique Inc',
+// 'Baldor-Electric-Company' => 'Baldor Electric Company',
+// 'Umax-Computer-Corp' => 'Umax Computer Corp',
+// 'RedCreek-Communications-Inc' => 'RedCreek Communications Inc',
+// 'Growth-Networks' => 'Growth Networks',
+// 'ACCES-I-O-Products-Inc.' => 'ACCES I/O Products, Inc.',
+// 'Axil-Computer-Inc' => 'Axil Computer Inc',
+// 'NetVin' => 'NetVin',
+// 'Buslogic-Inc.' => 'Buslogic Inc.',
+// 'LUNG-HWA-Electronics' => 'LUNG HWA Electronics',
+// 'SBS-Technologies' => 'SBS Technologies',
+// 'Seanix-Technology-Inc' => 'Seanix Technology Inc',
+// 'MediaQ-Inc.' => 'MediaQ Inc.',
+// 'Microtechnica-Co-Ltd' => 'Microtechnica Co Ltd',
+// 'MATRIX-VISION-GmbH' => 'MATRIX VISION GmbH',
+// 'ILC-Data-Device-Corp' => 'ILC Data Device Corp',
+// 'University-of-Toronto' => 'University of Toronto',
+// 'GemTek-Technology-Corporation' => 'GemTek Technology Corporation',
+// 'Voyetra-Technologies' => 'Voyetra Technologies',
+// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH',
+// 'S-S-Technologies' => 'S S Technologies',
+// 'Qualcomm-Inc' => 'Qualcomm Inc',
+// 'Ensoniq-Old' => 'Ensoniq (Old)',
+// 'Animation-Technologies-Inc.' => 'Animation Technologies Inc.',
+// 'Alliance-Semiconductor-Corp.' => 'Alliance Semiconductor Corp.',
+// 'S3-Inc.' => 'S3 Inc.',
+// 'AuzenTech-Inc.' => 'AuzenTech, Inc.',
+// 'Teralogic-Inc' => 'Teralogic Inc',
+// 'Technische-University-Berlin' => 'Technische University Berlin',
+// 'GoTView' => 'GoTView',
+// 'Cnet-Technologies-Inc.' => 'Cnet Technologies, Inc.',
+// 'Dunord-Technologies' => 'Dunord Technologies',
+// 'Genroco-Inc' => 'Genroco, Inc',
+// 'Vector-Fabrics-BV' => 'Vector Fabrics BV',
+// 'VoiceTronix-Pty-Ltd' => 'VoiceTronix Pty Ltd',
+// 'Netpower' => 'Netpower',
+// 'AuzenTech-Co.-Ltd.' => 'AuzenTech Co., Ltd.',
+// 'Exacq-Technologies' => 'Exacq Technologies',
+// 'XenSource-Inc.' => 'XenSource, Inc.',
+// 'Beholder-International-Ltd.' => 'Beholder International Ltd.',
+// 'SmartInfra-Ltd' => 'SmartInfra Ltd',
+// 'UltraStor' => 'UltraStor',
+// 'Logitec-Corp.' => 'Logitec Corp.',
+// 'Teradici-Corp.' => 'Teradici Corp.',
+// 'Red-Hat-Inc. nee-Qumranet' => 'Red Hat, Inc. nee Qumranet',
+// 'pcHDTV' => 'pcHDTV',
+// 'HT-OMEGA-Inc.' => 'HT OMEGA Inc.',
+// 'O.N.-Electronic-Co-Ltd.' => 'O.N. Electronic Co Ltd.',
+// 'MIDAC-Corporation' => 'MIDAC Corporation',
+// 'PowerTV' => 'PowerTV',
+// 'Quancom-Electronic-GmbH' => 'Quancom Electronic GmbH',
+// 'Intel-Corporation' => 'Intel Corporation',
+// 'InnoTek-Systemberatung-GmbH' => 'InnoTek Systemberatung GmbH',
+// 'Sodick-America-Corp.' => 'Sodick America Corp.',
+// 'SigmaTel' => 'SigmaTel',
+// 'TRENDware-International-Inc.' => 'TRENDware International Inc.',
+// 'ScaleMP' => 'ScaleMP',
+// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.',
+// 'T-Square-Design-Inc.' => 'T-Square Design Inc.',
+// 'Silicon-Magic' => 'Silicon Magic',
+// 'TRX' => 'TRX',
+// 'Computone-Corporation' => 'Computone Corporation',
+// 'KTI' => 'KTI',
+// 'Adaptec' => 'Adaptec',
+// 'Adaptec' => 'Adaptec',
+// 'Atronics' => 'Atronics',
+// 'Gigapixel-Corp' => 'Gigapixel Corp',
+// 'Holtek' => 'Holtek',
+// 'Omni-Media-Technology-Inc' => 'Omni Media Technology Inc',
+// 'NetMos-Technology' => 'NetMos Technology',
+// 'Stargen-Inc.' => 'Stargen Inc.',
+// 'AOPEN-Inc.' => 'AOPEN Inc.',
+// 'UNISYS-Corporation' => 'UNISYS Corporation',
+// 'NEC-Corporation' => 'NEC Corporation',
+// 'Hewlett-Packard' => 'Hewlett Packard',
+// 'Hewlett-Packard-GmbH-PL24-MKT' => 'Hewlett Packard GmbH PL24-MKT',
+// 'Sony' => 'Sony',
+// '3Com-Corporation' => '3Com Corporation',
+// 'Scitex-Digital-Video' => 'Scitex Digital Video',
+// 'Ncomputing-X300-PCI-Engine' => 'Ncomputing X300 PCI-Engine',
+// 'Adnaco-Technology-Inc.' => 'Adnaco Technology Inc.',
+// 'Vadatech-Inc.' => 'Vadatech Inc.',
+// 'Actuality-Systems' => 'Actuality Systems',
+// 'Alta-Data-Technologies-LLC' => 'Alta Data Technologies LLC',
+// 'Shiva-Europe-Limited' => 'Shiva Europe Limited',
+// 'Blackmagic-Design' => 'Blackmagic Design',
+// 'TSI-Telsys' => 'TSI Telsys',
+// 'Micron-Crucial-Technology' => 'Micron/Crucial Technology',
+// 'Motorola' => 'Motorola',
+// 'Motion-Engineering-Inc.' => 'Motion Engineering, Inc.',
+// 'Varian-Australia-Pty-Ltd' => 'Varian Australia Pty Ltd',
+// 'CACE-Technologies-Inc.' => 'CACE Technologies, Inc.',
+// 'Chrysalis-ITS' => 'Chrysalis-ITS',
+// 'Catapult-Communications' => 'Catapult Communications',
+// 'Tyzx-Inc.' => 'Tyzx, Inc.',
+// 'KEBA-AG' => 'KEBA AG',
+// 'Digium-Inc.' => 'Digium, Inc.',
+// 'Dy4-Systems-Inc' => 'Dy4 Systems Inc',
+// 'I+ME-ACTIA-GmbH' => 'I+ME ACTIA GmbH',
+// 'Exsys' => 'Exsys',
+// 'Diablo-Technologies' => 'Diablo Technologies',
+// 'Indigita-Corporation' => 'Indigita Corporation',
+// 'Middle-Digital-Inc.' => 'Middle Digital Inc.',
+// 'SoftHard-Technology-Ltd.' => 'SoftHard Technology Ltd.',
+// 'Winbond' => 'Winbond',
+// 'Tiger-Jet-Network-Inc.' => 'Tiger Jet Network Inc.',
+// 'EKF-Elektronik-GmbH' => 'EKF Elektronik GmbH',
+// 'Essence-Technology-Inc.' => 'Essence Technology, Inc.',
+// 'Eagle-Technology' => 'Eagle Technology',
+// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.',
+// 'Belkin-Corporation' => 'Belkin Corporation',
+// 'ARK-Logic-Inc' => 'ARK Logic Inc',
+// 'AJA-Video' => 'AJA Video',
+// 'F5-Networks-Inc.' => 'F5 Networks, Inc.',
+// 'Interagon-AS' => 'Interagon AS',
+// 'Fabric7-Systems-Inc.' => 'Fabric7 Systems, Inc.',
+// 'Ultraview-Corp.' => 'Ultraview Corp.',
+// 'Broadcom-Inc Nee-Epigram' => 'Broadcom Inc Nee Epigram',
+// 'Fedetec-Inc.' => 'Fedetec Inc.',
+// 'XenSource-Inc.' => 'XenSource, Inc.',
+// 'Frys-Electronics' => 'Frys Electronics',
+// 'Ingram' => 'Ingram',
+// 'Club-Mac' => 'Club Mac',
+// 'Nebraska-Furniture-Mart' => 'Nebraska Furniture Mart',
+// 'Planex' => 'Planex',
+// 'DragonRise-Inc.' => 'DragonRise Inc.',
+// 'Trust-International-B.V.' => 'Trust International B.V.',
+// 'Unknown' => 'Unknown',
+// 'LW154-Wireless-150N-Adapter' => 'LW154 Wireless 150N Adapter',
+// 'Hangzhou-Worlde' => 'Hangzhou Worlde',
+// 'HUMAX-Co.-Ltd.' => 'HUMAX Co., Ltd.',
+// 'MM300-eBook-Reader' => 'MM300 eBook Reader',
+// 'OCZ-Technology-Inc' => 'OCZ Technology Inc',
+// 'OCZ-Technology-Inc' => 'OCZ Technology Inc',
+// 'LTS' => 'LTS',
+// 'EndPoints-Inc.' => 'EndPoints, Inc.',
+// 'Thesys-Microelectronics' => 'Thesys Microelectronics',
+// 'Data-Broadcasting-Corp.' => 'Data Broadcasting Corp.',
+// 'Atmel-Corp.' => 'Atmel Corp.',
+// 'Iwatsu-America-Inc.' => 'Iwatsu America, Inc.',
+// 'Mitel-Corp.' => 'Mitel Corp.',
+// 'Mitsumi' => 'Mitsumi',
+// 'Hewlett-Packard' => 'Hewlett-Packard',
+// 'Genoa-Technology' => 'Genoa Technology',
+// 'Oak-Technology-Inc.' => 'Oak Technology, Inc.',
+// 'Adaptec-Inc.' => 'Adaptec, Inc.',
+// 'Diebold-Inc.' => 'Diebold, Inc.',
+// 'Siemens-Electromechanical' => 'Siemens Electromechanical',
+// 'KeyTronic-Corp.' => 'KeyTronic Corp.',
+// 'OPTi-Inc.' => 'OPTi, Inc.',
+// 'Elitegroup-Computer-Systems' => 'Elitegroup Computer Systems',
+// 'Xilinx-Inc.' => 'Xilinx, Inc.',
+// 'Farallon-Comunications' => 'Farallon Comunications',
+// 'National-Semiconductor-Corp.' => 'National Semiconductor Corp.',
+// 'National-Registry-Inc.' => 'National Registry, Inc.',
+// 'ALi-Corp.' => 'ALi Corp.',
+// 'NCR-Corp.' => 'NCR Corp.',
+// 'Synopsys-Inc.' => 'Synopsys, Inc.',
+// 'Fujitsu-ICL-Computers' => 'Fujitsu-ICL Computers',
+// 'Quanta-Computer-Inc.' => 'Quanta Computer, Inc.',
+// 'NEC-Corp.' => 'NEC Corp.',
+// 'Kodak-Co.' => 'Kodak Co.',
+// 'Weltrend-Semiconductor' => 'Weltrend Semiconductor',
+// 'VTech-Computers-Ltd' => 'VTech Computers, Ltd',
+// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.',
+// 'MCCI' => 'MCCI',
+// 'Echo-Speech-Corp.' => 'Echo Speech Corp.',
+// 'Award-Software-International' => 'Award Software International',
+// 'Leadtek-Research-Inc.' => 'Leadtek Research, Inc.',
+// 'Giga-Byte-Technology-Co.-Ltd' => 'Giga-Byte Technology Co., Ltd',
+// 'Winbond-Electronics-Corp.' => 'Winbond Electronics Corp.',
+// 'Symbios-Logic' => 'Symbios Logic',
+// 'AST-Research' => 'AST Research',
+// 'Phoenix-Technologies-Ltd' => 'Phoenix Technologies, Ltd',
+// 'dTV' => 'dTV',
+// 'S3-Inc.' => 'S3, Inc.',
+// 'Creative-Technology-Ltd' => 'Creative Technology, Ltd',
+// 'LCS-Telegraphics' => 'LCS Telegraphics',
+// 'Chips-and-Technologies' => 'Chips and Technologies',
+// 'Nokia-Mobile-Phones' => 'Nokia Mobile Phones',
+// 'ADI-Systems-Inc.' => 'ADI Systems, Inc.',
+// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.',
+// 'Cirrus-Logic' => 'Cirrus Logic',
+// 'Ericsson-Austrian-AG' => 'Ericsson Austrian, AG',
+// 'Intel-Corp.' => 'Intel Corp.',
+// 'Micronics' => 'Micronics',
+// 'Acer-Inc.' => 'Acer, Inc.',
+// 'Molex-Inc.' => 'Molex, Inc.',
+// 'Sun-Microsystems-Inc.' => 'Sun Microsystems, Inc.',
+// 'Itac-Systems-Inc.' => 'Itac Systems, Inc.',
+// 'Unisys-Corp.' => 'Unisys Corp.',
+// 'Alps-Electric-Inc.' => 'Alps Electric, Inc.',
+// 'Hyundai-Electronics-America' => 'Hyundai Electronics America',
+// 'Taugagreining-HF' => 'Taugagreining HF',
+// 'Framatome-Connectors-USA' => 'Framatome Connectors USA',
+// 'Advanced-Micro-Devices-Inc.' => 'Advanced Micro Devices, Inc.',
+// 'Voice-Technologies-Group' => 'Voice Technologies Group',
+// 'Lexmark-International-Inc.' => 'Lexmark International, Inc.',
+// 'LG-Electronics-USA-Inc.' => 'LG Electronics USA, Inc.',
+// 'RadiSys-Corp.' => 'RadiSys Corp.',
+// 'Eizo-Nanao-Corp.' => 'Eizo Nanao Corp.',
+// 'Winbond-Systems-Lab.' => 'Winbond Systems Lab.',
+// 'Ericsson-Inc.' => 'Ericsson, Inc.',
+// 'Gateway-Inc.' => 'Gateway, Inc.',
+// 'Lucent-Technologies-Inc.' => 'Lucent Technologies, Inc.',
+// 'NMB-Technologies-Corp.' => 'NMB Technologies Corp.',
+// 'Momentum-Microsystems' => 'Momentum Microsystems',
+// 'Shamrock-Tech.-Co.-Ltd' => 'Shamrock Tech. Co., Ltd',
+// 'WSI' => 'WSI',
+// 'CCL-ITRI' => 'CCL/ITRI',
+// 'Siemens-Nixdorf-AG' => 'Siemens Nixdorf AG',
+// 'Alps-Electric-Co.-Ltd' => 'Alps Electric Co., Ltd',
+// 'ThrustMaster-Inc.' => 'ThrustMaster, Inc.',
+// 'DFI-Inc.' => 'DFI, Inc.',
+// 'Texas-Instruments-Inc.' => 'Texas Instruments, Inc.',
+// 'CMD-Technology' => 'CMD Technology',
+// 'Vobis-Microcomputer-AG' => 'Vobis Microcomputer AG',
+// 'Analog-Devices-Inc.' => 'Analog Devices, Inc.',
+// 'Adobe-Systems-Inc.' => 'Adobe Systems, Inc.',
+// 'SONICblue-Inc.' => 'SONICblue, Inc.',
+// 'Hitachi-Ltd' => 'Hitachi, Ltd',
+// 'Nortel-Networks-Ltd' => 'Nortel Networks, Ltd',
+// 'Microsoft-Corp.' => 'Microsoft Corp.',
+// 'Ace-Cad-Enterprise-Co.-Ltd' => 'Ace Cad Enterprise Co., Ltd',
+// 'Primax-Electronics-Ltd' => 'Primax Electronics, Ltd',
+// 'MGE-UPS-Systems' => 'MGE UPS Systems',
+// 'AMP-Tycoelectronics-Corp.' => 'AMP/Tycoelectronics Corp.',
+// 'AT-T-Paradyne' => 'AT&T Paradyne',
+// 'Wieson-Technologies-Co.-Ltd' => 'Wieson Technologies Co., Ltd',
+// 'Cherry-GmbH' => 'Cherry GmbH',
+// 'American-Megatrends-Inc.' => 'American Megatrends, Inc.',
+// 'Logitech-Inc.' => 'Logitech, Inc.',
+// 'Behavior-Tech.-Computer-Corp.' => 'Behavior Tech. Computer Corp.',
+// 'Crystal-Semiconductor' => 'Crystal Semiconductor',
+// 'Philips-or-NXP' => 'Philips (or NXP)',
+// 'Chicony-Electronics-Co.-Ltd' => 'Chicony Electronics Co., Ltd',
+// 'Sanyo-Electric-Co.-Ltd' => 'Sanyo Electric Co., Ltd',
+// 'AESP' => 'AESP',
+// 'Seagate-Technology-Inc.' => 'Seagate Technology, Inc.',
+// 'Connectix-Corp.' => 'Connectix Corp.',
+// 'Semtech-Corp.' => 'Semtech Corp.',
+// 'Silitek-Corp.' => 'Silitek Corp.',
+// 'Dell-Computer-Corp.' => 'Dell Computer Corp.',
+// 'Kensington' => 'Kensington',
+// 'Agere-Systems-Inc.-Lucent' => 'Agere Systems, Inc. (Lucent)',
+// 'Plantronics-Inc.' => 'Plantronics, Inc.',
+// 'Zenith-Data-Systems' => 'Zenith Data Systems',
+// 'Kyocera-Corp.' => 'Kyocera Corp.',
+// 'SGS-Thomson-Microelectronics' => 'SGS Thomson Microelectronics',
+// 'Specialix' => 'Specialix',
+// 'Nokia-Monitors' => 'Nokia Monitors',
+// 'ASUS-Computers-Inc.' => 'ASUS Computers, Inc.',
+// 'Stewart-Connector' => 'Stewart Connector',
+// 'Cirque-Corp.' => 'Cirque Corp.',
+// 'Foxconn---Hon-Hai' => 'Foxconn / Hon Hai',
+// 'S-MOS-Systems-Inc.' => 'S-MOS Systems, Inc.',
+// 'Alps-Electric-Ireland-Ltd' => 'Alps Electric Ireland, Ltd',
+// 'Eicon-Tech.' => 'Eicon Tech.',
+// 'United-Microelectronics-Corp.' => 'United Microelectronics Corp.',
+// 'Capetronic' => 'Capetronic',
+// 'Samsung-SemiConductor-Inc.' => 'Samsung SemiConductor, Inc.',
+// 'MAG-Technology-Co.-Ltd' => 'MAG Technology Co., Ltd',
+// 'ESS-Technology-Inc.' => 'ESS Technology, Inc.',
+// 'Micron-Electronics' => 'Micron Electronics',
+// 'Smile-International' => 'Smile International',
+// 'Capetronic-Kaohsiung-Corp.' => 'Capetronic (Kaohsiung) Corp.',
+// 'Yamaha-Corp.' => 'Yamaha Corp.',
+// 'Gandalf-Technologies-Ltd' => 'Gandalf Technologies, Ltd',
+// 'Curtis-Computer-Products' => 'Curtis Computer Products',
+// 'Acer-Advanced-Labs-Inc.' => 'Acer Advanced Labs, Inc.',
+// 'VLSI-Technology' => 'VLSI Technology',
+// 'Compaq-Computer-Corp.' => 'Compaq Computer Corp.',
+// 'Digital-Equipment-Corp.' => 'Digital Equipment Corp.',
+// 'SystemSoft-Corp.' => 'SystemSoft Corp.',
+// 'FirePower-Systems' => 'FirePower Systems',
+// 'Trident-Microsystems-Inc.' => 'Trident Microsystems, Inc.',
+// 'Hitachi-Ltd' => 'Hitachi, Ltd',
+// 'Nokia-Display-Products' => 'Nokia Display Products',
+// 'Visioneer' => 'Visioneer',
+// 'Multivideo-Labs-Inc.' => 'Multivideo Labs, Inc.',
+// 'Canon-Inc.' => 'Canon, Inc.',
+// 'DaeWoo-Telecom-Ltd' => 'DaeWoo Telecom, Ltd',
+// 'Chromatic-Research' => 'Chromatic Research',
+// 'Micro-Audiometrics-Corp.' => 'Micro Audiometrics Corp.',
+// 'Dooin-Electronics' => 'Dooin Electronics',
+// 'Winnov-L.P.' => 'Winnov L.P.',
+// 'Nikon-Corp.' => 'Nikon Corp.',
+// 'Pan-International' => 'Pan International',
+// 'IBM-Corp.' => 'IBM Corp.',
+// 'Cypress-Semiconductor-Corp.' => 'Cypress Semiconductor Corp.',
+// 'ROHM-LSI-Systems-USA-LLC' => 'ROHM LSI Systems USA, LLC',
+// 'Hint-Corp.' => 'Hint Corp.',
+// 'Compal-Electronics-Inc.' => 'Compal Electronics, Inc.',
+// 'Seiko-Epson-Corp.' => 'Seiko Epson Corp.',
+// 'Rainbow-Technologies-Inc.' => 'Rainbow Technologies, Inc.',
+// 'Toucan-Systems-Ltd' => 'Toucan Systems, Ltd',
+// 'I-O-Data-Device-Inc.' => 'I-O Data Device, Inc.',
+// 'Telia-Research-AB' => 'Telia Research AB',
+// 'TDK-Corp.' => 'TDK Corp.',
+// 'U.S.-Robotics-3Com' => 'U.S. Robotics (3Com)',
+// 'Maxi-Switch-Inc.' => 'Maxi Switch, Inc.',
+// 'Fujitsu-Ltd' => 'Fujitsu, Ltd',
+// 'Micro-Macro-Technologies' => 'Micro Macro Technologies',
+// 'Konica-Corp.' => 'Konica Corp.',
+// 'Lite-On-Technology-Corp.' => 'Lite-On Technology Corp.',
+// 'Fuji-Photo-Film-Co.-Ltd' => 'Fuji Photo Film Co., Ltd',
+// 'ST-Ericsson' => 'ST-Ericsson',
+// 'Tatung-Co.-Of-America' => 'Tatung Co. Of America',
+// 'ScanLogic-Corp.' => 'ScanLogic Corp.',
+// 'Myson-Century-Inc.' => 'Myson Century, Inc.',
+// 'Digi-International' => 'Digi International',
+// 'ITT-Canon' => 'ITT Canon',
+// 'Altec-Lansing-Technologies' => 'Altec Lansing Technologies',
+// 'VidUS-Inc.' => 'VidUS, Inc.',
+// 'LSI-Logic-Inc.' => 'LSI Logic, Inc.',
+// 'Forte-Technologies-Inc.' => 'Forte Technologies, Inc.',
+// 'Mentor-Graphics' => 'Mentor Graphics',
+// 'Oki-Semiconductor' => 'Oki Semiconductor',
+// 'Microchip-Technology-Inc.' => 'Microchip Technology, Inc.',
+// 'Holtek-Semiconductor-Inc.' => 'Holtek Semiconductor, Inc.',
+// 'Panasonic-Matsushita' => 'Panasonic (Matsushita)',
+// 'Hypertec-Pty-Ltd' => 'Hypertec Pty, Ltd',
+// 'Huan-Hsin-Holdings-Ltd' => 'Huan Hsin Holdings, Ltd',
+// 'Sharp-Corp.' => 'Sharp Corp.',
+// 'MindShare-Inc.' => 'MindShare, Inc.',
+// 'Interlink-Electronics' => 'Interlink Electronics',
+// 'Iiyama-North-America-Inc.' => 'Iiyama North America, Inc.',
+// 'Exar-Corp.' => 'Exar Corp.',
+// 'Zilog-Inc.' => 'Zilog, Inc.',
+// 'ACC-Microelectronics' => 'ACC Microelectronics',
+// 'Promise-Technology' => 'Promise Technology',
+// 'SCM-Microsystems-Inc.' => 'SCM Microsystems, Inc.',
+// 'Elo-TouchSystems' => 'Elo TouchSystems',
+// 'Samsung-Electronics-Co.-Ltd' => 'Samsung Electronics Co., Ltd',
+// 'PC-Tel-Inc.' => 'PC-Tel, Inc.',
+// 'Brooktree-Corp.' => 'Brooktree Corp.',
+// 'Northstar-Systems-Inc.' => 'Northstar Systems, Inc.',
+// 'Tokyo-Electron-Device-Ltd' => 'Tokyo Electron Device, Ltd',
+// 'Annabooks' => 'Annabooks',
+// 'Daewoo-Electronics-Co.-Ltd' => 'Daewoo Electronics Co., Ltd',
+// 'Victor-Company-of-Japan-Ltd' => 'Victor Company of Japan, Ltd',
+// 'Chicony-Electronics-Co.-Ltd' => 'Chicony Electronics Co., Ltd',
+// 'Elan-Microelectronics-Corp.' => 'Elan Microelectronics Corp.',
+// 'Harting-Elektronik-Inc.' => 'Harting Elektronik, Inc.',
+// 'Fujitsu-ICL-Systems-Inc.' => 'Fujitsu-ICL Systems, Inc.',
+// 'Norand-Corp.' => 'Norand Corp.',
+// 'Newnex-Technology-Corp.' => 'Newnex Technology Corp.',
+// 'FuturePlus-Systems' => 'FuturePlus Systems',
+// 'Brother-Industries-Ltd' => 'Brother Industries, Ltd',
+// 'Dallas-Semiconductor' => 'Dallas Semiconductor',
+// 'Sunplus-Technology-Co.-Ltd' => 'Sunplus Technology Co., Ltd',
+// 'Soliton-Systems-K.K.' => 'Soliton Systems, K.K.',
+// 'PFU-Ltd' => 'PFU, Ltd',
+// 'E-CMOS-Corp.' => 'E-CMOS Corp.',
+// 'Siam-United-Hi-Tech' => 'Siam United Hi-Tech',
+// 'Fujikura-DDK-Ltd' => 'Fujikura DDK, Ltd',
+// 'Acer-Inc.' => 'Acer, Inc.',
+// 'Hitachi-America-Ltd' => 'Hitachi America, Ltd',
+// 'Hayes-Microcomputer-Products' => 'Hayes Microcomputer Products',
+// '3Com-Corp.' => '3Com Corp.',
+// 'Hosiden-Corp.' => 'Hosiden Corp.',
+// 'Clarion-Co.-Ltd' => 'Clarion Co., Ltd',
+// 'Aztech-Systems-Ltd' => 'Aztech Systems, Ltd',
+// 'Cinch-Connectors' => 'Cinch Connectors',
+// 'Cable-System-International' => 'Cable System International',
+// 'InnoMedia-Inc.' => 'InnoMedia, Inc.',
+// 'Belkin-Components' => 'Belkin Components',
+// 'Neon-Technology-Inc.' => 'Neon Technology, Inc.',
+// 'KC-Technology-Inc.' => 'KC Technology, Inc.',
+// 'Sejin-Electron-Inc.' => 'Sejin Electron, Inc.',
+// 'Hualon-Microelectronics-Corp.' => 'Hualon Microelectronics Corp.',
+// 'digital-X-Inc.' => 'digital-X, Inc.',
+// 'FCI-Electronics' => 'FCI Electronics',
+// 'ACTC' => 'ACTC',
+// 'Longwell-Electronics' => 'Longwell Electronics',
+// 'Butterfly-Communications' => 'Butterfly Communications',
+// 'EzKEY-Corp.' => 'EzKEY Corp.',
+// 'Star-Micronics-Co.-Ltd' => 'Star Micronics Co., Ltd',
+// 'WYSE-Technology' => 'WYSE Technology',
+// 'Silicon-Graphics' => 'Silicon Graphics',
+// 'Shuttle-Inc.' => 'Shuttle, Inc.',
+// 'American-Power-Conversion' => 'American Power Conversion',
+// 'Scientific-Atlanta-Inc.' => 'Scientific Atlanta, Inc.',
+// 'Airborn-Connectors' => 'Airborn Connectors',
+// 'Advanced-Connectek-Inc.' => 'Advanced Connectek, Inc.',
+// 'ATEN-GmbH' => 'ATEN GmbH',
+// 'Sola-Electronics' => 'Sola Electronics',
+// 'Netchip-Technology-Inc.' => 'Netchip Technology, Inc.',
+// 'Temic-MHS-S.A.' => 'Temic MHS S.A.',
+// 'ALTRA' => 'ALTRA',
+// 'ATI-Technologies-Inc.' => 'ATI Technologies, Inc.',
+// 'Aladdin-Knowledge-Systems' => 'Aladdin Knowledge Systems',
+// 'Crescent-Heart-Software' => 'Crescent Heart Software',
+// 'Tekom-Technologies-Inc.' => 'Tekom Technologies, Inc.',
+// 'Avid-Electronics-Corp.' => 'Avid Electronics Corp.',
+// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.',
+// 'Unicore-Software-Inc.' => 'Unicore Software, Inc.',
+// 'American-Microsystems-Inc.' => 'American Microsystems, Inc.',
+// 'Wacom-Technology-Corp.' => 'Wacom Technology Corp.',
+// 'Systech-Corp.' => 'Systech Corp.',
+// 'Alcatel-Mobile-Phones' => 'Alcatel Mobile Phones',
+// 'Motorola-Inc.' => 'Motorola, Inc.',
+// 'LIH-TZU-Electric-Co.-Ltd' => 'LIH TZU Electric Co., Ltd',
+// 'Inventec-Corp.' => 'Inventec Corp.',
+// 'Shyh-Shiun-Terminals-Co.-Ltd' => 'Shyh Shiun Terminals Co., Ltd',
+// 'PrehKeyTec-GmbH' => 'PrehKeyTec GmbH',
+// 'Global-Village-Communication' => 'Global Village Communication',
+// 'Silicon-Architect' => 'Silicon Architect',
+// 'Mobility-Electronics' => 'Mobility Electronics',
+// 'Synopsys-Inc.' => 'Synopsys, Inc.',
+// 'UniAccess-AB' => 'UniAccess AB',
+// 'Sirf-Technology-Inc.' => 'Sirf Technology, Inc.',
+// 'ViewSonic-Corp.' => 'ViewSonic Corp.',
+// 'Cristie-Electronics-Ltd' => 'Cristie Electronics, Ltd',
+// 'Xirlink-Inc.' => 'Xirlink, Inc.',
+// 'Polaroid-Corp.' => 'Polaroid Corp.',
+// 'Anchor-Chips-Inc.' => 'Anchor Chips, Inc.',
+// 'Tyan-Computer-Corp.' => 'Tyan Computer Corp.',
+// 'Pixera-Corp.' => 'Pixera Corp.',
+// 'New-Media-Corp.' => 'New Media Corp.',
+// 'Sony-Corp.' => 'Sony Corp.',
+// 'Try-Corp.' => 'Try Corp.',
+// 'Proside-Corp.' => 'Proside Corp.',
+// 'WYSE-Technology-Taiwan' => 'WYSE Technology Taiwan',
+// 'Fuji-Xerox-Co.-Ltd' => 'Fuji Xerox Co., Ltd',
+// 'CompuTrend-Systems-Inc.' => 'CompuTrend Systems, Inc.',
+// 'Philips-Monitors' => 'Philips Monitors',
+// 'Dictaphone-Corp.' => 'Dictaphone Corp.',
+// 'ANAM-S-T-Co.-Ltd' => 'ANAM S&T Co., Ltd',
+// 'ATEN-International-Co.-Ltd' => 'ATEN International Co., Ltd',
+// 'Truevision-Inc.' => 'Truevision, Inc.',
+// 'Cadence-Design-Systems-Inc.' => 'Cadence Design Systems, Inc.',
+// 'Kenwood-USA' => 'Kenwood USA',
+// 'KnowledgeTek-Inc.' => 'KnowledgeTek, Inc.',
+// 'Proton-Electronic-Ind.' => 'Proton Electronic Ind.',
+// 'Samsung-Electro-Mechanics-Co.' => 'Samsung Electro-Mechanics Co.',
+// 'CTX-Opto-Electronics-Corp.' => 'CTX Opto-Electronics Corp.',
+// 'Mustek-Systems-Inc.' => 'Mustek Systems, Inc.',
+// 'Interface-Corp.' => 'Interface Corp.',
+// 'Oasis-Design-Inc.' => 'Oasis Design, Inc.',
+// 'Telex-Communications-Inc.' => 'Telex Communications, Inc.',
+// 'Immersion-Corp.' => 'Immersion Corp.',
+// 'Peracom-Networks-Inc.' => 'Peracom Networks, Inc.',
+// 'Monterey-International-Corp.' => 'Monterey International Corp.',
+// 'Xyratex-International-Ltd' => 'Xyratex International, Ltd',
+// 'Quartz-Ingenierie' => 'Quartz Ingenierie',
+// 'SegaSoft' => 'SegaSoft',
+// 'Wacom-Co.-Ltd' => 'Wacom Co., Ltd',
+// 'Decicon-Inc.' => 'Decicon, Inc.',
+// 'eTEK-Labs' => 'eTEK Labs',
+// 'EIZO-Corp.' => 'EIZO Corp.',
+// 'Elecom-Co.-Ltd' => 'Elecom Co., Ltd',
+// 'Korea-Data-Systems-Co.-Ltd' => 'Korea Data Systems Co., Ltd',
+// 'Epson-America' => 'Epson America',
+// 'Interex-Inc.' => 'Interex, Inc.',
+// 'City-University-of-Hong-Kong' => 'City University of Hong Kong',
+// 'ELSA' => 'ELSA',
+// 'Intrinsix-Corp.' => 'Intrinsix Corp.',
+// 'GVC-Corp.' => 'GVC Corp.',
+// 'Samsung-Electronics-America' => 'Samsung Electronics America',
+// 'Y-E-Data-Inc.' => 'Y-E Data, Inc.',
+// 'AVM-GmbH' => 'AVM GmbH',
+// 'Shark-Multimedia-Inc.' => 'Shark Multimedia, Inc.',
+// 'Nintendo-Co.-Ltd' => 'Nintendo Co., Ltd',
+// 'QuickShot-Ltd' => 'QuickShot, Ltd',
+// 'Denron-Inc.' => 'Denron, Inc.',
+// 'Racal-Data-Group' => 'Racal Data Group',
+// 'Roland-Corp.' => 'Roland Corp.',
+// 'Padix-Co.-Ltd-Rockfire' => 'Padix Co., Ltd (Rockfire)',
+// 'RATOC-System-Inc.' => 'RATOC System, Inc.',
+// 'FlashPoint-Technology-Inc.' => 'FlashPoint Technology, Inc.',
+// 'ZyXEL-Communications-Corp.' => 'ZyXEL Communications Corp.',
+// 'Sapien-Design' => 'Sapien Design',
+// 'Victron' => 'Victron',
+// 'Nohau-Corp.' => 'Nohau Corp.',
+// 'Infineon-Technologies' => 'Infineon Technologies',
+// 'In-Focus-Systems' => 'In Focus Systems',
+// 'Micrel-Semiconductor' => 'Micrel Semiconductor',
+// 'Tripath-Technology-Inc.' => 'Tripath Technology, Inc.',
+// 'Alcor-Micro-Corp.' => 'Alcor Micro Corp.',
+// 'Omron-Corp.' => 'Omron Corp.',
+// 'Questra-Consulting' => 'Questra Consulting',
+// 'Powerware-Corp.' => 'Powerware Corp.',
+// 'Incite' => 'Incite',
+// 'Princeton-Graphic-Systems' => 'Princeton Graphic Systems',
+// 'Zoran-Microelectronics-Ltd' => 'Zoran Microelectronics, Ltd',
+// 'MicroTouch-Systems-Inc.' => 'MicroTouch Systems, Inc.',
+// 'Trisignal-Communications' => 'Trisignal Communications',
+// 'Niigata-Canotec-Co.-Inc.' => 'Niigata Canotec Co., Inc.',
+// 'Iomega-Corp.' => 'Iomega Corp.',
+// 'A-Trend-Technology-Co.-Ltd' => 'A-Trend Technology Co., Ltd',
+// 'Advanced-Input-Devices' => 'Advanced Input Devices',
+// 'Intelligent-Instrumentation' => 'Intelligent Instrumentation',
+// 'LaCie-Ltd' => 'LaCie, Ltd',
+// 'Vetronix-Corp.' => 'Vetronix Corp.',
+// 'USC-Corp.' => 'USC Corp.',
+// 'ARC-International' => 'ARC International',
+// 'Ortek-Technology-Inc.' => 'Ortek Technology, Inc.',
+// 'Sampo-Technology-Corp.' => 'Sampo Technology Corp.',
+// 'Cisco-Systems-Inc.' => 'Cisco Systems, Inc.',
+// 'Bose-Corp.' => 'Bose Corp.',
+// 'Spacetec-IMC-Corp.' => 'Spacetec IMC Corp.',
+// 'OmniVision-Technologies-Inc.' => 'OmniVision Technologies, Inc.',
+// 'Utilux-South-China-Ltd' => 'Utilux South China, Ltd',
+// 'In-System-Design' => 'In-System Design',
+// 'Apple-Inc.' => 'Apple, Inc.',
+// 'Y.C.-Cable-U.S.A.-Inc.' => 'Y.C. Cable U.S.A., Inc.',
+// 'Synopsys-Inc.' => 'Synopsys, Inc.',
+// 'Jing-Mold-Enterprise-Co.-Ltd' => 'Jing-Mold Enterprise Co., Ltd',
+// 'Fountain-Technologies-Inc.' => 'Fountain Technologies, Inc.',
+// 'LG-Semicon-Co.-Ltd' => 'LG Semicon Co., Ltd',
+// 'Dialogic-Corp.' => 'Dialogic Corp.',
+// 'Proxima-Corp.' => 'Proxima Corp.',
+// 'Medianix-Semiconductor-Inc.' => 'Medianix Semiconductor, Inc.',
+// 'Agiler-Inc.' => 'Agiler, Inc.',
+// 'Philips-Research-Laboratories' => 'Philips Research Laboratories',
+// 'DigitalPersona-Inc.' => 'DigitalPersona, Inc.',
+// 'Grey-Cell-Systems' => 'Grey Cell Systems',
+// '3G-Green-Green-Globe-Co.-Ltd' => '3G Green Green Globe Co., Ltd',
+// 'RAFI-GmbH---Co.-KG' => 'RAFI GmbH & Co. KG',
+// 'Tyco-Electronics-Raychem' => 'Tyco Electronics (Raychem)',
+// 'S---S-Research' => 'S & S Research',
+// 'Keil-Software' => 'Keil Software',
+// 'Media-Phonics-Suisse-S.A.' => 'Media Phonics (Suisse) S.A.',
+// 'Digi-International-Inc.' => 'Digi International, Inc.',
+// 'Qualcomm-Inc.' => 'Qualcomm, Inc.',
+// 'Qtronix-Corp.' => 'Qtronix Corp.',
+// 'Semtech-Corp.' => 'Semtech Corp.',
+// 'Ricoh-Co.-Ltd' => 'Ricoh Co., Ltd',
+// 'ELSA-AG' => 'ELSA AG',
+// 'Silicom-Ltd' => 'Silicom, Ltd',
+// 'sci-worx-GmbH' => 'sci-worx GmbH',
+// 'Sung-Forn-Co.-Ltd' => 'Sung Forn Co., Ltd',
+// 'GE-Medical-Systems-Lunar' => 'GE Medical Systems Lunar',
+// 'Brainboxes-Ltd' => 'Brainboxes, Ltd',
+// 'Wave-Systems-Corp.' => 'Wave Systems Corp.',
+// 'Tohoku-Ricoh-Co.-Ltd' => 'Tohoku Ricoh Co., Ltd',
+// 'Philips-Semiconductors-CICT' => 'Philips Semiconductors, CICT',
+// 'Thomas---Betts-Corp.' => 'Thomas & Betts Corp.',
+// 'Ultima-Electronics-Corp.' => 'Ultima Electronics Corp.',
+// 'Axiohm-Transaction-Solutions' => 'Axiohm Transaction Solutions',
+// 'Microtek-International-Inc.' => 'Microtek International, Inc.',
+// 'Sun-Corp.-Suntac-' => 'Sun Corp. (Suntac?)',
+// 'Lexar-Media-Inc.' => 'Lexar Media, Inc.',
+// 'Delta-Electronics-Inc.' => 'Delta Electronics, Inc.',
+// 'Silicon-Vision-Inc.' => 'Silicon Vision, Inc.',
+// 'Symbol-Technologies' => 'Symbol Technologies',
+// 'Syntek-Semiconductor-Co.-Ltd' => 'Syntek Semiconductor Co., Ltd',
+// 'ElecVision-Inc.' => 'ElecVision, Inc.',
+// 'Genesys-Logic-Inc.' => 'Genesys Logic, Inc.',
+// 'Red-Wing-Corp.' => 'Red Wing Corp.',
+// 'Fuji-Electric-Co.-Ltd' => 'Fuji Electric Co., Ltd',
+// 'Keithley-Instruments' => 'Keithley Instruments',
+// 'ICC-Inc.' => 'ICC, Inc.',
+// 'Kawasaki-LSI' => 'Kawasaki LSI',
+// 'FFC-Ltd' => 'FFC, Ltd',
+// 'COM21-Inc.' => 'COM21, Inc.',
+// 'Cytechinfo-Inc.' => 'Cytechinfo Inc.',
+// 'AVB-Inc.-anko-' => 'AVB, Inc. [anko?]',
+// 'Canopus-Co.-Ltd' => 'Canopus Co., Ltd',
+// 'Compass-Communications' => 'Compass Communications',
+// 'Dexin-Corp.-Ltd' => 'Dexin Corp., Ltd',
+// 'PI-Engineering-Inc.' => 'PI Engineering, Inc.',
+// 'Unixtar-Technology-Inc.' => 'Unixtar Technology, Inc.',
+// 'AOC-International' => 'AOC International',
+// 'RFC-Distributions-PTE-Ltd' => 'RFC Distribution(s) PTE, Ltd',
+// 'PSC-Scanning-Inc.' => 'PSC Scanning, Inc.',
+// 'Harman-Multimedia' => 'Harman Multimedia',
+// 'InterAct-Inc.' => 'InterAct, Inc.',
+// 'Chic-Technology-Corp.' => 'Chic Technology Corp.',
+// 'LeCroy-Corp.' => 'LeCroy Corp.',
+// 'Barco-Display-Systems' => 'Barco Display Systems',
+// 'Jazz-Hipster-Corp.' => 'Jazz Hipster Corp.',
+// 'Vista-Imaging-Inc.' => 'Vista Imaging, Inc.',
+// 'Jean-Co.-Ltd' => 'Jean Co., Ltd',
+// 'Anchor-C-C-Co.-Ltd' => 'Anchor C&C Co., Ltd',
+// 'Bridge-Information-Co.-Ltd' => 'Bridge Information Co., Ltd',
+// 'Genrad-Ads' => 'Genrad Ads',
+// 'SMK-Manufacturing-Inc.' => 'SMK Manufacturing, Inc.',
+// 'Solid-Year' => 'Solid Year',
+// 'EEH-Datalink-GmbH' => 'EEH Datalink GmbH',
+// 'Auctor-Corp.' => 'Auctor Corp.',
+// 'Transmonde-Technologies-Inc.' => 'Transmonde Technologies, Inc.',
+// 'Costar-Electronics-Inc.' => 'Costar Electronics, Inc.',
+// 'Totoku-Electric-Co.-Ltd' => 'Totoku Electric Co., Ltd',
+// 'TransAct-Technologies-Inc.' => 'TransAct Technologies, Inc.',
+// 'Bio-Rad-Laboratories' => 'Bio-Rad Laboratories',
+// 'MacAlly' => 'MacAlly',
+// 'Seiko-Instruments-Inc.' => 'Seiko Instruments, Inc.',
+// 'Veridicom-International-Inc.' => 'Veridicom International, Inc.',
+// 'Promptus-Communications-Inc.' => 'Promptus Communications, Inc.',
+// 'Act-Labs-Ltd' => 'Act Labs, Ltd',
+// 'Quatech-Inc.' => 'Quatech, Inc.',
+// 'Nissei-Electric-Co.' => 'Nissei Electric Co.',
+// 'Alaris-Inc.' => 'Alaris, Inc.',
+// 'Iotech-Inc.' => 'Iotech, Inc.',
+// 'Littelfuse-Inc.' => 'Littelfuse, Inc.',
+// 'Avocent-Corp.' => 'Avocent Corp.',
+// 'TiMedia-Technology-Co.-Ltd' => 'TiMedia Technology Co., Ltd',
+// 'Adomax-Technology-Co.-Ltd' => 'Adomax Technology Co., Ltd',
+// 'Tasking-Software-Inc.' => 'Tasking Software, Inc.',
+// 'Zida-Technologies-Ltd' => 'Zida Technologies, Ltd',
+// 'Creative-Labs' => 'Creative Labs',
+// 'JUJO-Electronics-Corp.' => 'JUJO Electronics Corp.',
+// 'Cyrix-Corp.' => 'Cyrix Corp.',
+// 'Micron-Technology-Inc.' => 'Micron Technology, Inc.',
+// 'Methode-Electronics-Inc.' => 'Methode Electronics, Inc.',
+// 'Sierra-Imaging-Inc.' => 'Sierra Imaging, Inc.',
+// 'Avision-Inc.' => 'Avision, Inc.',
+// 'Chrontel-Inc.' => 'Chrontel, Inc.',
+// 'Techwin-Corp.' => 'Techwin Corp.',
+// 'Taugagreining-HF' => 'Taugagreining HF',
+// 'Fong-Kai-Industrial-Co.-Ltd' => 'Fong Kai Industrial Co., Ltd',
+// 'RealMedia-Technology-Inc.' => 'RealMedia Technology, Inc.',
+// 'New-Technology-Cable-Ltd' => 'New Technology Cable, Ltd',
+// 'Hitex-Development-Tools' => 'Hitex Development Tools',
+// 'Woods-Industries-Inc.' => 'Woods Industries, Inc.',
+// 'VIA-Medical-Corp.' => 'VIA Medical Corp.',
+// 'TEAC-Corp.' => 'TEAC Corp.',
+// 'Who--Vision-Systems-Inc.' => 'Who? Vision Systems, Inc.',
+// 'UMAX' => 'UMAX',
+// 'Acton-Research-Corp.' => 'Acton Research Corp.',
+// 'Inside-Out-Networks' => 'Inside Out Networks',
+// 'Weli-Science-Co.-Ltd' => 'Weli Science Co., Ltd',
+// 'Ji-Haw-Industrial-Co.-Ltd' => 'Ji-Haw Industrial Co., Ltd',
+// 'TriTech-Microelectronics-Ltd' => 'TriTech Microelectronics, Ltd',
+// 'Suyin-Corp.' => 'Suyin Corp.',
+// 'WIBU-Systems-AG' => 'WIBU-Systems AG',
+// 'Dynapro-Systems' => 'Dynapro Systems',
+// 'Likom-Technology-Sdn.-Bhd.' => 'Likom Technology Sdn. Bhd.',
+// 'Stargate-Solutions-Inc.' => 'Stargate Solutions, Inc.',
+// 'CNF-Inc.' => 'CNF, Inc.',
+// 'Granite-Microsystems-Inc.' => 'Granite Microsystems, Inc.',
+// 'Glory-Mark-Electronic-Ltd' => 'Glory Mark Electronic, Ltd',
+// 'Tekcon-Electronics-Corp.' => 'Tekcon Electronics Corp.',
+// 'Sigma-Designs-Inc.' => 'Sigma Designs, Inc.',
+// 'Aethra' => 'Aethra',
+// 'Optoelectronics-Co.-Ltd' => 'Optoelectronics Co., Ltd',
+// 'Tracewell-Systems' => 'Tracewell Systems',
+// 'Silicon-Graphics' => 'Silicon Graphics',
+// 'Hamamatsu-Photonics-K.K.' => 'Hamamatsu Photonics K.K.',
+// 'Kansai-Electric-Co.-Ltd' => 'Kansai Electric Co., Ltd',
+// 'Topmax-Electronic-Co.-Ltd' => 'Topmax Electronic Co., Ltd',
+// 'Groovy-Technology-Corp.' => 'Groovy Technology Corp.',
+// 'Cypress-Semiconductor' => 'Cypress Semiconductor',
+// 'Aiwa-Co.-Ltd' => 'Aiwa Co., Ltd',
+// 'WordWand' => 'WordWand',
+// 'Oce-Printing-Systems-GmbH' => 'Oce Printing Systems GmbH',
+// 'Total-Technologies-Ltd' => 'Total Technologies, Ltd',
+// 'Linksys-Inc.' => 'Linksys, Inc.',
+// 'Entrega-Inc.' => 'Entrega, Inc.',
+// 'SigmaTel-Inc.' => 'SigmaTel, Inc.',
+// 'Sequel-Imaging' => 'Sequel Imaging',
+// 'Labtec-Inc.' => 'Labtec, Inc.',
+// 'HCL' => 'HCL',
+// 'DrayTek-Corp.' => 'DrayTek Corp.',
+// 'Teles-AG' => 'Teles AG',
+// 'Aiwa-Co.-Ltd' => 'Aiwa Co., Ltd',
+// 'ACard-Technology-Corp.' => 'ACard Technology Corp.',
+// 'Prolific-Technology-Inc.' => 'Prolific Technology, Inc.',
+// 'Efficient-Networks-Inc.' => 'Efficient Networks, Inc.',
+// 'Hohner-Corp.' => 'Hohner Corp.',
+// 'Intermec-Technologies-Corp.' => 'Intermec Technologies Corp.',
+// 'Virata-Ltd' => 'Virata, Ltd',
+// 'Victor-Company-of-Japan-Ltd' => 'Victor Company of Japan, Ltd',
+// 'Actiontec-Electronics-Inc.' => 'Actiontec Electronics, Inc.',
+// 'Minolta-Co.-Ltd' => 'Minolta Co., Ltd',
+// 'Pertech-Inc.' => 'Pertech, Inc.',
+// 'Potrans-International-Inc.' => 'Potrans International, Inc.',
+// 'CH-Products-Inc.' => 'CH Products, Inc.',
+// 'Golden-Bridge-Electech-Inc.' => 'Golden Bridge Electech, Inc.',
+// 'Hagiwara-Sys-Com-Co.-Ltd' => 'Hagiwara Sys-Com Co., Ltd',
+// 'Lego-Group' => 'Lego Group',
+// 'Chuntex-CTX' => 'Chuntex (CTX)',
+// 'Tektronix-Inc.' => 'Tektronix, Inc.',
+// 'Askey-Computer-Corp.' => 'Askey Computer Corp.',
+// 'Thomson-Inc.' => 'Thomson, Inc.',
+// 'Hughes-Network-Systems-HNS' => 'Hughes Network Systems (HNS)',
+// 'Marx' => 'Marx',
+// 'Allied-Data-Technologies-BV' => 'Allied Data Technologies BV',
+// 'Topro-Technology-Inc.' => 'Topro Technology, Inc.',
+// 'Saitek-PLC' => 'Saitek PLC',
+// 'Divio' => 'Divio',
+// 'MicroStore-Inc.' => 'MicroStore, Inc.',
+// 'Topaz-Systems-Inc.' => 'Topaz Systems, Inc.',
+// 'Westell' => 'Westell',
+// 'Sysgration-Ltd' => 'Sysgration, Ltd',
+// 'Pixela-Corp.' => 'Pixela Corp.',
+// 'Alcatel-Telecom' => 'Alcatel Telecom',
+// 'EDA-Inc.' => 'EDA, Inc.',
+// 'Oki-Data-Corp.' => 'Oki Data Corp.',
+// 'AGFA-Gevaert-NV' => 'AGFA-Gevaert NV',
+// 'Leoco-Corp.' => 'Leoco Corp.',
+// 'Phidgets-Inc.-formerly-GLAB' => 'Phidgets Inc. (formerly GLAB)',
+// 'Bizlink-International-Corp.' => 'Bizlink International Corp.',
+// 'Hagenuk-GmbH' => 'Hagenuk, GmbH',
+// 'Infowave-Software-Inc.' => 'Infowave Software, Inc.',
+// 'SIIG-Inc.' => 'SIIG, Inc.',
+// 'Taxan-Europe-Ltd' => 'Taxan (Europe), Ltd',
+// 'Newer-Technology-Inc.' => 'Newer Technology, Inc.',
+// 'Synaptics-Inc.' => 'Synaptics, Inc.',
+// 'Terayon-Communication-Systems' => 'Terayon Communication Systems',
+// 'Keyspan' => 'Keyspan',
+// 'SpheronVR-AG' => 'SpheronVR AG',
+// 'LapLink-Inc.' => 'LapLink, Inc.',
+// 'Daewoo-Electronics-Co.-Ltd' => 'Daewoo Electronics Co., Ltd',
+// 'Mitsubishi-Electric-Corp.' => 'Mitsubishi Electric Corp.',
+// 'Cisco-Systems' => 'Cisco Systems',
+// 'Toshiba' => 'Toshiba',
+// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.',
+// 'Phoenixtec-Power-Co.-Ltd' => 'Phoenixtec Power Co., Ltd',
+// 'Paradyne' => 'Paradyne',
+// 'Heisei-Electronics-Co.-Ltd' => 'Heisei Electronics Co., Ltd',
+// 'Multi-Tech-Systems-Inc.' => 'Multi-Tech Systems, Inc.',
+// 'ADS-Technologies-Inc.' => 'ADS Technologies, Inc.',
+// 'Alcatel-Microelectronics' => 'Alcatel Microelectronics',
+// 'Tiger-Jet-Network-Inc.' => 'Tiger Jet Network, Inc.',
+// 'Sirius-Technologies' => 'Sirius Technologies',
+// 'PC-Expert-Tech.-Co.-Ltd' => 'PC Expert Tech. Co., Ltd',
+// 'T.N.C-Industrial-Co.-Ltd' => 'T.N.C Industrial Co., Ltd',
+// 'Opcode-Systems-Inc.' => 'Opcode Systems, Inc.',
+// 'Emine-Technology-Co.' => 'Emine Technology Co.',
+// 'Wintrend-Technology-Co.-Ltd' => 'Wintrend Technology Co., Ltd',
+// 'Wailly-Technology-Ltd' => 'Wailly Technology Ltd',
+// 'Guillemot-Corp.' => 'Guillemot Corp.',
+// 'ASYST-electronic-d.o.o.' => 'ASYST electronic d.o.o.',
+// 'HSD-S.r.L' => 'HSD S.r.L',
+// 'Boston-Acoustics' => 'Boston Acoustics',
+// 'Gallant-Computer-Inc.' => 'Gallant Computer, Inc.',
+// 'Bvtech-Industry-Inc.' => 'Bvtech Industry, Inc.',
+// 'NKK-Corp.' => 'NKK Corp.',
+// 'Ariel-Corp.' => 'Ariel Corp.',
+// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.',
+// 'Putercom-Co.-Ltd' => 'Putercom Co., Ltd',
+// 'Silicon-Systems-Ltd-SSL' => 'Silicon Systems, Ltd (SSL)',
+// 'Comoss-Electronic-Co.-Ltd' => 'Comoss Electronic Co., Ltd',
+// 'Connect-Tech-Inc.' => 'Connect Tech, Inc.',
+// 'Interval-Research-Corp.' => 'Interval Research Corp.',
+// 'NewMotion-Inc.' => 'NewMotion, Inc.',
+// 'ZNK-Corp.' => 'ZNK Corp.',
+// 'Imation-Corp.' => 'Imation Corp.',
+// 'Tremon-Enterprises-Co.-Ltd' => 'Tremon Enterprises Co., Ltd',
+// 'Domain-Technologies-Inc.' => 'Domain Technologies, Inc.',
+// 'Eicon-Networks-Corp.' => 'Eicon Networks Corp.',
+// 'Ariston-Technologies' => 'Ariston Technologies',
+// 'Amitm' => 'Amitm',
+// 'Sunix-Co.-Ltd' => 'Sunix Co., Ltd',
+// 'Advanced-Card-Systems-Ltd' => 'Advanced Card Systems, Ltd',
+// 'Susteen-Inc.' => 'Susteen, Inc.',
+// 'ViewQuest-Technologies-Inc.' => 'ViewQuest Technologies, Inc.',
+// 'Lasat-Communications-A-S' => 'Lasat Communications A/S',
+// 'Asuscom-Network' => 'Asuscom Network',
+// 'Lorom-Industrial-Co.-Ltd' => 'Lorom Industrial Co., Ltd',
+// 'Mad-Catz-Inc.' => 'Mad Catz, Inc.',
+// 'Chaplet-Systems-Inc.' => 'Chaplet Systems, Inc.',
+// 'Suncom-Technologies' => 'Suncom Technologies',
+// 'Eutron-S.p.a.' => 'Eutron S.p.a.',
+// 'NEC-Inc.' => 'NEC, Inc.',
+// 'Syntech-Information-Co.-Ltd' => 'Syntech Information Co., Ltd',
+// 'Onkyo-Corp.' => 'Onkyo Corp.',
+// 'Labway-Corp.' => 'Labway Corp.',
+// 'EVer-Electronics-Corp.' => 'EVer Electronics Corp.',
+// 'Polestar-Tech.-Corp.' => 'Polestar Tech. Corp.',
+// 'C-C-C-Group-PLC' => 'C-C-C Group PLC',
+// 'Micronas-GmbH' => 'Micronas GmbH',
+// 'Digital-Stream-Corp.' => 'Digital Stream Corp.',
+// 'Aureal-Semiconductor' => 'Aureal Semiconductor',
+// 'Network-Technologies-Inc.' => 'Network Technologies, Inc.',
+// 'Sophisticated-Circuits-Inc.' => 'Sophisticated Circuits, Inc.',
+// 'Midiman' => 'Midiman',
+// 'Cyber-Power-System-Inc.' => 'Cyber Power System, Inc.',
+// 'X-Rite-Inc.' => 'X-Rite, Inc.',
+// 'Jess-Link-Products-Co.-Ltd' => 'Jess-Link Products Co., Ltd',
+// 'Tokheim-Corp.' => 'Tokheim Corp.',
+// 'Camtel-Technology-Corp.' => 'Camtel Technology Corp.',
+// 'Surecom-Technology-Corp.' => 'Surecom Technology Corp.',
+// 'OmniKey-AG' => 'OmniKey AG',
+// 'Partner-Tech' => 'Partner Tech',
+// 'Denso-Corp.' => 'Denso Corp.',
+// 'Kuan-Tech-Enterprise-Co.-Ltd' => 'Kuan Tech Enterprise Co., Ltd',
+// 'Jhen-Vei-Electronic-Co.-Ltd' => 'Jhen Vei Electronic Co., Ltd',
+// 'Observator-Instruments-BV' => 'Observator Instruments BV',
+// 'AmTRAN-Technology-Co.-Ltd' => 'AmTRAN Technology Co., Ltd',
+// 'Longshine-Electronics-Corp.' => 'Longshine Electronics Corp.',
+// 'Inalways-Corp.' => 'Inalways Corp.',
+// 'Comda-Enterprise-Corp.' => 'Comda Enterprise Corp.',
+// 'Volex-Inc.' => 'Volex, Inc.',
+// 'Fairchild-Semiconductor' => 'Fairchild Semiconductor',
+// 'Sankyo-Seiki-Mfg.-Co.-Ltd' => 'Sankyo Seiki Mfg. Co., Ltd',
+// 'Linksys' => 'Linksys',
+// 'Forward-Electronics-Co.-Ltd' => 'Forward Electronics Co., Ltd',
+// 'Griffin-Technology' => 'Griffin Technology',
+// 'Well-Excellent---Most-Corp.' => 'Well Excellent & Most Corp.',
+// 'Sagem-Monetel-GmbH' => 'Sagem Monetel GmbH',
+// 'SanDisk-Corp.' => 'SanDisk Corp.',
+// 'Trackerball' => 'Trackerball',
+// 'C3PO' => 'C3PO',
+// 'Vivitar-Inc.' => 'Vivitar, Inc.',
+// 'NTT-ME' => 'NTT-ME',
+// 'Logitec-Corp.' => 'Logitec Corp.',
+// 'Happ-Controls-Inc.' => 'Happ Controls, Inc.',
+// 'GTCO-CalComp' => 'GTCO/CalComp',
+// 'Brincom-Inc.' => 'Brincom, Inc.',
+// 'Axis-Communications-AB' => 'Axis Communications AB',
+// 'Wha-Yu-Industrial-Co.-Ltd' => 'Wha Yu Industrial Co., Ltd',
+// 'ABL-Electronics-Corp.' => 'ABL Electronics Corp.',
+// 'RealChip-Inc.' => 'RealChip, Inc.',
+// 'Certicom-Corp.' => 'Certicom Corp.',
+// 'Grandtech-Semiconductor-Corp.' => 'Grandtech Semiconductor Corp.',
+// 'Optelec' => 'Optelec',
+// 'Altera' => 'Altera',
+// 'Sagem' => 'Sagem',
+// 'Alfadata-Computer-Corp.' => 'Alfadata Computer Corp.',
+// 'Digicom-S.p.A.' => 'Digicom S.p.A.',
+// 'National-Technical-Systems' => 'National Technical Systems',
+// 'Onnto-Corp.' => 'Onnto Corp.',
+// 'Be-Inc.' => 'Be, Inc.',
+// 'ADMtek-Inc.' => 'ADMtek, Inc.',
+// 'Corega-K.K.' => 'Corega K.K.',
+// 'Freecom-Technologies' => 'Freecom Technologies',
+// 'Microtech' => 'Microtech',
+// 'Trust-Technologies' => 'Trust Technologies',
+// 'IMP-Inc.' => 'IMP, Inc.',
+// 'Motorola-BCS-Inc.' => 'Motorola BCS, Inc.',
+// 'Plustek-Inc.' => 'Plustek, Inc.',
+// 'Olympus-Optical-Co.-Ltd' => 'Olympus Optical Co., Ltd',
+// 'Mega-World-International-Ltd' => 'Mega World International, Ltd',
+// 'Marubun-Corp.' => 'Marubun Corp.',
+// 'TIME-Interconnect-Ltd' => 'TIME Interconnect, Ltd',
+// 'AboCom-Systems-Inc' => 'AboCom Systems Inc',
+// 'Canon-Computer-Systems-Inc.' => 'Canon Computer Systems, Inc.',
+// 'Webgear-Inc.' => 'Webgear, Inc.',
+// 'Veridicom' => 'Veridicom',
+// 'Keisokugiken' => 'Keisokugiken',
+// 'Datafab-Systems-Inc.' => 'Datafab Systems, Inc.',
+// 'APG-Cash-Drawer' => 'APG Cash Drawer',
+// 'ShareWave-Inc.' => 'ShareWave, Inc.',
+// 'Powertech-Industrial-Co.-Ltd' => 'Powertech Industrial Co., Ltd',
+// 'B.U.G.-Inc.' => 'B.U.G., Inc.',
+// 'Allied-Telesyn-International' => 'Allied Telesyn International',
+// 'AVerMedia-Technologies-Inc.' => 'AVerMedia Technologies, Inc.',
+// 'Kingmax-Technology-Inc.' => 'Kingmax Technology, Inc.',
+// 'Carry-Computer-Eng.-Co.-Ltd' => 'Carry Computer Eng., Co., Ltd',
+// 'Elektor' => 'Elektor',
+// 'Casio-Computer-Co.-Ltd' => 'Casio Computer Co., Ltd',
+// 'Dazzle' => 'Dazzle',
+// 'D-Link-System' => 'D-Link System',
+// 'Aptio-Products-Inc.' => 'Aptio Products, Inc.',
+// 'Cyberdata-Corp.' => 'Cyberdata Corp.',
+// 'Radiant-Systems' => 'Radiant Systems',
+// 'GCC-Technologies-Inc.' => 'GCC Technologies, Inc.',
+// 'Arasan-Chip-Systems' => 'Arasan Chip Systems',
+// 'Diamond-Multimedia' => 'Diamond Multimedia',
+// 'David-Electronics-Co.-Ltd' => 'David Electronics Co., Ltd',
+// 'Ambient-Technologies-Inc.' => 'Ambient Technologies, Inc.',
+// 'Elmeg-GmbH---Co.-Ltd' => 'Elmeg GmbH & Co., Ltd',
+// 'Planex-Communications-Inc.' => 'Planex Communications, Inc.',
+// 'Movado-Enterprise-Co.-Ltd' => 'Movado Enterprise Co., Ltd',
+// 'QPS-Inc.' => 'QPS, Inc.',
+// 'Allied-Cable-Corp.' => 'Allied Cable Corp.',
+// 'Mirvo-Toys-Inc.' => 'Mirvo Toys, Inc.',
+// 'Labsystems' => 'Labsystems',
+// 'Iwatsu-Electric-Co.-Ltd' => 'Iwatsu Electric Co., Ltd',
+// 'Double-H-Technology-Co.-Ltd' => 'Double-H Technology Co., Ltd',
+// 'STSN' => 'STSN',
+// 'Circuit-Assembly-Corp.' => 'Circuit Assembly Corp.',
+// 'Century-Corp.' => 'Century Corp.',
+// 'Dotop-Technology-Inc.' => 'Dotop Technology, Inc.',
+// 'DrayTek-Corp.' => 'DrayTek Corp.',
+// 'Mark-of-the-Unicorn' => 'Mark of the Unicorn',
+// 'Unknown' => 'Unknown',
+// 'Mag-Tek' => 'Mag-Tek',
+// 'Mako-Technologies-LLC' => 'Mako Technologies, LLC',
+// 'Zoom-Telephonics-Inc.' => 'Zoom Telephonics, Inc.',
+// 'Genicom-Technology-Inc.' => 'Genicom Technology, Inc.',
+// 'Evermuch-Technology-Co.-Ltd' => 'Evermuch Technology Co., Ltd',
+// 'Cross-Match-Technologies' => 'Cross Match Technologies',
+// 'Datalogic-S.p.A.' => 'Datalogic S.p.A.',
+// 'Teco-Image-Systems-Co.-Ltd' => 'Teco Image Systems Co., Ltd',
+// 'Mattel-Inc.' => 'Mattel, Inc.',
+// 'eLicenser' => 'eLicenser',
+// 'MG-Logic' => 'MG Logic',
+// 'Indigita-Corp.' => 'Indigita Corp.',
+// 'Mipsys' => 'Mipsys',
+// 'AlphaSmart-Inc.' => 'AlphaSmart, Inc.',
+// 'Reudo-Corp.' => 'Reudo Corp.',
+// 'GC-Protronics' => 'GC Protronics',
+// 'Data-Transit' => 'Data Transit',
+// 'BroadLogic-Inc.' => 'BroadLogic, Inc.',
+// 'Sato-Corp.' => 'Sato Corp.',
+// 'Handspring' => 'Handspring',
+// 'Palm-Inc.' => 'Palm, Inc.',
+// 'Kouwell-Electronics-Corp.' => 'Kouwell Electronics Corp.',
+// 'Sourcenext-Corp.' => 'Sourcenext Corp.',
+// 'Samsung-Techwin-Co.-Ltd' => 'Samsung Techwin Co., Ltd',
+// 'Accton-Technology-Corp.' => 'Accton Technology Corp.',
+// 'Global-Village' => 'Global Village',
+// 'Argosy-Research-Inc.' => 'Argosy Research, Inc.',
+// 'Rioport.com-Inc.' => 'Rioport.com, Inc.',
+// 'Welland-Industrial-Co.-Ltd' => 'Welland Industrial Co., Ltd',
+// 'NetGear-Inc.' => 'NetGear, Inc.',
+// 'KB-Gear' => 'KB Gear',
+// 'Empeg' => 'Empeg',
+// 'Fast-Point-Technologies-Inc.' => 'Fast Point Technologies, Inc.',
+// 'CSEM' => 'CSEM',
+// 'Topre-Corporation' => 'Topre Corporation',
+// 'ActiveWire-Inc.' => 'ActiveWire, Inc.',
+// 'B-B-Electronics' => 'B&B Electronics',
+// 'Hitachi-Maxell-Ltd' => 'Hitachi Maxell, Ltd',
+// 'Xircom' => 'Xircom',
+// 'ColorVision-Inc.' => 'ColorVision, Inc.',
+// 'Teletrol-Systems-Inc.' => 'Teletrol Systems, Inc.',
+// 'Filanet-Corp.' => 'Filanet Corp.',
+// 'NetGear-Inc.' => 'NetGear, Inc.',
+// 'Data-Translation-Inc.' => 'Data Translation, Inc.',
+// 'System-TALKS-Inc.' => 'System TALKS, Inc.',
+// 'MEC-IMEX-Inc.' => 'MEC IMEX, Inc.',
+// 'Metricom' => 'Metricom',
+// 'SanDisk-Inc.' => 'SanDisk, Inc.',
+// 'Xpeed-Inc.' => 'Xpeed, Inc.',
+// 'A-Tec-Subsystem-Inc.' => 'A-Tec Subsystem, Inc.',
+// 'Comtrol-Corp.' => 'Comtrol Corp.',
+// 'Adesso-Kbtek-America-Inc.' => 'Adesso/Kbtek America, Inc.',
+// 'Jaton-Corp.' => 'Jaton Corp.',
+// 'Virtual-IP-Group-Inc.' => 'Virtual IP Group, Inc.',
+// 'APT-Technologies-Inc.' => 'APT Technologies, Inc.',
+// 'Boca-Research-Inc.' => 'Boca Research, Inc.',
+// 'XAC-Automation-Corp.' => 'XAC Automation Corp.',
+// 'Hannstar-Electronics-Corp.' => 'Hannstar Electronics Corp.',
+// 'MassWorks-Inc.' => 'MassWorks, Inc.',
+// 'Swecoin-AB' => 'Swecoin AB',
+// 'iLok' => 'iLok',
+// 'DioGraphy-Inc.' => 'DioGraphy, Inc.',
+// 'Lauterbach' => 'Lauterbach',
+// 'Icron-Technologies-Corp.' => 'Icron Technologies Corp.',
+// 'NST-Co.-Ltd' => 'NST Co., Ltd',
+// 'Primex-Aerospace-Co.' => 'Primex Aerospace Co.',
+// 'e9-Inc.' => 'e9, Inc.',
+// 'Andrea-Electronics' => 'Andrea Electronics',
+// 'Macally-Mace-Group-Inc.' => 'Macally (Mace Group, Inc.)',
+// 'Sorenson-Vision-Inc.' => 'Sorenson Vision, Inc.',
+// 'NATSU' => 'NATSU',
+// 'RadioShack-Corp.-Tandy' => 'RadioShack Corp. (Tandy)',
+// 'Texas-Instruments-Japan' => 'Texas Instruments Japan',
+// 'Citizen-Watch-Co.-Ltd' => 'Citizen Watch Co., Ltd',
+// 'Precise-Biometrics' => 'Precise Biometrics',
+// 'Proxim-Inc.' => 'Proxim, Inc.',
+// 'Key-Nice-Enterprise-Co.-Ltd' => 'Key Nice Enterprise Co., Ltd',
+// '2Wire-Inc.' => '2Wire, Inc.',
+// 'Aiptek-International-Inc.' => 'Aiptek International, Inc.',
+// 'Jue-Hsun-Ind.-Corp.' => 'Jue Hsun Ind. Corp.',
+// 'Long-Well-Electronics-Corp.' => 'Long Well Electronics Corp.',
+// 'smartBridges-Inc.' => 'smartBridges, Inc.',
+// 'Virtual-Ink' => 'Virtual Ink',
+// 'Fujitsu-Siemens-Computers' => 'Fujitsu Siemens Computers',
+// 'IXXAT-Automation-GmbH' => 'IXXAT Automation GmbH',
+// 'Increment-P-Corp.' => 'Increment P Corp.',
+// 'Billionton-Systems-Inc.' => 'Billionton Systems, Inc.',
+// '---' => '???',
+// 'Spyrus-Inc.' => 'Spyrus, Inc.',
+// 'Olitec-Inc.' => 'Olitec, Inc.',
+// 'Pioneer-Corp.' => 'Pioneer Corp.',
+// 'Litronic' => 'Litronic',
+// 'Gemplus' => 'Gemplus',
+// 'Integrated-Memory-Logic' => 'Integrated Memory Logic',
+// 'Extended-Systems-Inc.' => 'Extended Systems, Inc.',
+// 'M-Systems-Flash-Disk-Pioneers' => 'M-Systems Flash Disk Pioneers',
+// 'MediaTek-Inc.' => 'MediaTek Inc.',
+// 'CCSI-Hesso' => 'CCSI/Hesso',
+// 'Corex-Technologies' => 'Corex Technologies',
+// 'CTI-Electronics-Corp.' => 'CTI Electronics Corp.',
+// 'Gotop-Information-Inc.' => 'Gotop Information Inc.',
+// 'SysTec-Co.-Ltd' => 'SysTec Co., Ltd',
+// 'Logic-3-International-Ltd' => 'Logic 3 International, Ltd',
+// 'Vernier' => 'Vernier',
+// 'Wipro-Technologies' => 'Wipro Technologies',
+// 'Caere' => 'Caere',
+// 'Socket-Communications' => 'Socket Communications',
+// 'Digianswer-A-S' => 'Digianswer A/S',
+// 'AuthenTec-Inc.' => 'AuthenTec, Inc.',
+// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems, Inc.',
+// 'VST-Technologies' => 'VST Technologies',
+// 'Faraday-Technology-Corp.' => 'Faraday Technology Corp.',
+// 'Audio-Technica-Corp.' => 'Audio-Technica Corp.',
+// 'Neurosmith' => 'Neurosmith',
+// 'Shining-Technology-Inc.' => 'Shining Technology, Inc.',
+// 'Fujitsu-Devices-Inc.' => 'Fujitsu Devices, Inc.',
+// 'Alation-Systems-Inc.' => 'Alation Systems, Inc.',
+// 'Philips-Speech-Processing' => 'Philips Speech Processing',
+// 'Voquette-Inc.' => 'Voquette, Inc.',
+// 'GlobeSpan-Inc.' => 'GlobeSpan, Inc.',
+// 'SmartDisk-Corp.' => 'SmartDisk Corp.',
+// 'Tiger-Electronics' => 'Tiger Electronics',
+// 'Garmin-International' => 'Garmin International',
+// 'Echelon-Co.' => 'Echelon Co.',
+// 'GoHubs-Inc.' => 'GoHubs, Inc.',
+// 'Dymo-CoStar-Corp.' => 'Dymo-CoStar Corp.',
+// 'IC-Media-Corp.' => 'IC Media Corp.',
+// 'Xerox' => 'Xerox',
+// 'Lakeview-Research' => 'Lakeview Research',
+// 'Summus-Ltd' => 'Summus, Ltd',
+// 'Oxford-Semiconductor-Ltd' => 'Oxford Semiconductor, Ltd',
+// 'American-Biometric-Co.' => 'American Biometric Co.',
+// 'Sena-Technologies-Inc.' => 'Sena Technologies, Inc.',
+// 'Toshiba-Corp.' => 'Toshiba Corp.',
+// 'Harmonic-Data-Systems-Ltd' => 'Harmonic Data Systems, Ltd',
+// 'Crescentec-Corp.' => 'Crescentec Corp.',
+// 'Quantum-Corp.' => 'Quantum Corp.',
+// 'Netcom-Systems' => 'Netcom Systems',
+// 'NuTesla' => 'NuTesla',
+// 'Lumberg-Inc.' => 'Lumberg, Inc.',
+// 'Pixart-Imaging-Inc.' => 'Pixart Imaging, Inc.',
+// 'Plextor-Corp.' => 'Plextor Corp.',
+// 'InnoSync-Inc.' => 'InnoSync, Inc.',
+// 'J.S.T.-Mfg.-Co.-Ltd' => 'J.S.T. Mfg. Co., Ltd',
+// 'Photobit-Corp.' => 'Photobit Corp.',
+// 'i2Go.com-LLC' => 'i2Go.com, LLC',
+// 'KORG-Inc.' => 'KORG, Inc.',
+// 'Pasco-Scientific' => 'Pasco Scientific',
+// 'Kronauer-music-in-digital' => 'Kronauer music in digital',
+// 'Linkup-Systems-Corp.' => 'Linkup Systems Corp.',
+// 'Cable-Television-Laboratories' => 'Cable Television Laboratories',
+// 'Yano' => 'Yano',
+// 'Kingston-Technology' => 'Kingston Technology',
+// 'RPM-Systems-Corp.' => 'RPM Systems Corp.',
+// 'NVidia-Corp.' => 'NVidia Corp.',
+// 'BSquare-Corp.' => 'BSquare Corp.',
+// 'Agilent-Technologies-Inc.' => 'Agilent Technologies, Inc.',
+// 'CompuLink-Research-Inc.' => 'CompuLink Research, Inc.',
+// 'Cologne-Chip-AG' => 'Cologne Chip AG',
+// 'Portsmith' => 'Portsmith',
+// 'Medialogic-Corp.' => 'Medialogic Corp.',
+// 'K-Tec-Electronics' => 'K-Tec Electronics',
+// 'Polycom-Inc.' => 'Polycom, Inc.',
+// 'Acer---' => 'Acer (??)',
+// 'Catalyst-Enterprises-Inc.' => 'Catalyst Enterprises, Inc.',
+// 'Feitian-Technologies-Inc.' => 'Feitian Technologies, Inc.',
+// 'Gretag-Macbeth-AG' => 'Gretag-Macbeth AG',
+// 'Schlumberger' => 'Schlumberger',
+// 'OLE-Communications-Inc.' => 'OLE Communications, Inc.',
+// 'Adirondack-Wire---Cable' => 'Adirondack Wire & Cable',
+// 'Lightsurf-Technologies' => 'Lightsurf Technologies',
+// 'Beckhoff-GmbH' => 'Beckhoff GmbH',
+// 'Jeilin-Technology-Corp.-Ltd' => 'Jeilin Technology Corp., Ltd',
+// 'Minds-At-Work-LLC' => 'Minds At Work LLC',
+// 'Knudsen-Engineering-Ltd' => 'Knudsen Engineering, Ltd',
+// 'Marunix-Co.-Ltd' => 'Marunix Co., Ltd',
+// 'Rosun-Technologies-Inc.' => 'Rosun Technologies, Inc.',
+// 'Barun-Electronics-Co.-Ltd' => 'Barun Electronics Co., Ltd',
+// 'Oak-Technology-Ltd' => 'Oak Technology, Ltd',
+// 'Apricorn' => 'Apricorn',
+// 'Vitana-Corp.' => 'Vitana Corp.',
+// 'INDesign' => 'INDesign',
+// 'Kenwood-TMI-Corp.' => 'Kenwood TMI Corp.',
+// 'Gemstar-eBook-Group-Ltd' => 'Gemstar eBook Group, Ltd',
+// 'Zippy-Technology-Corp.' => 'Zippy Technology Corp.',
+// 'PairGain-Technologies' => 'PairGain Technologies',
+// 'Contech-Research-Inc.' => 'Contech Research, Inc.',
+// 'VCON-Telecommunications' => 'VCON Telecommunications',
+// 'Poinchips' => 'Poinchips',
+// 'Intersil-Corp.' => 'Intersil Corp.',
+// 'Japan-Cash-Machine-Co.-Ltd.' => 'Japan Cash Machine Co., Ltd.',
+// 'Tripp-Lite' => 'Tripp Lite',
+// 'Altius-Solutions-Inc.' => 'Altius Solutions, Inc.',
+// 'MDS-Telephone-Systems' => 'MDS Telephone Systems',
+// 'Celltrix-Technology-Co.-Ltd' => 'Celltrix Technology Co., Ltd',
+// 'Grundig' => 'Grundig',
+// 'MySmart.Com' => 'MySmart.Com',
+// 'Auerswald-GmbH---Co.-KG' => 'Auerswald GmbH & Co. KG',
+// 'Arris-Interactive-LLC' => 'Arris Interactive LLC',
+// 'Nisca-Corp.' => 'Nisca Corp.',
+// 'ActivCard-Inc.' => 'ActivCard, Inc.',
+// 'ACTiSYS-Corp.' => 'ACTiSYS Corp.',
+// 'Memory-Corp.' => 'Memory Corp.',
+// 'Workbit-Corp.' => 'Workbit Corp.',
+// 'City-Electronics-Ltd' => 'City Electronics, Ltd',
+// 'NeoMagic-Inc.' => 'NeoMagic, Inc.',
+// 'Vreelin-Engineering-Inc.' => 'Vreelin Engineering, Inc.',
+// 'Com-One' => 'Com One',
+// 'Novatel-Wireless' => 'Novatel Wireless',
+// 'KRF-Tech-Ltd' => 'KRF Tech, Ltd',
+// 'A4-Tech-Co.-Ltd' => 'A4 Tech Co., Ltd',
+// 'Measurement-Computing-Corp.' => 'Measurement Computing Corp.',
+// 'Aimex-Corp.' => 'Aimex Corp.',
+// 'Fellowes-Inc.' => 'Fellowes, Inc.',
+// 'Addonics-Technologies-Corp.' => 'Addonics Technologies Corp.',
+// 'Intellon-Corp.' => 'Intellon Corp.',
+// 'Jo-Dan-International-Inc.' => 'Jo-Dan International, Inc.',
+// 'Silutia-Inc.' => 'Silutia, Inc.',
+// 'Real-3D-Inc.' => 'Real 3D, Inc.',
+// 'AKAI-Professional-M.I.-Corp.' => 'AKAI Professional M.I. Corp.',
+// 'Chen-Source-Inc.' => 'Chen-Source, Inc.',
+// 'IM-Networks-Inc.' => 'IM Networks, Inc.',
+// 'Xitel' => 'Xitel',
+// 'GoFlight-Inc.' => 'GoFlight, Inc.',
+// 'AresCom' => 'AresCom',
+// 'RocketChips-Inc.' => 'RocketChips, Inc.',
+// 'Edu-Science-H.K.-Ltd' => 'Edu-Science (H.K.), Ltd',
+// 'SoftConnex-Technologies-Inc.' => 'SoftConnex Technologies, Inc.',
+// 'Bay-Associates' => 'Bay Associates',
+// 'Mtek-Vision' => 'Mtek Vision',
+// 'Altera' => 'Altera',
+// 'Gain-Technology-Corp.' => 'Gain Technology Corp.',
+// 'Liquid-Audio' => 'Liquid Audio',
+// 'ViA-Inc.' => 'ViA, Inc.',
+// 'Ontrak-Control-Systems-Inc.' => 'Ontrak Control Systems Inc.',
+// 'Cybex-Computer-Products-Co.' => 'Cybex Computer Products Co.',
+// 'Xentec-Inc.' => 'Xentec, Inc.',
+// 'Cambridge-Silicon-Radio-Ltd' => 'Cambridge Silicon Radio, Ltd',
+// 'Telebyte-Inc.' => 'Telebyte, Inc.',
+// 'Spacelabs-Medical-Inc.' => 'Spacelabs Medical, Inc.',
+// 'Scalar-Corp.' => 'Scalar Corp.',
+// 'Trek-Technology-S-PTE-Ltd' => 'Trek Technology (S) PTE, Ltd',
+// 'Pentax-Corp.' => 'Pentax Corp.',
+// 'Hua-Geng-Technologies-Inc.' => 'Hua Geng Technologies, Inc.',
+// 'Datacard-Group' => 'Datacard Group',
+// 'AK-Modul-Bus-Computer-GmbH' => 'AK-Modul-Bus Computer GmbH',
+// 'TG3-Electronics-Inc.' => 'TG3 Electronics, Inc.',
+// 'Radikal-Technologies' => 'Radikal Technologies',
+// 'Gilat-Satellite-Networks-Ltd' => 'Gilat Satellite Networks, Ltd',
+// 'PentaMedia-Co.-Ltd' => 'PentaMedia Co., Ltd',
+// 'NTT-DoCoMo-Inc.' => 'NTT DoCoMo, Inc.',
+// 'Varo-Vision' => 'Varo Vision',
+// 'Swissonic-AG' => 'Swissonic AG',
+// 'Boca-Systems-Inc.' => 'Boca Systems, Inc.',
+// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.',
+// 'Hirose-Electric' => 'Hirose Electric',
+// 'I-O-Interconnect' => 'I/O Interconnect',
+// 'Fujitsu-Media-Devices-Ltd' => 'Fujitsu Media Devices, Ltd',
+// 'Computex-Co.-Ltd' => 'Computex Co., Ltd',
+// 'Evolution-Electronics-Ltd' => 'Evolution Electronics, Ltd',
+// 'Litton-Systems-Inc.' => 'Litton Systems, Inc.',
+// 'Mimaki-Engineering-Co.-Ltd' => 'Mimaki Engineering Co., Ltd',
+// 'Sony-Electronics-Inc.' => 'Sony Electronics, Inc.',
+// 'Jebsee-Electronics-Co.-Ltd' => 'Jebsee Electronics Co., Ltd',
+// 'Portable-Peripheral-Co.-Ltd' => 'Portable Peripheral Co., Ltd',
+// 'Electronics-For-Imaging-Inc.' => 'Electronics For Imaging, Inc.',
+// 'EAsics-NV' => 'EAsics NV',
+// 'Broadcom-Corp.' => 'Broadcom Corp.',
+// 'Diatrend-Corp.' => 'Diatrend Corp.',
+// 'Zebra' => 'Zebra',
+// 'MPMan' => 'MPMan',
+// 'ClearCube-Technology' => 'ClearCube Technology',
+// 'Medeli-Electronics-Co.-Ltd' => 'Medeli Electronics Co., Ltd',
+// 'Comaide-Corp.' => 'Comaide Corp.',
+// 'Chroma-ate-Inc.' => 'Chroma ate, Inc.',
+// 'Green-House-Co.-Ltd' => 'Green House Co., Ltd',
+// 'UPS-Manufacturing' => 'UPS Manufacturing',
+// 'Benwin' => 'Benwin',
+// 'Core-Technology-Inc.' => 'Core Technology, Inc.',
+// 'International-Game-Technology' => 'International Game Technology',
+// 'Sanwa-Denshi' => 'Sanwa Denshi',
+// 'NSTL-Inc.' => 'NSTL, Inc.',
+// 'Octagon-Systems-Corp.' => 'Octagon Systems Corp.',
+// 'Rexon-Technology-Corp.-Ltd' => 'Rexon Technology Corp., Ltd',
+// 'Chesen-Electronics-Corp.' => 'Chesen Electronics Corp.',
+// 'Syscan' => 'Syscan',
+// 'NextComm-Inc.' => 'NextComm, Inc.',
+// 'Maui-Innovative-Peripherals' => 'Maui Innovative Peripherals',
+// 'Idexx-Labs' => 'Idexx Labs',
+// 'NITGen-Co.-Ltd' => 'NITGen Co., Ltd',
+// 'Picturetel' => 'Picturetel',
+// 'Candy-Technology-Co.-Ltd' => 'Candy Technology Co., Ltd',
+// 'Globlink-Technology-Inc.' => 'Globlink Technology, Inc.',
+// 'EGO-SYStems-Inc.' => 'EGO SYStems, Inc.',
+// 'C-Technologies-AB' => 'C Technologies AB',
+// 'Intersense' => 'Intersense',
+// 'Lava-Computer-Mfg.-Inc.' => 'Lava Computer Mfg., Inc.',
+// 'Develco-Elektronik' => 'Develco Elektronik',
+// 'First-International-Digital' => 'First International Digital',
+// 'Perception-Digital-Ltd' => 'Perception Digital, Ltd',
+// 'TriGem-Computer-Inc.' => 'TriGem Computer, Inc.',
+// 'Baromtec-Co.' => 'Baromtec Co.',
+// 'Japan-CBM-Corp.' => 'Japan CBM Corp.',
+// 'Vision-Shape-Europe-SA' => 'Vision Shape Europe SA',
+// 'iCompression-Inc.' => 'iCompression, Inc.',
+// 'Rohde---Schwarz-GmbH---Co.-KG' => 'Rohde & Schwarz GmbH & Co. KG',
+// 'NEC-infrontia-Corp.-Nitsuko' => 'NEC infrontia Corp. (Nitsuko)',
+// 'Digitalway-Co.-Ltd' => 'Digitalway Co., Ltd',
+// 'FEIG-ELECTRONIC-GmbH' => 'FEIG ELECTRONIC GmbH',
+// 'Ellisys' => 'Ellisys',
+// 'Stereo-Link' => 'Stereo-Link',
+// 'Diolan' => 'Diolan',
+// 'Leco-Corp.' => 'Leco Corp.',
+// 'I---C-Corp.' => 'I & C Corp.',
+// 'Singing-Electrons-Inc.' => 'Singing Electrons, Inc.',
+// 'Panwest-Corp.' => 'Panwest Corp.',
+// 'Z-Star-Microelectronics-Corp.' => 'Z-Star Microelectronics Corp.',
+// 'Micro-Solutions-Inc.' => 'Micro Solutions, Inc.',
+// 'OPEN-Networks-Ltd' => 'OPEN Networks Ltd',
+// 'Koga-Electronics-Co.' => 'Koga Electronics Co.',
+// 'ID-Tech' => 'ID Tech',
+// 'ZyDAS' => 'ZyDAS',
+// 'Intoto-Inc.' => 'Intoto, Inc.',
+// 'Intellix-Corp.' => 'Intellix Corp.',
+// 'Remotec-Technology-Ltd' => 'Remotec Technology, Ltd',
+// 'Data-Encryption-Systems-Ltd.' => 'Data Encryption Systems Ltd.',
+// 'Allion-Computer-Inc.' => 'Allion Computer, Inc.',
+// 'Taito-Corp.' => 'Taito Corp.',
+// 'Neodym-Systems-Inc.' => 'Neodym Systems, Inc.',
+// 'System-Support-Co.-Ltd' => 'System Support Co., Ltd',
+// 'SciEssence-LLC' => 'SciEssence, LLC',
+// 'TTP-Communications-Ltd' => 'TTP Communications, Ltd',
+// 'Neodio-Technologies-Corp.' => 'Neodio Technologies Corp.',
+// 'Option' => 'Option',
+// 'Silver-I-Co.-Ltd' => 'Silver I Co., Ltd',
+// 'B2C2-Inc.' => 'B2C2, Inc.',
+// 'Hama-Inc.' => 'Hama, Inc.',
+// 'Zaptronix-Ltd' => 'Zaptronix Ltd',
+// 'Tateno-Dennou-Inc.' => 'Tateno Dennou, Inc.',
+// 'Cummins-Engine-Co.' => 'Cummins Engine Co.',
+// 'INGENICO' => 'INGENICO',
+// 'ASUSTek-Computer-Inc.' => 'ASUSTek Computer, Inc.',
+// 'Datamax-ONeil' => 'Datamax-ONeil',
+// 'Todos-AB' => 'Todos AB',
+// 'ProjectLab' => 'ProjectLab',
+// 'GN-Netcom' => 'GN Netcom',
+// 'AVID-Technology' => 'AVID Technology',
+// 'Pcally' => 'Pcally',
+// 'I-Tech-Solutions-Co.-Ltd' => 'I Tech Solutions Co., Ltd',
+// 'Insyde-Software-Corp.' => 'Insyde Software Corp.',
+// 'TransDimension-Inc.' => 'TransDimension, Inc.',
+// 'Yokogawa-Electric-Corp.' => 'Yokogawa Electric Corp.',
+// 'Pan-Asia-Electronics-Co.-Ltd' => 'Pan-Asia Electronics Co., Ltd',
+// 'Link-Evolution-Corp.' => 'Link Evolution Corp.',
+// 'Ritek-Corp.' => 'Ritek Corp.',
+// 'Kenwood-Corp.' => 'Kenwood Corp.',
+// 'Village-Center-Inc.' => 'Village Center, Inc.',
+// 'PNY-Technologies-Inc.' => 'PNY Technologies, Inc.',
+// 'Contour-Design-Inc.' => 'Contour Design, Inc.',
+// 'Hitachi-ULSI-Systems-Co.-Ltd' => 'Hitachi ULSI Systems Co., Ltd',
+// 'Gear-Head' => 'Gear Head',
+// 'IPaxess' => 'IPaxess',
+// 'Tekram-Technology-Co.-Ltd' => 'Tekram Technology Co., Ltd',
+// 'Olivetti-Techcenter' => 'Olivetti Techcenter',
+// 'Kikusui-Electronics-Corp.' => 'Kikusui Electronics Corp.',
+// 'Hal-Corp.' => 'Hal Corp.',
+// 'Play.com-Inc.' => 'Play.com, Inc.',
+// 'Sportbug.com-Inc.' => 'Sportbug.com, Inc.',
+// 'TechnoTrend-AG' => 'TechnoTrend AG',
+// 'ASCII-Corp.' => 'ASCII Corp.',
+// 'Pine-Corp.-Ltd.' => 'Pine Corp. Ltd.',
+// 'Graphtec-America-Inc.' => 'Graphtec America, Inc.',
+// 'Musical-Electronics-Ltd' => 'Musical Electronics, Ltd',
+// 'Dumpries-Co.-Ltd' => 'Dumpries Co., Ltd',
+// 'Comfort-Keyboard-Co.' => 'Comfort Keyboard Co.',
+// 'Colorado-MicroDisplay-Inc.' => 'Colorado MicroDisplay, Inc.',
+// 'Sinbon-Electronics-Co.-Ltd' => 'Sinbon Electronics Co., Ltd',
+// 'TYI-Systems-Ltd' => 'TYI Systems, Ltd',
+// 'Lake-Communications-Ltd' => 'Lake Communications, Ltd',
+// 'Corel-Corp.' => 'Corel Corp.',
+// 'Green-Electronics-Co.-Ltd' => 'Green Electronics Co., Ltd',
+// 'Nsine-Ltd' => 'Nsine, Ltd',
+// 'NEC-Viewtechnology-Ltd' => 'NEC Viewtechnology, Ltd',
+// 'Orange-Micro-Inc.' => 'Orange Micro, Inc.',
+// 'ADLink-Technology-Inc.' => 'ADLink Technology, Inc.',
+// 'Wonderful-Wire-Cable-Co.-Ltd' => 'Wonderful Wire Cable Co., Ltd',
+// 'Expert-Magnetics-Corp.' => 'Expert Magnetics Corp.',
+// 'CacheVision' => 'CacheVision',
+// 'Maxim-Integrated-Products' => 'Maxim Integrated Products',
+// 'Nagano-Japan-Radio-Co.-Ltd' => 'Nagano Japan Radio Co., Ltd',
+// 'PortalPlayer-Inc.' => 'PortalPlayer, Inc.',
+// 'SHIN-EI-Sangyo-Co.-Ltd' => 'SHIN-EI Sangyo Co., Ltd',
+// 'Computone-Corp.' => 'Computone Corp.',
+// 'Roland-DG-Corp.' => 'Roland DG Corp.',
+// 'Sunrise-Telecom-Inc.' => 'Sunrise Telecom, Inc.',
+// 'Zeevo-Inc.' => 'Zeevo, Inc.',
+// 'Taiko-Denki-Co.-Ltd' => 'Taiko Denki Co., Ltd',
+// 'ITRAN-Communications-Ltd' => 'ITRAN Communications, Ltd',
+// 'Astrodesign-Inc.' => 'Astrodesign, Inc.',
+// 'id3-Semiconductors' => 'id3 Semiconductors',
+// 'Rextron-Technology-Inc.' => 'Rextron Technology, Inc.',
+// 'Elkat-Electronics-Sdn.-Bhd.' => 'Elkat Electronics, Sdn., Bhd.',
+// 'Exputer-Systems-Inc.' => 'Exputer Systems, Inc.',
+// 'Plus-One-I---T-Inc.' => 'Plus-One I & T, Inc.',
+// 'SMART-Technologies-Inc.' => 'SMART Technologies Inc.',
+// 'ASIX-Electronics-Corp.' => 'ASIX Electronics Corp.',
+// 'Sewon-Telecom' => 'Sewon Telecom',
+// 'O2-Micro-Inc.' => 'O2 Micro, Inc.',
+// 'Playmates-Toys-Inc.' => 'Playmates Toys, Inc.',
+// 'Audio-International-Inc.' => 'Audio International, Inc.',
+// 'Dipl.-Ing.-Stefan-Kunde' => 'Dipl.-Ing. Stefan Kunde',
+// 'Softprotec-Co.' => 'Softprotec Co.',
+// 'Chippo-Technologies' => 'Chippo Technologies',
+// 'U.S.-Robotics' => 'U.S. Robotics',
+// 'Concord-Camera-Corp.' => 'Concord Camera Corp.',
+// 'Infinilink-Corp.' => 'Infinilink Corp.',
+// 'Ambit-Microsystems-Corp.' => 'Ambit Microsystems Corp.',
+// 'Ofuji-Technology' => 'Ofuji Technology',
+// 'High-Tech-Computer-Corp.' => 'High Tech Computer Corp.',
+// 'Murata-Manufacturing-Co.-Ltd' => 'Murata Manufacturing Co., Ltd',
+// 'Network-Alchemy' => 'Network Alchemy',
+// 'Joytech-Computer-Co.-Ltd' => 'Joytech Computer Co., Ltd',
+// 'Eiger-M-C-Co.-Ltd' => 'Eiger M&C Co., Ltd',
+// 'ZAccess-Systems' => 'ZAccess Systems',
+// 'General-Meters-Corp.' => 'General Meters Corp.',
+// 'Assistive-Technology-Inc.' => 'Assistive Technology, Inc.',
+// 'System-Connection-Inc.' => 'System Connection, Inc.',
+// 'Knilink-Technology-Inc.' => 'Knilink Technology, Inc.',
+// 'Fuw-Yng-Electronics-Co.-Ltd' => 'Fuw Yng Electronics Co., Ltd',
+// 'Seagate-RSS-LLC' => 'Seagate RSS LLC',
+// 'IPWireless-Inc.' => 'IPWireless, Inc.',
+// 'Microcube-Corp.' => 'Microcube Corp.',
+// 'JCN-Co.-Ltd' => 'JCN Co., Ltd',
+// 'ExWAY-Inc.' => 'ExWAY, Inc.',
+// 'X10-Wireless-Technology-Inc.' => 'X10 Wireless Technology, Inc.',
+// 'Telmax-Communications' => 'Telmax Communications',
+// 'ECI-Telecom-Ltd' => 'ECI Telecom, Ltd',
+// 'Startek-Engineering-Inc.' => 'Startek Engineering, Inc.',
+// 'Andrew-Pargeter---Associates' => 'Andrew Pargeter & Associates',
+// 'Realtek-Semiconductor-Corp.' => 'Realtek Semiconductor Corp.',
+// 'Y-Media-Corp.' => 'Y Media Corp.',
+// 'Orange-PCS' => 'Orange PCS',
+// 'Kanda-Tsushin-Kogyo-Co.-Ltd' => 'Kanda Tsushin Kogyo Co., Ltd',
+// 'TOYO-Corp.' => 'TOYO Corp.',
+// 'Elka-International-Ltd' => 'Elka International, Ltd',
+// 'DOME-imaging-systems-Inc.' => 'DOME imaging systems, Inc.',
+// 'Silicon-Labs' => 'Silicon Labs',
+// 'LTK-Industries-Ltd' => 'LTK Industries, Ltd',
+// 'Way2Call-Communications' => 'Way2Call Communications',
+// 'Pace-Micro-Technology-PLC' => 'Pace Micro Technology PLC',
+// 'Intracom-S.A.' => 'Intracom S.A.',
+// 'Konexx' => 'Konexx',
+// 'Addonics-Technologies-Inc.' => 'Addonics Technologies, Inc.',
+// 'Sunny-Giken-Inc.' => 'Sunny Giken, Inc.',
+// 'Fujitsu-Siemens-Computers' => 'Fujitsu Siemens Computers',
+// 'MOTO-Development-Group-Inc.' => 'MOTO Development Group, Inc.',
+// 'Appian-Graphics' => 'Appian Graphics',
+// 'Hasbro-Games-Inc.' => 'Hasbro Games, Inc.',
+// 'Infinite-Data-Storage-Ltd' => 'Infinite Data Storage, Ltd',
+// 'Agate' => 'Agate',
+// 'Comjet-Information-System' => 'Comjet Information System',
+// 'Highpoint-Technologies-Inc.' => 'Highpoint Technologies, Inc.',
+// 'Dura-Micro-Inc.-Acomdata' => 'Dura Micro, Inc. (Acomdata)',
+// 'Zeroplus' => 'Zeroplus',
+// 'Iris-Graphics' => 'Iris Graphics',
+// 'Gyration-Inc.' => 'Gyration, Inc.',
+// 'Cyberboard-A-S' => 'Cyberboard A/S',
+// 'SynerTek-Korea-Inc.' => 'SynerTek Korea, Inc.',
+// 'cyberPIXIE-Inc.' => 'cyberPIXIE, Inc.',
+// 'Silicon-Motion-Inc.' => 'Silicon Motion, Inc.',
+// 'MIPS-Technologies' => 'MIPS Technologies',
+// 'Tally-Printer-Corp.' => 'Tally Printer Corp.',
+// 'Lernout-+-Hauspie' => 'Lernout + Hauspie',
+// 'Taiyo-Yuden' => 'Taiyo Yuden',
+// 'Sampo-Corp.' => 'Sampo Corp.',
+// 'Prolific-Technology-Inc.' => 'Prolific Technology Inc.',
+// 'RFIDeas-Inc' => 'RFIDeas, Inc',
+// 'Metro' => 'Metro',
+// 'Eagletron-Inc.' => 'Eagletron, Inc.',
+// 'E-Ink-Corp.' => 'E Ink Corp.',
+// 'e.Digital' => 'e.Digital',
+// 'IFR' => 'IFR',
+// 'Komatsu-Ltd' => 'Komatsu, Ltd',
+// 'Radius-Co.-Ltd' => 'Radius Co., Ltd',
+// 'Innocom-Inc.' => 'Innocom, Inc.',
+// 'Nextcell-Inc.' => 'Nextcell, Inc.',
+// 'Motorola-iDEN' => 'Motorola iDEN',
+// 'Microdia' => 'Microdia',
+// 'Reiner-SCT-Kartensysteme-GmbH' => 'Reiner SCT Kartensysteme GmbH',
+// 'Sealevel-Systems-Inc.' => 'Sealevel Systems, Inc.',
+// 'ViewPLUS-Inc.' => 'ViewPLUS, Inc.',
+// 'Glory-Ltd' => 'Glory, Ltd',
+// 'Spectrum-Digital-Inc.' => 'Spectrum Digital, Inc.',
+// 'Billion-Bright-Ltd' => 'Billion Bright, Ltd',
+// 'Vidar-Systems-Corp.' => 'Vidar Systems Corp.',
+// 'TRS-International-Mfg.-Inc.' => 'TRS International Mfg., Inc.',
+// 'Xytronix-Research---Design' => 'Xytronix Research & Design',
+// 'Apogee-Electronics-Corp.' => 'Apogee Electronics Corp.',
+// 'Chant-Sincere-Co.-Ltd' => 'Chant Sincere Co., Ltd',
+// 'Toko-Inc.' => 'Toko, Inc.',
+// 'Eminence-Enterprise-Co.-Ltd' => 'Eminence Enterprise Co., Ltd',
+// 'Rexon-Electronics-Corp.' => 'Rexon Electronics Corp.',
+// 'Concept-Telecom-Ltd' => 'Concept Telecom, Ltd',
+// 'MCT-Elektronikladen' => 'MCT Elektronikladen',
+// 'Optronic-Laboratories-Inc.' => 'Optronic Laboratories Inc.',
+// 'JMTek-LLC.' => 'JMTek, LLC.',
+// 'Sipix-Group-Ltd' => 'Sipix Group, Ltd',
+// 'Detto-Corp.' => 'Detto Corp.',
+// 'Wing-Span-Enterprise-Co.-Ltd' => 'Wing-Span Enterprise Co., Ltd',
+// 'NDA-Technologies-Inc.' => 'NDA Technologies, Inc.',
+// 'Kyocera-Wireless-Corp.' => 'Kyocera Wireless Corp.',
+// 'Honda-Tsushin-Kogyo-Co.-Ltd' => 'Honda Tsushin Kogyo Co., Ltd',
+// 'Pathway-Connectivity-Inc.' => 'Pathway Connectivity, Inc.',
+// 'Wavefly-Corp.' => 'Wavefly Corp.',
+// 'Coactive-Networks' => 'Coactive Networks',
+// 'Tempo' => 'Tempo',
+// 'Cesscom-Co.-Ltd' => 'Cesscom Co., Ltd',
+// 'Applied-Microsystems' => 'Applied Microsystems',
+// 'Berkshire-Products-Inc.' => 'Berkshire Products, Inc.',
+// 'Innochips-Co.-Ltd' => 'Innochips Co., Ltd',
+// 'Hanwool-Robotics-Corp.' => 'Hanwool Robotics Corp.',
+// 'Jobin-Yvon-Inc.' => 'Jobin Yvon, Inc.',
+// 'SemTek' => 'SemTek',
+// 'Zyfer' => 'Zyfer',
+// 'Sega-Corp.' => 'Sega Corp.',
+// 'ST-T-Instrument-Corp.' => 'ST&T Instrument Corp.',
+// 'BAE-Systems-Canada-Inc.' => 'BAE Systems Canada, Inc.',
+// 'Castles-Technology-Co.-Ltd' => 'Castles Technology Co., Ltd',
+// 'Motorola-CGISS' => 'Motorola CGISS',
+// 'Ascom-Business-Systems-Ltd' => 'Ascom Business Systems, Ltd',
+// 'Buslink' => 'Buslink',
+// 'Flying-Pig-Systems' => 'Flying Pig Systems',
+// 'Innovonics-Inc.' => 'Innovonics, Inc.',
+// 'Celestix-Networks-Pte.-Ltd' => 'Celestix Networks, Pte., Ltd',
+// 'Singatron-Enterprise-Co.-Ltd' => 'Singatron Enterprise Co., Ltd',
+// 'Opticis-Co.-Ltd' => 'Opticis Co., Ltd',
+// 'Palmax-Technology-Co.-Ltd' => 'Palmax Technology Co., Ltd',
+// 'Keryx-Technologies-Inc.' => 'Keryx Technologies, Inc.',
+// 'Kuon-Yi-Industrial-Corp.' => 'Kuon Yi Industrial Corp.',
+// 'Given-Imaging-Ltd' => 'Given Imaging, Ltd',
+// 'Timex-Corp.' => 'Timex Corp.',
+// 'Rimage-Corp.' => 'Rimage Corp.',
+// 'emsys-GmbH' => 'emsys GmbH',
+// 'Sendo' => 'Sendo',
+// 'Intermagic-Corp.' => 'Intermagic Corp.',
+// 'Kontron-Medical-AG' => 'Kontron Medical AG',
+// 'Technotools-Corp.' => 'Technotools Corp.',
+// 'BroadMAX-Technologies-Inc.' => 'BroadMAX Technologies, Inc.',
+// 'Amphenol' => 'Amphenol',
+// 'SKNet-Co.-Ltd' => 'SKNet Co., Ltd',
+// 'Domex-Technology-Corp.' => 'Domex Technology Corp.',
+// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH',
+// 'Bang-Olufsen' => 'Bang Olufsen',
+// 'LabJack-Corporation' => 'LabJack Corporation',
+// 'NewChip-S.r.l.' => 'NewChip S.r.l.',
+// 'JS-Digitech-Inc.' => 'JS Digitech, Inc.',
+// 'Hitachi-Shin-Din-Cable-Ltd' => 'Hitachi Shin Din Cable, Ltd',
+// 'Z-Com' => 'Z-Com',
+// 'pico-Technology' => 'pico Technology',
+// 'e-Conn-Electronic-Co.-Ltd' => 'e-Conn Electronic Co., Ltd',
+// 'ENE-Technology-Inc.' => 'ENE Technology, Inc.',
+// 'Atheros-Communications-Inc.' => 'Atheros Communications, Inc.',
+// 'Fomtex-Corp.' => 'Fomtex Corp.',
+// 'Cellink-Co.-Ltd' => 'Cellink Co., Ltd',
+// 'Compucable-Corp.' => 'Compucable Corp.',
+// 'ishoni-Networks' => 'ishoni Networks',
+// 'Clarisys-Inc.' => 'Clarisys, Inc.',
+// 'Inviso-Inc.' => 'Inviso, Inc.',
+// 'Minolta-QMS-Inc.' => 'Minolta-QMS, Inc.',
+// 'SAFA-MEDIA-Co.-Ltd.' => 'SAFA MEDIA Co., Ltd.',
+// 'UTStarcom' => 'UTStarcom',
+// 'Contemporary-Controls' => 'Contemporary Controls',
+// 'Astron-Electronics-Co.-Ltd' => 'Astron Electronics Co., Ltd',
+// 'MKNet-Corp.' => 'MKNet Corp.',
+// 'Hybrid-Networks-Inc.' => 'Hybrid Networks, Inc.',
+// 'Feng-Shin-Cable-Co.-Ltd' => 'Feng Shin Cable Co., Ltd',
+// 'Elastic-Networks' => 'Elastic Networks',
+// 'Maspro-Denkoh-Corp.' => 'Maspro Denkoh Corp.',
+// 'Hansol-Electronics-Inc.' => 'Hansol Electronics, Inc.',
+// 'BMF-Corp.' => 'BMF Corp.',
+// 'Array-Comm-Inc.' => 'Array Comm, Inc.',
+// 'OnStream-b.v.' => 'OnStream b.v.',
+// 'NALTEC-Inc.' => 'NALTEC, Inc.',
+// 'coaXmedia' => 'coaXmedia',
+// 'NXP' => 'NXP',
+// 'AirSpeak-Inc.' => 'AirSpeak, Inc.',
+// 'Rearden-Steel-Technologies' => 'Rearden Steel Technologies',
+// 'Dah-Kun-Co.-Ltd' => 'Dah Kun Co., Ltd',
+// 'Posiflex-Technologies-Inc.' => 'Posiflex Technologies, Inc.',
+// 'Sri-Cable-Technology-Ltd' => 'Sri Cable Technology, Ltd',
+// 'Tangtop-Technology-Co.-Ltd' => 'Tangtop Technology Co., Ltd',
+// 'Fitcom-inc.' => 'Fitcom, inc.',
+// 'MTS-Systems-Corp.' => 'MTS Systems Corp.',
+// 'Ascor-Inc.' => 'Ascor, Inc.',
+// 'Full-Der-Co.-Ltd' => 'Full Der Co., Ltd',
+// 'Kobil-Systems-GmbH' => 'Kobil Systems GmbH',
+// 'Maxtor' => 'Maxtor',
+// 'NF-Corp.' => 'NF Corp.',
+// 'Grape-Systems-Inc.' => 'Grape Systems, Inc.',
+// 'Tedas-AG' => 'Tedas AG',
+// 'Coherent-Inc.' => 'Coherent, Inc.',
+// 'Agere-Systems-Netherland-BV' => 'Agere Systems Netherland BV',
+// 'EADS-Airbus-France' => 'EADS Airbus France',
+// 'Cleware-GmbH' => 'Cleware GmbH',
+// 'Volex-Asia-Pte.-Ltd' => 'Volex (Asia) Pte., Ltd',
+// 'HMI-Co.-Ltd' => 'HMI Co., Ltd',
+// 'Holon-Corp.' => 'Holon Corp.',
+// 'ASKA-Technologies-Inc.' => 'ASKA Technologies, Inc.',
+// 'AVLAB-Technology-Inc.' => 'AVLAB Technology, Inc.',
+// 'Solomon-Microtech-Ltd' => 'Solomon Microtech, Ltd',
+// 'SMC-Networks-Inc.' => 'SMC Networks, Inc.',
+// 'Myacom-Ltd' => 'Myacom, Ltd',
+// 'CSI-Inc.' => 'CSI, Inc.',
+// 'IVL-Technologies-Ltd' => 'IVL Technologies, Ltd',
+// 'Darfon-Electronics-Corp.' => 'Darfon Electronics Corp.',
+// 'Fritz-Gegauf-AG' => 'Fritz Gegauf AG',
+// 'DXG-Technology-Corp.' => 'DXG Technology Corp.',
+// 'KMJP-Co.-Ltd' => 'KMJP Co., Ltd',
+// 'TMT' => 'TMT',
+// 'Advanet-Inc.' => 'Advanet, Inc.',
+// 'NSI' => 'NSI',
+// 'Megapower-International-Corp.' => 'Megapower International Corp.',
+// 'And-Or-Logic' => 'And-Or Logic',
+// 'Try-Computer-Co.-Ltd' => 'Try Computer Co., Ltd',
+// 'Hirakawa-Hewtech-Corp.' => 'Hirakawa Hewtech Corp.',
+// 'Winmate-Communication-Inc.' => 'Winmate Communication, Inc.',
+// 'Hits-Communications-Inc.' => 'Hits Communications, Inc.',
+// 'MFP-Korea-Inc.' => 'MFP Korea, Inc.',
+// 'Power-Sentry-Newpoint' => 'Power Sentry/Newpoint',
+// 'Japan-Distributor-Corp.' => 'Japan Distributor Corp.',
+// 'MARX-Datentechnik-GmbH' => 'MARX Datentechnik GmbH',
+// 'Wellco-Technology-Co.-Ltd' => 'Wellco Technology Co., Ltd',
+// 'Phison-Electronics-Corp.' => 'Phison Electronics Corp.',
+// 'Essential-Reality-LLC' => 'Essential Reality LLC',
+// 'TechnoVision' => 'TechnoVision',
+// 'Think-Outside-Inc.' => 'Think Outside, Inc.',
+// 'Dolby-Laboratories-Inc.' => 'Dolby Laboratories Inc.',
+// 'Oz-Software' => 'Oz Software',
+// 'King-Jim-Co.-Ltd' => 'King Jim Co., Ltd',
+// 'Ascom-Telecommunications-Ltd' => 'Ascom Telecommunications, Ltd',
+// 'C-Media-Electronics-Inc.' => 'C-Media Electronics, Inc.',
+// 'Global-Sun-Technology-Inc.' => 'Global Sun Technology, Inc.',
+// 'Pitney-Bowes' => 'Pitney Bowes',
+// 'Sure-Fire-Electrical-Corp.' => 'Sure-Fire Electrical Corp.',
+// 'Skanhex-Technology-Inc.' => 'Skanhex Technology, Inc.',
+// 'Mars-Semiconductor-Corp.' => 'Mars Semiconductor Corp.',
+// 'Trazer-Technologies-Inc.' => 'Trazer Technologies, Inc.',
+// 'RTX-Telecom-AS' => 'RTX Telecom AS',
+// 'Tat-Shing-Electrical-Co.' => 'Tat Shing Electrical Co.',
+// 'Sanwa-Supply-Inc.' => 'Sanwa Supply, Inc.',
+// 'Avaya' => 'Avaya',
+// 'Powercom-Co.-Ltd' => 'Powercom Co., Ltd',
+// 'Danger-Research' => 'Danger Research',
+// 'Polar-Electro-OY' => 'Polar Electro OY',
+// 'IOGear-Inc.' => 'IOGear, Inc.',
+// 'softDSP-Co.-Ltd' => 'softDSP Co., Ltd',
+// 'Cubig-Group' => 'Cubig Group',
+// 'Westover-Scientific' => 'Westover Scientific',
+// 'Micro-Star-International' => 'Micro Star International',
+// 'Wen-Te-Electronics-Co.-Ltd' => 'Wen Te Electronics Co., Ltd',
+// 'Tekram-Technology-Co.-Ltd' => 'Tekram Technology Co., Ltd',
+// 'ELCON-Systemtechnik' => 'ELCON Systemtechnik',
+// 'A-D-Medical' => 'A&D Medical',
+// 'Quik-Tech-Solutions' => 'Quik Tech Solutions',
+// 'Tamagawa-Seiki-Co.-Ltd' => 'Tamagawa Seiki Co., Ltd',
+// 'Macpower-Peripherals-Ltd' => 'Macpower Peripherals, Ltd',
+// 'SDK-Co.-Ltd' => 'SDK Co., Ltd',
+// 'First-Cable-Line-Inc.' => 'First Cable Line, Inc.',
+// 'NetworkFab-Corp.' => 'NetworkFab Corp.',
+// 'Access-Solutions' => 'Access Solutions',
+// 'Contek-Electronics-Co.-Ltd' => 'Contek Electronics Co., Ltd',
+// 'MediaQ' => 'MediaQ',
+// 'Custom-Engineering-SPA' => 'Custom Engineering SPA',
+// 'California-Micro-Devices' => 'California Micro Devices',
+// 'Kocom-Co.-Ltd' => 'Kocom Co., Ltd',
+// 'Netac-Technology-Co.-Ltd' => 'Netac Technology Co., Ltd',
+// 'HighSpeed-Surfing' => 'HighSpeed Surfing',
+// 'Tamarack-Inc.' => 'Tamarack, Inc.',
+// 'Datelink-Technology-Co.-Ltd' => 'Datelink Technology Co., Ltd',
+// 'Ubicom-Inc.' => 'Ubicom, Inc.',
+// 'BD-Consumer-Healthcare' => 'BD Consumer Healthcare',
+// 'Novasonics' => 'Novasonics',
+// 'Lifetime-Memory-Products' => 'Lifetime Memory Products',
+// 'Full-Rise-Electronic-Co.-Ltd' => 'Full Rise Electronic Co., Ltd',
+// 'NET-SYS' => 'NET&SYS',
+// 'Sitecom-Europe-B.V.' => 'Sitecom Europe B.V.',
+// 'Nippon-Systemware-Co.-Ltd' => 'Nippon Systemware Co., Ltd',
+// 'Winbest-Technology-Co.-Ltd' => 'Winbest Technology Co., Ltd',
+// 'Amigo-Technology-Inc.' => 'Amigo Technology Inc.',
+// 'Gesytec' => 'Gesytec',
+// 'VMware-Inc.' => 'VMware, Inc.',
+// 'JMTek-LLC' => 'JMTek, LLC',
+// 'Walex-Electronic-Ltd' => 'Walex Electronic, Ltd',
+// 'Crewave' => 'Crewave',
+// 'Pegasus-Technologies-Ltd.' => 'Pegasus Technologies Ltd.',
+// 'Cowon-Systems-Inc.' => 'Cowon Systems, Inc.',
+// 'Symbian-Ltd.' => 'Symbian Ltd.',
+// 'VinChip-Systems-Inc.' => 'VinChip Systems, Inc.',
+// 'J-Phone-East-Co.-Ltd' => 'J-Phone East Co., Ltd',
+// 'HeartMath-LLC' => 'HeartMath LLC',
+// 'Micro-Computer-Control-Corp.' => 'Micro Computer Control Corp.',
+// '3Pea-Technologies-Inc.' => '3Pea Technologies, Inc.',
+// 'TiePie-engineering' => 'TiePie engineering',
+// 'Stratitec-Inc.' => 'Stratitec, Inc.',
+// 'Neostar-Technology-Co.-Ltd' => 'Neostar Technology Co., Ltd',
+// 'Mansella-Ltd' => 'Mansella, Ltd',
+// 'Line6-Inc.' => 'Line6, Inc.',
+// 'Julia-Corp.-Ltd' => 'Julia Corp., Ltd',
+// 'Radica-Games-Ltd' => 'Radica Games, Ltd',
+// 'Speed-Dragon-Multimedia-Ltd' => 'Speed Dragon Multimedia, Ltd',
+// 'Active-Co.-Ltd' => 'Active Co., Ltd',
+// 'Neltron-Industrial-Co.-Ltd' => 'Neltron Industrial Co., Ltd',
+// 'Conwise-Technology-Co.-Ltd.' => 'Conwise Technology Co., Ltd.',
+// 'Hawking-Technologies' => 'Hawking Technologies',
+// 'Fossil-Inc.' => 'Fossil, Inc.',
+// 'Megawin-Technology-Co.-Ltd' => 'Megawin Technology Co., Ltd',
+// 'Logic3' => 'Logic3',
+// 'Hsi-Chin-Electronics-Co.-Ltd' => 'Hsi-Chin Electronics Co., Ltd',
+// 'TVS-Electronics-Ltd' => 'TVS Electronics, Ltd',
+// 'Archos-Inc.' => 'Archos, Inc.',
+// 'On-Tech-Industry-Co.-Ltd' => 'On-Tech Industry Co., Ltd',
+// 'Gmate-Inc.' => 'Gmate, Inc.',
+// 'Shin-An-Wire---Cable-Co.' => 'Shin An Wire & Cable Co.',
+// 'MediaTek-Inc.' => 'MediaTek Inc.',
+// 'GreenAsia-Inc.' => 'GreenAsia Inc.',
+// 'WiebeTech-LLC' => 'WiebeTech, LLC',
+// 'VTech-Engineering-Canada-Ltd' => 'VTech Engineering Canada, Ltd',
+// 'Cs-Glory-Enterprise-Co.-Ltd' => 'Cs Glory Enterprise Co., Ltd',
+// 'eM-Technics-Co.-Ltd' => 'eM Technics Co., Ltd',
+// 'Future-Technology-Co.-Ltd' => 'Future Technology Co., Ltd',
+// 'Aplux-Communications-Ltd' => 'Aplux Communications, Ltd',
+// 'Fingerworks-Inc.' => 'Fingerworks, Inc.',
+// 'Parallel-Dice-Co.-Ltd' => 'Parallel Dice Co., Ltd',
+// 'TA-HSING-Industries-Ltd' => 'TA HSING Industries, Ltd',
+// 'ADTEC-Corp.' => 'ADTEC Corp.',
+// 'Streamzap-Inc.' => 'Streamzap, Inc.',
+// 'Tamura-Corp.' => 'Tamura Corp.',
+// 'Ours-Technology-Inc.' => 'Ours Technology, Inc.',
+// 'Nihon-Computer-Co.-Ltd' => 'Nihon Computer Co., Ltd',
+// 'MSL-Enterprises-Corp.' => 'MSL Enterprises Corp.',
+// 'CenDyne-Inc.' => 'CenDyne, Inc.',
+// 'Humax-Co.-Ltd' => 'Humax Co., Ltd',
+// 'NovaTech' => 'NovaTech',
+// 'WIS-Technologies-Inc.' => 'WIS Technologies, Inc.',
+// 'Y-S-Electronic-Co.-Ltd' => 'Y-S Electronic Co., Ltd',
+// 'Saint-Technology-Corp.' => 'Saint Technology Corp.',
+// 'Endor-AG' => 'Endor AG',
+// 'VWeb-Corp.' => 'VWeb Corp.',
+// 'Abit-Computer-Corp.' => 'Abit Computer Corp.',
+// 'Sweetray-Industrial-Ltd' => 'Sweetray Industrial, Ltd',
+// 'Axell-Co.-Ltd' => 'Axell Co., Ltd',
+// 'Ballracing-Developments-Ltd' => 'Ballracing Developments, Ltd',
+// 'InnoVISION-Multimedia-Ltd' => 'InnoVISION Multimedia, Ltd',
+// 'Theta-Link-Corp.' => 'Theta Link Corp.',
+// 'Lite-On-IT-Corp.' => 'Lite-On IT Corp.',
+// 'TaiSol-Electronics-Co.-Ltd' => 'TaiSol Electronics Co., Ltd',
+// 'Phogenix-Imaging-LLC' => 'Phogenix Imaging, LLC',
+// 'WinMaxGroup' => 'WinMaxGroup',
+// 'Kyoto-Micro-Computer-Co.-Ltd' => 'Kyoto Micro Computer Co., Ltd',
+// 'Wing-Tech-Enterprise-Co.-Ltd' => 'Wing-Tech Enterprise Co., Ltd',
+// 'Fiberbyte' => 'Fiberbyte',
+// 'Noriake-Itron-Corp.' => 'Noriake Itron Corp.',
+// 'e-MDT-Co.-Ltd' => 'e-MDT Co., Ltd',
+// 'Shima-Seiki-Mfg.-Ltd' => 'Shima Seiki Mfg., Ltd',
+// 'Sarotech-Co.-Ltd' => 'Sarotech Co., Ltd',
+// 'AMI-Semiconductor-Inc.' => 'AMI Semiconductor, Inc.',
+// 'ComTrue-Technology-Corp.' => 'ComTrue Technology Corp.',
+// 'Sunrich-Technology-Ltd' => 'Sunrich Technology, Ltd',
+// 'D-WAV-Scientific-Co.-Ltd' => 'D-WAV Scientific Co., Ltd',
+// 'Hitachi-Cable-Ltd' => 'Hitachi Cable, Ltd',
+// 'Aichi-Micro-Intelligent-Corp.' => 'Aichi Micro Intelligent Corp.',
+// 'I-O-Magic-Corp.' => 'I/O Magic Corp.',
+// 'Lynn-Products-Inc.' => 'Lynn Products, Inc.',
+// 'DSI-Datotech' => 'DSI Datotech',
+// 'PointChips' => 'PointChips',
+// 'Yield-Microelectronics-Corp.' => 'Yield Microelectronics Corp.',
+// 'SM-Tech-Co.-Ltd-Tulip' => 'SM Tech Co., Ltd (Tulip)',
+// 'Oasis-Semiconductor' => 'Oasis Semiconductor',
+// 'Wem-Technology-Inc.' => 'Wem Technology, Inc.',
+// 'CAS-Corp.' => 'CAS Corp.',
+// 'Hori-Co.-Ltd' => 'Hori Co., Ltd',
+// 'Energy-Full-Corp.' => 'Energy Full Corp.',
+// 'LD-Didactic-GmbH' => 'LD Didactic GmbH',
+// 'Mars-Engineering-Corp.' => 'Mars Engineering Corp.',
+// 'Acetek-Technology-Co.-Ltd' => 'Acetek Technology Co., Ltd',
+// 'Finger-Lakes-Instrumentation' => 'Finger Lakes Instrumentation',
+// 'Oracom-Co.-Ltd' => 'Oracom Co., Ltd',
+// 'Onset-Computer-Corp.' => 'Onset Computer Corp.',
+// 'Funai-Electric-Co.-Ltd' => 'Funai Electric Co., Ltd',
+// 'Iwill-Corp.' => 'Iwill Corp.',
+// 'IOI-Technology-Corp.' => 'IOI Technology Corp.',
+// 'Senior-Industries-Inc.' => 'Senior Industries, Inc.',
+// 'Flex-P-Industries-Snd.-Bhd.' => 'Flex-P Industries, Snd., Bhd.',
+// 'ViPower-Inc.' => 'ViPower, Inc.',
+// 'Priva-Design-Services' => 'Priva Design Services',
+// 'Jess-Technology-Co.-Ltd' => 'Jess Technology Co., Ltd',
+// 'Chrysalis-Development' => 'Chrysalis Development',
+// 'Kokuyo-Co.-Ltd' => 'Kokuyo Co., Ltd',
+// 'Nien-Yi-Industrial-Corp.' => 'Nien-Yi Industrial Corp.',
+// 'Airprime-Incorporated' => 'Airprime, Incorporated',
+// 'RDC-Semiconductor-Co.-Ltd' => 'RDC Semiconductor Co., Ltd',
+// 'Polhemus' => 'Polhemus',
+// 'St.-John-Technology-Co.-Ltd' => 'St. John Technology Co., Ltd',
+// 'WorldWide-Cable-Opto-Corp.' => 'WorldWide Cable Opto Corp.',
+// 'Microtune-Inc.' => 'Microtune, Inc.',
+// 'Freedom-Scientific' => 'Freedom Scientific',
+// 'Wing-Key-Electrical-Co.-Ltd' => 'Wing Key Electrical Co., Ltd',
+// 'AmbiCom-Inc.' => 'AmbiCom, Inc.',
+// 'Prairiecomm-Inc.' => 'Prairiecomm, Inc.',
+// 'NewAge-International-LLC' => 'NewAge International, LLC',
+// 'Key-Technology-Corp.' => 'Key Technology Corp.',
+// 'NTK-Ltd' => 'NTK, Ltd',
+// 'Varian-Inc.' => 'Varian, Inc.',
+// 'Acrox-Technologies-Co.-Ltd' => 'Acrox Technologies Co., Ltd',
+// 'LeapFrog-Enterprises' => 'LeapFrog Enterprises',
+// 'Kobe-Steel-Ltd' => 'Kobe Steel, Ltd',
+// 'Dionex-Corp.' => 'Dionex Corp.',
+// 'Vibren-Technologies-Inc.' => 'Vibren Technologies, Inc.',
+// 'INTELLIGENT-SYSTEMS' => 'INTELLIGENT SYSTEMS',
+// 'DFI' => 'DFI',
+// 'DQ-Technology-Inc.' => 'DQ Technology, Inc.',
+// 'NetBotz-Inc.' => 'NetBotz, Inc.',
+// 'Fluke-Corp.' => 'Fluke Corp.',
+// 'VTech-Holdings-Ltd' => 'VTech Holdings, Ltd',
+// 'Yazaki-Corp.' => 'Yazaki Corp.',
+// 'Uniwill-Computer-Corp.' => 'Uniwill Computer Corp.',
+// 'Kingnet-Technology-Co.-Ltd' => 'Kingnet Technology Co., Ltd',
+// 'Soma-Networks' => 'Soma Networks',
+// 'CviLux-Corp.' => 'CviLux Corp.',
+// 'CyberBank-Corp.' => 'CyberBank Corp.',
+// 'Hyun-Won-Inc.' => 'Hyun Won, Inc.',
+// 'Lucent-Technologies' => 'Lucent Technologies',
+// 'Starconn-Electronic-Co.-Ltd' => 'Starconn Electronic Co., Ltd',
+// 'ATL-Technology' => 'ATL Technology',
+// 'Sotec-Co.-Ltd' => 'Sotec Co., Ltd',
+// 'Epox-Computer-Co.-Ltd' => 'Epox Computer Co., Ltd',
+// 'Logic-Controls-Inc.' => 'Logic Controls, Inc.',
+// 'Winpoint-Electronic-Corp.' => 'Winpoint Electronic Corp.',
+// 'Inclose-Design-Inc.' => 'Inclose Design, Inc.',
+// 'Wistron-Corp.' => 'Wistron Corp.',
+// 'AACom-Corp.' => 'AACom Corp.',
+// 'Bitwise-Systems-Inc.' => 'Bitwise Systems, Inc.',
+// 'Mitac-Internatinal-Corp.' => 'Mitac Internatinal Corp.',
+// 'Delcom-Engineering' => 'Delcom Engineering',
+// 'Dataplus-Supplies-Inc.' => 'Dataplus Supplies, Inc.',
+// 'Research-In-Motion-Ltd.' => 'Research In Motion, Ltd.',
+// 'Dynastream-Innovations-Inc.' => 'Dynastream Innovations, Inc.',
+// 'Tulip-Computers-B.V.' => 'Tulip Computers B.V.',
+// 'Giant-Electronics-Ltd.' => 'Giant Electronics Ltd.',
+// 'Tenovis-GmbH---Co.-KG' => 'Tenovis GmbH & Co., KG',
+// 'Micro-Plus' => 'Micro Plus',
+// 'IN-Tech-Electronics-Ltd' => 'IN-Tech Electronics, Ltd',
+// 'Greenconn-U.S.A.-Inc.' => 'Greenconn (U.S.A.), Inc.',
+// 'DVICO' => 'DVICO',
+// 'United-Computer-Accessories' => 'United Computer Accessories',
+// 'CRS-Electronic-Co.-Ltd' => 'CRS Electronic Co., Ltd',
+// 'UMC-Electronics-Co.-Ltd' => 'UMC Electronics Co., Ltd',
+// 'Access-Co.-Ltd' => 'Access Co., Ltd',
+// 'Xsido-Corp.' => 'Xsido Corp.',
+// 'MJ-Research-Inc.' => 'MJ Research, Inc.',
+// 'Core-Valley-Co.-Ltd' => 'Core Valley Co., Ltd',
+// 'Aopen-Inc.' => 'Aopen, Inc.',
+// 'Speed-Tech-Corp.' => 'Speed Tech Corp.',
+// 'Sigma-Corp.' => 'Sigma Corp.',
+// 'LG-Electronics-Inc.' => 'LG Electronics, Inc.',
+// 'Apacer-Technology-Inc.' => 'Apacer Technology, Inc.',
+// 'iRiver-Ltd.' => 'iRiver, Ltd.',
+// 'Emuzed-Inc.' => 'Emuzed, Inc.',
+// 'AV-Chaseway-Ltd' => 'AV Chaseway, Ltd',
+// 'Chou-Chin-Industrial-Co.-Ltd' => 'Chou Chin Industrial Co., Ltd',
+// 'Netopia-Inc.' => 'Netopia, Inc.',
+// 'Fukuda-Denshi-Co.-Ltd' => 'Fukuda Denshi Co., Ltd',
+// 'Mobile-Media-Tech.' => 'Mobile Media Tech.',
+// 'Densitron-Technologies-PLC' => 'Densitron Technologies PLC',
+// 'Softronics-Pty.-Ltd' => 'Softronics Pty., Ltd',
+// 'Labtec' => 'Labtec',
+// 'Shinko-Shoji-Co.-Ltd' => 'Shinko Shoji Co., Ltd',
+// 'Hyper-Paltek' => 'Hyper-Paltek',
+// 'Newly-Corp.' => 'Newly Corp.',
+// 'Time-Domain' => 'Time Domain',
+// 'Inovys-Corp.' => 'Inovys Corp.',
+// 'Atlantic-Coast-Telesys' => 'Atlantic Coast Telesys',
+// 'Ramos-Technology-Co.-Ltd' => 'Ramos Technology Co., Ltd',
+// 'Infotronic-America-Inc.' => 'Infotronic America, Inc.',
+// 'Etoms-Electronics-Corp.' => 'Etoms Electronics Corp.',
+// 'Winic-Corp.' => 'Winic Corp.',
+// 'Comax-Technology-Inc.' => 'Comax Technology, Inc.',
+// 'C-One-Technology-Corp.' => 'C-One Technology Corp.',
+// 'Nucam-Corp.' => 'Nucam Corp.',
+// 'Ideazon-Inc.' => 'Ideazon, Inc.',
+// 'devolo-AG' => 'devolo AG',
+// 'Stanton' => 'Stanton',
+// 'iCreate-Technologies-Corp.' => 'iCreate Technologies Corp.',
+// 'Chu-Yuen-Enterprise-Co.-Ltd' => 'Chu Yuen Enterprise Co., Ltd',
+// 'Targus-Group-International' => 'Targus Group International',
+// 'Mylex---Buslogic' => 'Mylex / Buslogic',
+// 'AMCO-TEC-International-Inc.' => 'AMCO TEC International, Inc.',
+// 'Newport-Corporation' => 'Newport Corporation',
+// 'WB-Electronics' => 'WB Electronics',
+// 'Yubico.com' => 'Yubico.com',
+// 'Immanuel-Electronics-Co.-Ltd' => 'Immanuel Electronics Co., Ltd',
+// 'BMS-International-Beheer-N.V.' => 'BMS International Beheer N.V.',
+// 'Hsin-Chen-Ent-Co.-Ltd' => 'Hsin Chen Ent Co., Ltd',
+// 'ON-Semiconductor' => 'ON Semiconductor',
+// 'Giesecke---Devrient-GmbH' => 'Giesecke & Devrient GmbH',
+// 'Delkin-Devices-Inc.' => 'Delkin Devices, Inc.',
+// 'Easthome-Industrial-Co.-Ltd' => 'Easthome Industrial Co., Ltd',
+// 'CCYU-Technology' => 'CCYU Technology',
+// 'Loyal-Legend-Ltd' => 'Loyal Legend, Ltd',
+// 'Curitel-Communications-Inc.' => 'Curitel Communications, Inc.',
+// 'San-Chieh-Manufacturing-Ltd' => 'San Chieh Manufacturing, Ltd',
+// 'ConectL' => 'ConectL',
+// 'Money-Controls' => 'Money Controls',
+// 'GCT-Semiconductor-Inc.' => 'GCT Semiconductor, Inc.',
+// 'Gateway-Inc.' => 'Gateway, Inc.',
+// 'Arlec-Australia-Ltd' => 'Arlec Australia, Ltd',
+// 'Midoriya-Electric-Co.-Ltd' => 'Midoriya Electric Co., Ltd',
+// 'KidzMouse-Inc.' => 'KidzMouse, Inc.',
+// 'Shin-Etsukaken-Co.-Ltd' => 'Shin-Etsukaken Co., Ltd',
+// 'Canon-Electronics-Inc.' => 'Canon Electronics, Inc.',
+// 'Pantech-Co.-Ltd' => 'Pantech Co., Ltd',
+// 'Chloride-Power-Protection' => 'Chloride Power Protection',
+// 'Grand-tek-Technology-Co.-Ltd' => 'Grand-tek Technology Co., Ltd',
+// 'Robert-Bosch-GmbH' => 'Robert Bosch GmbH',
+// 'Lotes-Co.-Ltd.' => 'Lotes Co., Ltd.',
+// 'Surface-Optics-Corp.' => 'Surface Optics Corp.',
+// 'DATASOFT-Systems-GmbH' => 'DATASOFT Systems GmbH',
+// 'eSOL-Co.-Ltd' => 'eSOL Co., Ltd',
+// 'Hirotech-Inc.' => 'Hirotech, Inc.',
+// 'Mitsubishi-Materials-Corp.' => 'Mitsubishi Materials Corp.',
+// 'SK-Teletech-Co.-Ltd' => 'SK Teletech Co., Ltd',
+// 'Cables-To-Go' => 'Cables To Go',
+// 'USI-Co.-Ltd' => 'USI Co., Ltd',
+// 'Honeywell-Inc.' => 'Honeywell, Inc.',
+// 'Princeton-Technology-Corp.' => 'Princeton Technology Corp.',
+// 'Liebert-Corp.' => 'Liebert Corp.',
+// 'Comodo-PLX-' => 'Comodo (PLX?)',
+// 'DiBcom' => 'DiBcom',
+// 'TM-Technology-Inc.' => 'TM Technology, Inc.',
+// 'Dinging-Technology-Co.-Ltd' => 'Dinging Technology Co., Ltd',
+// 'TMT-Technology-Inc.' => 'TMT Technology, Inc.',
+// 'SmartHome' => 'SmartHome',
+// 'Sanei-Electric-Inc.' => 'Sanei Electric, Inc.',
+// 'Intec-Inc.' => 'Intec, Inc.',
+// 'Eratech' => 'Eratech',
+// 'GBM-Connector-Co.-Ltd' => 'GBM Connector Co., Ltd',
+// 'Kycon-Inc.' => 'Kycon, Inc.',
+// 'Silicon-Labs' => 'Silicon Labs',
+// 'Velleman-Components-Inc.' => 'Velleman Components, Inc.',
+// 'Hottinger-Baldwin-Measurement' => 'Hottinger Baldwin Measurement',
+// 'Man-Boon-Manufactory-Ltd' => 'Man Boon Manufactory, Ltd',
+// 'Uni-Class-Technology-Co.-Ltd' => 'Uni Class Technology Co., Ltd',
+// 'Authenex-Inc.' => 'Authenex, Inc.',
+// 'In-Win-Development-Inc.' => 'In-Win Development, Inc.',
+// 'Post-Op-Video-Inc.' => 'Post-Op Video, Inc.',
+// 'CablePlus-Ltd' => 'CablePlus, Ltd',
+// 'Nada-Electronics-Ltd' => 'Nada Electronics, Ltd',
+// 'Vast-Technologies-Inc.' => 'Vast Technologies, Inc.',
+// 'Nexio-Co.-Ltd' => 'Nexio Co., Ltd',
+// 'Importek' => 'Importek',
+// 'Turtle-Beach' => 'Turtle Beach',
+// 'Pictos-Technologies-Inc.' => 'Pictos Technologies, Inc.',
+// 'Anubis-Electronics-Ltd' => 'Anubis Electronics, Ltd',
+// 'VirTouch-Ltd' => 'VirTouch, Ltd',
+// 'EasyPass-Industrial-Co.-Ltd' => 'EasyPass Industrial Co., Ltd',
+// 'Brightcom-Technologies-Ltd' => 'Brightcom Technologies, Ltd',
+// 'Moxa-Technologies-Co.-Ltd.' => 'Moxa Technologies Co., Ltd.',
+// 'Pandora-International-Ltd.' => 'Pandora International Ltd.',
+// 'YM-ELECTRIC-CO.-Ltd' => 'YM ELECTRIC CO., Ltd',
+// 'Medion-AG' => 'Medion AG',
+// 'VSO-Electric-Co.-Ltd' => 'VSO Electric Co., Ltd',
+// 'RedRat' => 'RedRat',
+// 'Cellon-International-Inc.' => 'Cellon International, Inc.',
+// 'Tenx-Technology-Inc.' => 'Tenx Technology, Inc.',
+// 'CTS-Electronincs' => 'CTS Electronincs',
+// 'Arin-Tech-Co.-Ltd' => 'Arin Tech Co., Ltd',
+// 'Mapower-Electronics-Co.-Ltd' => 'Mapower Electronics Co., Ltd',
+// 'V-One-Multimedia-Pte.-Ltd' => 'V One Multimedia, Pte., Ltd',
+// 'CyberScan-Technologies-Inc.' => 'CyberScan Technologies, Inc.',
+// 'Japan-Radio-Company' => 'Japan Radio Company',
+// 'Sphairon-Access-Systems-GmbH' => 'Sphairon Access Systems GmbH',
+// 'Wavecom' => 'Wavecom',
+// 'Salix-Technology-Co.-Ltd.' => 'Salix Technology Co., Ltd.',
+// 'Secugen-Corp.' => 'Secugen Corp.',
+// 'DeLorme-Publishing-Inc.' => 'DeLorme Publishing, Inc.',
+// 'Telson-Electronics-Co.-Ltd' => 'Telson Electronics Co., Ltd',
+// 'Salient-Systems-Corp.' => 'Salient Systems Corp.',
+// 'BizConn-International-Corp.' => 'BizConn International Corp.',
+// 'Gigastorage-Corp.' => 'Gigastorage Corp.',
+// 'Silicon-10-Technology-Corp.' => 'Silicon 10 Technology Corp.',
+// 'Shengyih-Steel-Mold-Co.-Ltd' => 'Shengyih Steel Mold Co., Ltd',
+// 'Santa-Electronic-Inc.' => 'Santa Electronic, Inc.',
+// 'JNC-Inc.' => 'JNC, Inc.',
+// 'Venture-Corp.-Ltd' => 'Venture Corp., Ltd',
+// 'Kyocera-Elco-Corp.' => 'Kyocera Elco Corp.',
+// 'Bloomberg-L.P.' => 'Bloomberg L.P.',
+// 'You-Yang-Technology-Co.-Ltd' => 'You Yang Technology Co., Ltd',
+// 'Tripace' => 'Tripace',
+// 'Yankee-Robotics-LLC' => 'Yankee Robotics, LLC',
+// 'Technoimagia-Co.-Ltd' => 'Technoimagia Co., Ltd',
+// 'StarShine-Technology-Corp.' => 'StarShine Technology Corp.',
+// 'Sierra-Wireless-Inc.' => 'Sierra Wireless, Inc.',
+// 'ZHAN-QI-Technology-Co.-Ltd' => 'ZHAN QI Technology Co., Ltd',
+// 'ruwido-austria-GmbH' => 'ruwido austria GmbH',
+// 'Chipcon-AS' => 'Chipcon AS',
+// 'Technovas-Co.-Ltd' => 'Technovas Co., Ltd',
+// 'GlobalMedia-Group-LLC' => 'GlobalMedia Group, LLC',
+// 'Exito-Electronics-Co.-Ltd' => 'Exito Electronics Co., Ltd',
+// 'ATECH-FLASH-TECHNOLOGY' => 'ATECH FLASH TECHNOLOGY',
+// 'Inmax' => 'Inmax',
+// 'Topfield-Co.-Ltd.' => 'Topfield Co., Ltd.',
+// 'K.I.-Technology-Co.-Ltd.' => 'K.I. Technology Co. Ltd.',
+// 'Siemens-AG' => 'Siemens AG',
+// 'Prolific' => 'Prolific',
+// 'Alcatel--' => 'Alcatel (?)',
+// 'InterBiometrics' => 'InterBiometrics',
+// 'Hudson-Soft-Co.-Ltd' => 'Hudson Soft Co., Ltd',
+// 'Magellan' => 'Magellan',
+// 'DigiTech' => 'DigiTech',
+// 'Jungsoft-Co.-Ltd' => 'Jungsoft Co., Ltd',
+// 'Denver-Electronics' => 'Denver Electronics',
+// 'Unknown' => 'Unknown',
+// 'Novation-EMS' => 'Novation EMS',
+// 'Belkin' => 'Belkin',
+// 'AirVast' => 'AirVast',
+// 'Nyko-Honey-Bee' => 'Nyko (Honey Bee)',
+// 'Apogee-Inc.' => 'Apogee Inc.',
+// 'A-DATA-Technology-Co.-Ltd.' => 'A-DATA Technology Co., Ltd.',
+// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.',
+// 'Covidien-Energy-based-Devices' => 'Covidien Energy-based Devices',
+// 'Pirelli-Broadband-Solutions' => 'Pirelli Broadband Solutions',
+// 'Logic3---SpectraVideo-plc' => 'Logic3 / SpectraVideo plc',
+// 'Aristocrat-Technologies' => 'Aristocrat Technologies',
+// 'Bel-Stewart' => 'Bel Stewart',
+// 'Strobe-Data-Inc.' => 'Strobe Data, Inc.',
+// 'TwinMOS' => 'TwinMOS',
+// 'Ensoniq' => 'Ensoniq',
+// 'zebris-Medical-GmbH' => 'zebris Medical GmbH',
+// 'Marvell-Semiconductor-Inc.' => 'Marvell Semiconductor, Inc.',
+// 'Innomedia' => 'Innomedia',
+// 'Belkin-Components-hex' => 'Belkin Components [hex]',
+// 'RISO-KAGAKU-CORP.' => 'RISO KAGAKU CORP.',
+// 'CyberTAN-Technology' => 'CyberTAN Technology',
+// 'Trendchip-Technologies-Corp.' => 'Trendchip Technologies Corp.',
+// 'Autocue-Group-Ltd' => 'Autocue Group Ltd',
+// 'Huawei-Technologies-Co.-Ltd.' => 'Huawei Technologies Co., Ltd.',
+// 'EMS-Dr.-Thomas-Wuensche' => 'EMS Dr. Thomas Wuensche',
+// 'BETTER-WIRE-FACTORY-CO.-LTD.' => 'BETTER WIRE FACTORY CO., LTD.',
+// 'Waldorf-Music-GmbH' => 'Waldorf Music GmbH',
+// 'Tapwave-Inc.' => 'Tapwave, Inc.',
+// 'Memorex-Products-Inc.' => 'Memorex Products, Inc.',
+// 'AIN-Comm.-Technology-Co.-Ltd' => 'AIN Comm. Technology Co., Ltd',
+// 'Fascinating-Electronics-Inc.' => 'Fascinating Electronics, Inc.',
+// 'Transcend-Information-Inc.' => 'Transcend Information, Inc.',
+// 'Shuttle-Inc.' => 'Shuttle, Inc.',
+// 'Roper' => 'Roper',
+// 'ICS-Electronics' => 'ICS Electronics',
+// 'Natural-Point' => 'Natural Point',
+// 'Envara-Inc.' => 'Envara Inc.',
+// 'Konica-Minolta' => 'Konica Minolta',
+// 'Mobility' => 'Mobility',
+// 'Sino-Lite-Technology-Corp.' => 'Sino Lite Technology Corp.',
+// 'Moravian-Instruments' => 'Moravian Instruments',
+// 'PanJit-International-Inc.' => 'PanJit International Inc.',
+// 'P-E-Microcomputer-Systems' => 'P&E Microcomputer Systems',
+// 'SEGGER' => 'SEGGER',
+// 'STEC' => 'STEC',
+// 'Swissbit' => 'Swissbit',
+// 'CNet-Technology-Inc.' => 'CNet Technology Inc.',
+// 'Vimtron-Electronics-Co.-Ltd.' => 'Vimtron Electronics Co., Ltd.',
+// 'SCAPS-GmbH' => 'SCAPS GmbH',
+// 'Netgear-Inc' => 'Netgear, Inc',
+// 'Validity-Sensors-Inc.' => 'Validity Sensors, Inc.',
+// 'Jungo-LTD' => 'Jungo LTD',
+// 'TOMTOM-B.V.' => 'TOMTOM B.V.',
+// 'IdealTEK-Inc.' => 'IdealTEK, Inc.',
+// 'Sennheiser-Communications' => 'Sennheiser Communications',
+// 'BEHRINGER-International-GmbH' => 'BEHRINGER International GmbH',
+// 'Q-tec' => 'Q-tec',
+// 'Baltech' => 'Baltech',
+// 'PerkinElmer-Optoelectronics' => 'PerkinElmer Optoelectronics',
+// 'Linksys' => 'Linksys',
+// 'Alesis' => 'Alesis',
+// 'Nippon-Dics-Co.-Ltd.' => 'Nippon Dics Co., Ltd.',
+// 'Unknown' => 'Unknown',
+// 'Ricoh-Printing-Systems-Ltd.' => 'Ricoh Printing Systems, Ltd.',
+// 'Wisair-Ltd.' => 'Wisair Ltd.',
+// 'Techsan-Electronics-Co.-Ltd.' => 'Techsan Electronics Co., Ltd.',
+// 'Shark-Multimedia' => 'Shark Multimedia',
+// 'IMC-Networks' => 'IMC Networks',
+// 'ALEREON-INC.' => 'ALEREON, INC.',
+// 'i.Tech-Dynamic-Limited' => 'i.Tech Dynamic Limited',
+// 'Rane' => 'Rane',
+// 'TechnoScope-Co.-Ltd.' => 'TechnoScope Co., Ltd.',
+// 'Zydacron' => 'Zydacron',
+// 'Initio-Corporation' => 'Initio Corporation',
+// 'Axxion-Group-Corp.' => 'Axxion Group Corp.',
+// 'Bowe-Bell---Howell' => 'Bowe Bell & Howell',
+// 'Sitronix' => 'Sitronix',
+// 'Telechips-Inc.' => 'Telechips, Inc.',
+// 'Novatel-Wireless' => 'Novatel Wireless',
+// 'ABILITY-ENTERPRISE-CO.-LTD.' => 'ABILITY ENTERPRISE CO., LTD.',
+// 'Thales-E-Transactions' => 'Thales E-Transactions',
+// 'Arbiter-Systems-Inc.' => 'Arbiter Systems, Inc.',
+// 'RedOctane' => 'RedOctane',
+// 'Pertech-Resources-Inc.' => 'Pertech Resources, Inc.',
+// 'Wistron-NeWeb' => 'Wistron NeWeb',
+// 'Denali-Software-Inc.' => 'Denali Software, Inc.',
+// 'Altek-Corporation' => 'Altek Corporation',
+// 'Digilent' => 'Digilent',
+// 'Radio-Shack' => 'Radio Shack',
+// 'Trust' => 'Trust',
+// 'Tatung-Co.' => 'Tatung Co.',
+// 'Staccato-Communications' => 'Staccato Communications',
+// 'Micro-Star-International' => 'Micro Star International',
+// 'Huawei-3Com' => 'Huawei-3Com',
+// 'Upek' => 'Upek',
+// 'Hama-GmbH---Co.-KG' => 'Hama GmbH & Co., KG',
+// 'Vaillant' => 'Vaillant',
+// 'Elsa-AG-hex' => 'Elsa AG [hex]',
+// 'Silicom' => 'Silicom',
+// 'DSP-Group-Ltd.' => 'DSP Group, Ltd.',
+// 'EVATRONIX-SA' => 'EVATRONIX SA',
+// 'Ralink-Technology-Corp.' => 'Ralink Technology, Corp.',
+// 'Panstrong-Company-Ltd.' => 'Panstrong Company Ltd.',
+// 'Microtek-International-Inc.' => 'Microtek International Inc.',
+// 'Imagination-Technologies' => 'Imagination Technologies',
+// 'WideView-Technology-Inc.' => 'WideView Technology Inc.',
+// 'CTK-Corporation' => 'CTK Corporation',
+// 'Printronix-Inc.' => 'Printronix Inc.',
+// 'ATP-Electronics-Inc.' => 'ATP Electronics Inc.',
+// 'StarTech.com-Ltd.' => 'StarTech.com Ltd.',
+// 'Ralink-Technology-Corp.' => 'Ralink Technology, Corp.',
+// 'Rockwell-Automation-Inc.' => 'Rockwell Automation, Inc.',
+// 'Gemlight-Computer-Ltd' => 'Gemlight Computer, Ltd',
+// 'Super-Top' => 'Super Top',
+// 'JAMER-INDUSTRIES-CO.-LTD.' => 'JAMER INDUSTRIES CO., LTD.',
+// 'Raritan-Computer-Inc.' => 'Raritan Computer, Inc.',
+// 'Dialogue-Technology-Corp.' => 'Dialogue Technology Corp.',
+// 'Planex-Communications' => 'Planex Communications',
+// 'Shure-Inc.' => 'Shure Inc.',
+// 'TechniSat-Digital-GmbH' => 'TechniSat Digital GmbH',
+// 'Ellisys' => 'Ellisys',
+// 'Pine-Tum-Enterprise-Co.-Ltd.' => 'Pine-Tum Enterprise Co., Ltd.',
+// 'medMobile' => 'medMobile',
+// 'Actel' => 'Actel',
+// 'CompUSA' => 'CompUSA',
+// 'Cheshire-Engineering-Corp.' => 'Cheshire Engineering Corp.',
+// 'Bitwire-Corp.' => 'Bitwire Corp.',
+// 'ENE-Technology-Inc' => 'ENE Technology Inc',
+// 'Silicon-Portals' => 'Silicon Portals',
+// 'UBIQUAM-Co.-Ltd.' => 'UBIQUAM Co., Ltd.',
+// 'LG-HLDS' => 'LG (HLDS)',
+// 'Razer-USA-Ltd' => 'Razer USA, Ltd',
+// 'U-Blox-AG' => 'U-Blox AG',
+// 'Celectronic-GmbH' => 'Celectronic GmbH',
+// 'PNY' => 'PNY',
+// 'ConnectCounty-Holdings-Berhad' => 'ConnectCounty Holdings Berhad',
+// 'Prolink-Microsystems-Corp.' => 'Prolink Microsystems Corp.',
+// 'OQO' => 'OQO',
+// 'Sunf-Pu-Technology-Co.-Ltd' => 'Sunf Pu Technology Co., Ltd',
+// 'Quantum-Corporation' => 'Quantum Corporation',
+// 'ALLTOP-TECHNOLOGY-CO.-LTD.' => 'ALLTOP TECHNOLOGY CO., LTD.',
+// 'Ketron-SRL' => 'Ketron SRL',
+// 'TRENDnet' => 'TRENDnet',
+// 'Fiberline' => 'Fiberline',
+// 'SMA-Technologie-AG' => 'SMA Technologie AG',
+// 'Oakley-Inc.' => 'Oakley Inc.',
+// 'Freescale-Semiconductor-Inc.' => 'Freescale Semiconductor, Inc.',
+// 'Afatech-Technologies-Inc.' => 'Afatech Technologies, Inc.',
+// 'Teams-Power-Limited' => 'Teams Power Limited',
+// 'Gemtek' => 'Gemtek',
+// 'VMware-Inc.' => 'VMware Inc.',
+// 'Olimex-Ltd.' => 'Olimex Ltd.',
+// 'XL-Imaging' => 'XL Imaging',
+// 'SoundGraph-Inc.' => 'SoundGraph Inc.',
+// 'Laboratoires-MXM' => 'Laboratoires MXM',
+// 'KTF-Technologies' => 'KTF Technologies',
+// 'D-Box-Technologies' => 'D-Box Technologies',
+// 'Textech-International-Ltd.' => 'Textech International Ltd.',
+// 'Coulomb-Electronics-Ltd.' => 'Coulomb Electronics Ltd.',
+// 'Trust-International-B.V.' => 'Trust International B.V.',
+// 'Hynix-Semiconductor-Inc.' => 'Hynix Semiconductor Inc.',
+// 'Seong-Ji-Industrial-Co.-Ltd.' => 'Seong Ji Industrial Co., Ltd.',
+// 'RSA' => 'RSA',
+// 'SohoWare' => 'SohoWare',
+// 'Pacific-Digital-Corp.' => 'Pacific Digital Corp.',
+// 'Belcarra-Technologies-Corp.' => 'Belcarra Technologies Corp.',
+// 'HanfTek' => 'HanfTek',
+// 'Tascam' => 'Tascam',
+// 'Umax' => 'Umax',
+// 'Inside-Out-Networks-hex' => 'Inside Out Networks [hex]',
+// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.',
+// 'Amoi-Electronics' => 'Amoi Electronics',
+// 'Wionics-Research' => 'Wionics Research',
+// 'Stonestreet-One-Inc.' => 'Stonestreet One, Inc.',
+// 'Airgo-Networks-Inc.' => 'Airgo Networks Inc.',
+// 'WiQuest-Communications-Inc.' => 'WiQuest Communications, Inc.',
+// '2Wire-Inc.' => '2Wire, Inc.',
+// 'Good-Way-Technology' => 'Good Way Technology',
+// 'Cross-Match-Technologies-GmbH' => 'Cross Match Technologies GmbH',
+// 'SofTec-Microsystems' => 'SofTec Microsystems',
+// 'ChipX' => 'ChipX',
+// 'Matrix-Vision-GmbH' => 'Matrix Vision GmbH',
+// 'Frontier-Design-Group' => 'Frontier Design Group',
+// 'Creatix-Polymedia-GmbH' => 'Creatix Polymedia GmbH',
+// 'PiKRON-Ltd.-hex' => 'PiKRON Ltd. [hex]',
+// 'Total-Phase' => 'Total Phase',
+// 'Golden-Bridge-Electech-Inc.' => 'Golden Bridge Electech Inc.',
+// 'Prevo-Technologies-Inc.' => 'Prevo Technologies, Inc.',
+// 'Godspeed-Computer-Corp.' => 'Godspeed Computer Corp.',
+// 'Delock' => 'Delock',
+// 'ZOOM-Corporation' => 'ZOOM Corporation',
+// 'Kingmax-Digital-Inc.' => 'Kingmax Digital Inc.',
+// 'Saab-AB' => 'Saab AB',
+// 'Atheros-Communications' => 'Atheros Communications',
+// 'Askey-Computer-Corp.-hex' => 'Askey Computer Corp. [hex]',
+// 'VTec-Test-Inc.' => 'VTec Test, Inc.',
+// 'Unigraf' => 'Unigraf',
+// 'Global-Sun-Technology' => 'Global Sun Technology',
+// 'iStation' => 'iStation',
+// 'Persentec-Inc.' => 'Persentec, Inc.',
+// 'VOTI' => 'VOTI',
+// 'Wireless-Cables-Inc.' => 'Wireless Cables, Inc.',
+// 'silex-technology-Inc.' => 'silex technology, Inc.',
+// 'GrauTec' => 'GrauTec',
+// 'AnyDATA-Corporation' => 'AnyDATA Corporation',
+// 'JABLOCOM-s.r.o.' => 'JABLOCOM s.r.o.',
+// 'CMOTECH-Co.-Ltd.' => 'CMOTECH Co., Ltd.',
+// 'Wiener-Plein---Baus' => 'Wiener, Plein & Baus',
+// 'GN-ReSound-A-S' => 'GN ReSound A/S',
+// 'Futurelogic-Inc.' => 'Futurelogic Inc.',
+// 'BlueView-Technologies-Inc.' => 'BlueView Technologies, Inc.',
+// 'ARTIMI' => 'ARTIMI',
+// 'Swissonic' => 'Swissonic',
+// 'Avnera' => 'Avnera',
+// 'Vitesse-Semiconductor' => 'Vitesse Semiconductor',
+// 'Axesstel-Inc.' => 'Axesstel, Inc.',
+// 'Waltop-International-Corp.' => 'Waltop International Corp.',
+// 'Cellink-Technology-Co.-Ltd' => 'Cellink Technology Co., Ltd',
+// 'Linksys' => 'Linksys',
+// 'Senao' => 'Senao',
+// 'General-Atomics' => 'General Atomics',
+// 'ASMedia-Technology-Inc.' => 'ASMedia Technology Inc.',
+// 'Syntek' => 'Syntek',
+// 'GERTEC-Telecomunicacoes-Ltda.' => 'GERTEC Telecomunicacoes Ltda.',
+// 'LucidPort-Technology-Inc.' => 'LucidPort Technology, Inc.',
+// 'System-Level-Solutions-Inc.' => 'System Level Solutions, Inc.',
+// 'Arowana' => 'Arowana',
+// 'Sweex' => 'Sweex',
+// 'Multiple-Vendors' => 'Multiple Vendors',
+// 'TopSeed-Technology-Corp.' => 'TopSeed Technology Corp.',
+// 'ATI-AIB' => 'ATI AIB',
+// 'Printrex-Inc.' => 'Printrex, Inc.',
+// 'JALCO-CO.-LTD.' => 'JALCO CO., LTD.',
+// 'Belkin-Components' => 'Belkin Components',
+// 'Samson-Technologies-Corp.' => 'Samson Technologies Corp.',
+// 'Concept2' => 'Concept2',
+// 'MICOMSOFT-CO.-LTD.' => 'MICOMSOFT CO., LTD.',
+// 'Grey-Innovation' => 'Grey Innovation',
+// 'Singim-International-Corp.' => 'Singim International Corp.',
+// 'Native-Instruments' => 'Native Instruments',
+// 'Sanford-L.P.' => 'Sanford L.P.',
+// 'Korea-Techtron-Co.-Ltd.' => 'Korea Techtron Co., Ltd.',
+// 'Newnham-Research' => 'Newnham Research',
+// 'Cornice-Inc.' => 'Cornice, Inc.',
+// 'Lenovo' => 'Lenovo',
+// 'K.K.-Rocky' => 'K.K. Rocky',
+// 'Unicomp-Inc' => 'Unicomp, Inc',
+// 'Advantech' => 'Advantech',
+// 'Twinhan' => 'Twinhan',
+// 'Gwo-Jinn-Industries-Co.-Ltd.' => 'Gwo Jinn Industries Co., Ltd.',
+// 'VIVOphone' => 'VIVOphone',
+// 'Vaisala' => 'Vaisala',
+// 'ASRock-Incorporation' => 'ASRock Incorporation',
+// 'GYROCOM-C-C-Co.-LTD' => 'GYROCOM C&C Co., LTD',
+// 'Memory-Devices-Ltd.' => 'Memory Devices Ltd.',
+// 'Compro' => 'Compro',
+// 'Teridian-Semiconductor-Corp.' => 'Teridian Semiconductor Corp.',
+// 'Nexio-Co.-Ltd' => 'Nexio Co., Ltd',
+// 'Aveo-Technology-Corp.' => 'Aveo Technology Corp.',
+// 'Alienware-Corporation' => 'Alienware Corporation',
+// 'Siano-Mobile-Silicon' => 'Siano Mobile Silicon',
+// 'Vast-Technologies-Inc.' => 'Vast Technologies, Inc.',
+// 'Topseed' => 'Topseed',
+// 'Evertop-Wire-Cable-Co.' => 'Evertop Wire Cable Co.',
+// 'Verbatim-Ltd' => 'Verbatim, Ltd',
+// 'Petalynx' => 'Petalynx',
+// 'e3C-Technologies' => 'e3C Technologies',
+// 'Mikkon-Technology-Limited' => 'Mikkon Technology Limited',
+// 'Zotek-Electronic-Co.-Ltd.' => 'Zotek Electronic Co., Ltd.',
+// 'AMIT-Technology-Inc.' => 'AMIT Technology, Inc.',
+// 'Ecamm' => 'Ecamm',
+// 'Google-Inc.' => 'Google Inc.',
+// 'Kaba' => 'Kaba',
+// 'Planon-System-Solutions-Inc.' => 'Planon System Solutions Inc.',
+// 'Qcom' => 'Qcom',
+// 'Matrox-Graphics-Inc.' => 'Matrox Graphics, Inc.',
+// 'Arkmicro-Technologies-Inc.' => 'Arkmicro Technologies Inc.',
+// 'FineArch-Inc.' => 'FineArch Inc.',
+// 'GEMBIRD' => 'GEMBIRD',
+// 'Motorola-GSG' => 'Motorola GSG',
+// 'Alco-Digital-Devices-Limited' => 'Alco Digital Devices Limited',
+// 'Nordic-Semiconductor-ASA' => 'Nordic Semiconductor ASA',
+// 'NextWindow' => 'NextWindow',
+// 'Avago-Technologies-Pte.' => 'Avago Technologies, Pte.',
+// 'Dream-Link' => 'Dream Link',
+// 'Sensoray-Co.-Inc.' => 'Sensoray Co., Inc.',
+// 'Lab126' => 'Lab126',
+// 'Hyperstone-AG' => 'Hyperstone AG',
+// 'Ironkey-Inc.' => 'Ironkey Inc.',
+// 'Radiient-Technologies' => 'Radiient Technologies',
+// 'Itron-Technology-iONE' => 'Itron Technology iONE',
+// 'Wispro-Technology-Inc.' => 'Wispro Technology Inc.',
+// 'Dane-Elec-Corp.-USA' => 'Dane-Elec Corp. USA',
+// 'T-Logic' => 'T-Logic',
+// 'Nuconn-Technology-Corp.' => 'Nuconn Technology Corp.',
+// 'Beceem-Communications-Inc.' => 'Beceem Communications Inc.',
+// 'Trillium-Technology-Pty.-Ltd.' => 'Trillium Technology Pty. Ltd.',
+// 'Benica-Corporation' => 'Benica Corporation',
+// 'Biforst-Technology-Inc.' => 'Biforst Technology Inc.',
+// 'Bodelin' => 'Bodelin',
+// 'S-Life' => 'S Life',
+// 'Batronix' => 'Batronix',
+// 'Celestron' => 'Celestron',
+// 'B---W-Group' => 'B & W Group',
+// 'Infotech-Logistic-LLC' => 'Infotech Logistic, LLC',
+// 'Data-Robotics' => 'Data Robotics',
+// 'Mindtribe' => 'Mindtribe',
+// 'Parrot-SA' => 'Parrot SA',
+// 'ONDA-Communication-S.p.A.' => 'ONDA Communication S.p.A.',
+// 'RODE-Microphones' => 'RODE Microphones',
+// 'Gampaq-Co.Ltd' => 'Gampaq Co.Ltd',
+// 'Dynex' => 'Dynex',
+// 'Bellwood-International-Inc.' => 'Bellwood International, Inc.',
+// 'USB-IF-non-workshop' => 'USB-IF non-workshop',
+// 'KES-Co.-Ltd.' => 'KES Co., Ltd.',
+// 'Amphenol-East-Asia-Ltd.' => 'Amphenol East Asia Ltd.',
+// 'Seagate-Branded-Solutions' => 'Seagate Branded Solutions',
+// 'Quanta-Microsystems-Inc.' => 'Quanta Microsystems, Inc.',
+// 'Biwin-Technology-Ltd.' => 'Biwin Technology Ltd.',
+// 'TERMINUS-TECHNOLOGY-INC.' => 'TERMINUS TECHNOLOGY INC.',
+// 'Action-Electronics-Co.-Ltd.' => 'Action Electronics Co., Ltd.',
+// 'Silicon-Image' => 'Silicon Image',
+// 'SafeBoot-International-B.V.' => 'SafeBoot International B.V.',
+// 'Abbott-Diabetes-Care' => 'Abbott Diabetes Care',
+// 'Spansion-Inc.' => 'Spansion Inc.',
+// 'SamYoung-Electronics-Co.-Ltd' => 'SamYoung Electronics Co., Ltd',
+// 'Global-Unichip-Corp.' => 'Global Unichip Corp.',
+// 'Sagem-Orga-GmbH' => 'Sagem Orga GmbH',
+// 'Bayer-Health-Care-LLC' => 'Bayer Health Care LLC',
+// 'Lumberg-Connect-GmbH---Co.-KG' => 'Lumberg Connect GmbH & Co. KG',
+// 'Evoluent' => 'Evoluent',
+// 'QinHeng-Electronics' => 'QinHeng Electronics',
+// 'Dynalith-Systems-Co.-Ltd.' => 'Dynalith Systems Co., Ltd.',
+// 'SGS-Taiwan-Ltd.' => 'SGS Taiwan Ltd.',
+// 'BandRich-Inc.' => 'BandRich, Inc.',
+// 'Corsair-Voyager-GT-16GB' => 'Corsair Voyager GT 16GB',
+// 'Leica-Camera-AG' => 'Leica Camera AG',
+// 'Data-Drive-Thru-Inc.' => 'Data Drive Thru, Inc.',
+// 'UBeacon-Technologies-Inc.' => 'UBeacon Technologies, Inc.',
+// 'eFortune-Technology-Corp.' => 'eFortune Technology Corp.',
+// 'Salcomp-Plc' => 'Salcomp Plc',
+// 'Desay-Wire-Co.-Ltd.' => 'Desay Wire Co., Ltd.',
+// 'X-TENSIONS' => 'X-TENSIONS',
+// 'Meilhaus-Electronic-GmBH' => 'Meilhaus Electronic GmBH',
+// 'MStar-Semiconductor-Inc.' => 'MStar Semiconductor, Inc.',
+// 'WiLinx-Corp.' => 'WiLinx Corp.',
+// 'Cellex-Power-Products-Inc.' => 'Cellex Power Products, Inc.',
+// 'Current-Electronics-Inc.' => 'Current Electronics Inc.',
+// 'NAVIsis-Inc.' => 'NAVIsis Inc.',
+// 'Ugobe-Life-Forms-Inc.' => 'Ugobe Life Forms, Inc.',
+// 'ViXS-Systems-Inc.' => 'ViXS Systems, Inc.',
+// 'iPassion-Technology-Inc.' => 'iPassion Technology Inc.',
+// 'Generalplus-Technology-Inc.' => 'Generalplus Technology Inc.',
+// 'Energizer-Holdings-Inc.' => 'Energizer Holdings, Inc.',
+// 'Plastron-Precision-Co.-Ltd.' => 'Plastron Precision Co., Ltd.',
+// 'K.S.-Terminals-Inc.' => 'K.S. Terminals Inc.',
+// 'ATERGI-TECHNOLOGY-CO.-LTD.' => 'ATERGI TECHNOLOGY CO., LTD.',
+// 'Fresco-Logic' => 'Fresco Logic',
+// 'Ovislink-Corp.' => 'Ovislink Corp.',
+// 'Legend-Silicon-Corp.' => 'Legend Silicon Corp.',
+// 'Afatech' => 'Afatech',
+// 'Altium-Limited' => 'Altium Limited',
+// 'e-MOVE-Technology-Co.-Ltd.' => 'e-MOVE Technology Co., Ltd.',
+// 'Amlogic-Inc.' => 'Amlogic, Inc.',
+// 'MA-LABS-Inc.' => 'MA LABS, Inc.',
+// 'N-Trig' => 'N-Trig',
+// 'YMax-Communications-Corp.' => 'YMax Communications Corp.',
+// 'Shenzhen-Yuanchuan-Electronic' => 'Shenzhen Yuanchuan Electronic',
+// 'Ember-Corporation' => 'Ember Corporation',
+// 'Abilis-Systems' => 'Abilis Systems',
+// 'Harmonix-Music' => 'Harmonix Music',
+// 'Vuzix-Corporation' => 'Vuzix Corporation',
+// 'T---A-Mobile-Phones' => 'T & A Mobile Phones',
+// 'Ford-Motor-Co.' => 'Ford Motor Co.',
+// 'AVIXE-Technology-China-Ltd.' => 'AVIXE Technology (China) Ltd.',
+// 'P-TWO-INDUSTRIES-INC.' => 'P-TWO INDUSTRIES, INC.',
+// 'RealVision-Inc.' => 'RealVision Inc.',
+// 'Extranet-Systems-Inc.' => 'Extranet Systems Inc.',
+// 'TouchPack' => 'TouchPack',
+// 'Kreton-Corporation' => 'Kreton Corporation',
+// 'QNAP-System-Inc.' => 'QNAP System Inc.',
+// 'Relm-Wireless' => 'Relm Wireless',
+// 'Lanterra-Industrial-Co.-Ltd.' => 'Lanterra Industrial Co., Ltd.',
+// 'ALECTRONIC-LIMITED' => 'ALECTRONIC LIMITED',
+// 'Datel-Electronics-Ltd.' => 'Datel Electronics Ltd.',
+// 'Volkswagen-of-America-Inc.' => 'Volkswagen of America, Inc.',
+// 'Goldvish-S.A.' => 'Goldvish S.A.',
+// 'ADDMM-LLC' => 'ADDMM LLC',
+// 'HuiYang-D---S-Cable-Co.-Ltd.' => 'HuiYang D & S Cable Co., Ltd.',
+// 'LS-Cable-Ltd.' => 'LS Cable Ltd.',
+// 'SpringCard' => 'SpringCard',
+// 'Authorizer-Technologies-Inc.' => 'Authorizer Technologies, Inc.',
+// 'NONIN-MEDICAL-INC.' => 'NONIN MEDICAL INC.',
+// 'Wep-Peripherals' => 'Wep Peripherals',
+// 'Cherng-Weei-Technology-Corp.' => 'Cherng Weei Technology Corp.',
+// 'SiGma-Micro' => 'SiGma Micro',
+// 'Skydigital-Inc.' => 'Skydigital Inc.',
+// 'AMT' => 'AMT',
+// 'Kaetat-Industrial-Co.-Ltd.' => 'Kaetat Industrial Co., Ltd.',
+// 'Datascope-Corp.' => 'Datascope Corp.',
+// 'Unigen-Corporation' => 'Unigen Corporation',
+// 'LighTuning-Technology-Inc.' => 'LighTuning Technology Inc.',
+// '2N-TELEKOMUNIKACE-a.s.' => '2N TELEKOMUNIKACE a.s.',
+// 'Somagic-Inc.' => 'Somagic, Inc.',
+// 'ASTRON-INTERNATIONAL-CORP.' => 'ASTRON INTERNATIONAL CORP.',
+// 'ALPINE-ELECTRONICS-INC.' => 'ALPINE ELECTRONICS, INC.',
+// 'ACCARIO-Inc.' => 'ACCARIO Inc.',
+// 'Kinstone' => 'Kinstone',
+// 'Aces-Electronic-Co.-Ltd.' => 'Aces Electronic Co., Ltd.',
+// 'OPEX-CORPORATION' => 'OPEX CORPORATION',
+// 'Luminary-Micro-Inc.' => 'Luminary Micro Inc.',
+// 'PlantSense' => 'PlantSense',
+// 'NextWave-Broadband-Inc.' => 'NextWave Broadband Inc.',
+// 'adp-corporation' => 'adp corporation',
+// 'Firecomms-Ltd.' => 'Firecomms Ltd.',
+// 'WonTen-Technology-Co.-Ltd.' => 'WonTen Technology Co., Ltd.',
+// 'EDIMAX-TECHNOLOGY-CO.-LTD.' => 'EDIMAX TECHNOLOGY CO., LTD.',
+// 'Amphenol-KAE' => 'Amphenol KAE',
+// 'ANDES-TECHNOLOGY-CORPORATION' => 'ANDES TECHNOLOGY CORPORATION',
+// 'Solid-Motion' => 'Solid-Motion',
+// 'ALPHA-SAT-TECHNOLOGY-LIMITED' => 'ALPHA-SAT TECHNOLOGY LIMITED',
+// 'C-Thru-Music-Ltd.' => 'C-Thru Music Ltd.',
+// 'Dexatek-Technology-Ltd.' => 'Dexatek Technology Ltd.',
+// 'Diostech-Co.-Ltd.' => 'Diostech Co., Ltd.',
+// 'SAMTACK-INC.' => 'SAMTACK INC.',
+// 'PEGATRON-CORPORATION' => 'PEGATRON CORPORATION',
+// 'OpenMoko-Inc.' => 'OpenMoko, Inc.',
+// 'Smartronix-Inc.' => 'Smartronix, Inc.',
+// 'Linux-Foundation' => 'Linux Foundation',
+// 'Qualcomm---Option' => 'Qualcomm / Option',
+// 'Point-Grey-Research-Inc.' => 'Point Grey Research, Inc.',
+// 'Lumension-Security' => 'Lumension Security',
+// 'INVIA' => 'INVIA',
+// 'Festo-AG---Co.-KG' => 'Festo AG & Co. KG',
+// 'Cleverscope' => 'Cleverscope',
+// 'TypeMatrix' => 'TypeMatrix',
+// 'TrekStor-GmbH---Co.-KG' => 'TrekStor GmbH & Co. KG',
+// 'NZXT' => 'NZXT',
+// 'Coby-Electronics-Corporation' => 'Coby Electronics Corporation',
+// 'ROCCAT' => 'ROCCAT',
+// 'NuCORE-Technology-Inc.' => 'NuCORE Technology, Inc.',
+// 'AirTies-Wireless-Networks' => 'AirTies Wireless Networks',
+// 'EADS-Deutschland-GmbH' => 'EADS Deutschland GmbH',
+// 'Cal-Comp' => 'Cal-Comp',
+// 'G-Tek-Electronics-Group' => 'G-Tek Electronics Group',
+// 'TANDBERG' => 'TANDBERG',
+// 'Alere-Inc.' => 'Alere, Inc.',
+// 'Stantum' => 'Stantum',
+// 'Delphin-Technology-AG' => 'Delphin Technology AG',
+// 'NXP-Semiconductors' => 'NXP Semiconductors',
+// 'Vertex-Wireless-Co.-Ltd.' => 'Vertex Wireless Co., Ltd.',
+// 'D-Link-Corp.' => 'D-Link Corp.',
+// 'Unknown-Pinnacle-' => 'Unknown (Pinnacle?)',
+// 'PLANEX' => 'PLANEX',
+// 'Hauppauge' => 'Hauppauge',
+// 'Texas-Instruments' => 'Texas Instruments',
+// 'Barnes---Noble' => 'Barnes & Noble',
+// 'Cando' => 'Cando',
+// 'Clay-Logic' => 'Clay Logic',
+// 'XMOS-Ltd' => 'XMOS Ltd',
+// 'Hanvon' => 'Hanvon',
+// 'Qi-Hardware' => 'Qi Hardware',
+// 'Simtec-Electronics' => 'Simtec Electronics',
+// 'ActionStar' => 'ActionStar',
+// 'Creative--' => 'Creative (?)',
+// 'GW-Instek' => 'GW Instek',
+// 'Emotiv-Systems-Pty.-Ltd.' => 'Emotiv Systems Pty. Ltd.',
+// 'Agecodagis-SARL' => 'Agecodagis SARL',
+// 'MacAlly' => 'MacAlly',
+// 'SAMWOO-Enterprise' => 'SAMWOO Enterprise',
+// 'RadioShack-Corporation' => 'RadioShack Corporation',
+// 'Kobo-Inc.' => 'Kobo Inc.',
+// 'Pie-Digital-Inc.' => 'Pie Digital, Inc.',
+// 'Motorola-PCS' => 'Motorola PCS',
+// 'eTurboTouch-Technology-Inc.' => 'eTurboTouch Technology, Inc.',
+// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems, Inc.',
+// 'Pumatronix-Ltda' => 'Pumatronix Ltda',
+// 'Digit-at-lway-Inc.' => 'Digit@lway, Inc.',
+// 'Tripp-Lite' => 'Tripp-Lite',
+// 'TwinMOS' => 'TwinMOS',
+// 'Citizen' => 'Citizen',
+// 'DigitalWay' => 'DigitalWay',
+// 'NHJ-Ltd' => 'NHJ, Ltd',
+// 'ASUSTek-Computer-Inc.' => 'ASUSTek Computer Inc.',
+// 'Toptronic-Industrial-Co.-Ltd' => 'Toptronic Industrial Co., Ltd',
+// 'Planex-Communications' => 'Planex Communications',
+// 'Dolphin-Peripherals' => 'Dolphin Peripherals',
+// 'Fujitsu-Ltd' => 'Fujitsu, Ltd',
+// 'Eagletron' => 'Eagletron',
+// 'Whanam-Electronics-Co.-Ltd' => 'Whanam Electronics Co., Ltd',
+// 'VidzMedia-Pte-Ltd' => 'VidzMedia Pte Ltd',
+// 'AEI' => 'AEI',
+// 'Yakumo' => 'Yakumo',
+// 'Micro-Star' => 'Micro Star',
+// 'DIVA' => 'DIVA',
+// 'InVibro' => 'InVibro',
+// 'WEM' => 'WEM',
+// 'National-Instruments-Corp.' => 'National Instruments Corp.',
+// 'I-O-Data' => 'I-O Data',
+// 'i-rocks' => 'i-rocks',
+// 'iRiver-Ltd.' => 'iRiver, Ltd.',
+// 'Dell-Computer-Corp.' => 'Dell Computer Corp.',
+// 'USBest-Technology' => 'USBest Technology',
+// 'USB-Design-by-Example' => 'USB Design by Example',
+// 'Broadcom-Corp.' => 'Broadcom Corp.',
+// 'WinChipHead' => 'WinChipHead',
+// 'Shuttle-Inc.' => 'Shuttle, Inc.',
+// 'Panram' => 'Panram',
+// 'EMS-Production' => 'EMS Production',
+// 'Miditech' => 'Miditech',
+// 'GW-Instek' => 'GW Instek',
+// 'Aceeca' => 'Aceeca',
+// 'Memorex' => 'Memorex',
+// 'SimpleTech' => 'SimpleTech',
+// 'Grandtec' => 'Grandtec',
+// 'Linksys--' => 'Linksys (?)',
+// 'Averatec--' => 'Averatec (?)',
+// 'Sweex' => 'Sweex',
+// 'I-Tetra' => 'I-Tetra',
+// 'Owon' => 'Owon',
+// 'Transmeta-Corp.' => 'Transmeta Corp.',
+// 'UC-Logic-Technology-Corp.' => 'UC-Logic Technology Corp.',
+// 'Epiphan-Systems-Inc.' => 'Epiphan Systems Inc.',
+// 'OnSpec-Electronic-Inc.' => 'OnSpec Electronic, Inc.',
+// 'Uni-Trend-Group-Limited' => 'Uni-Trend Group Limited',
+// 'IRTOUCHSYSTEMS-Co.-Ltd.' => 'IRTOUCHSYSTEMS Co. Ltd.',
+// 'Acer-Inc' => 'Acer, Inc',
+// 'Zinwell' => 'Zinwell',
+// 'Beholder-International-Ltd.' => 'Beholder International Ltd.',
+// 'Ingenic-Semiconductor-Ltd.' => 'Ingenic Semiconductor Ltd.',
+// 'Sitecom' => 'Sitecom',
+// 'TwinHan-Technology-Co.-Ltd' => 'TwinHan Technology Co., Ltd',
+// 'CoreLogic-Inc.' => 'CoreLogic, Inc.',
+// 'Unknown-Sony-' => 'Unknown (Sony?)',
+// 'Arkmicro-Technologies-Inc.' => 'Arkmicro Technologies Inc.',
+// 'IRTOUCHSYSTEMS-Co.-Ltd.' => 'IRTOUCHSYSTEMS Co. Ltd.',
+// 'Prototype-product-Vendor-ID' => 'Prototype product Vendor ID',
+// 'WiseGroup-Ltd.' => 'WiseGroup, Ltd.',
+// '3Com' => '3Com',
+// 'Opera1' => 'Opera1',
+// 'CME-Central-Music-Co.' => 'CME (Central Music Co.)',
+// 'StackFoundry-LLC' => 'StackFoundry LLC',
+// 'TBS-Technologies-China' => 'TBS Technologies China',
+// 'Edimax-Technology-Co.-Ltd' => 'Edimax Technology Co., Ltd',
+// 'Intel-Corp.' => 'Intel Corp.',
+// 'Intel-Corp.' => 'Intel Corp.',
+// 'VirtualBox' => 'VirtualBox',
+// 'Keio' => 'Keio',
+// 'EGO-Systems-Inc.' => 'EGO Systems, Inc.',
+// 'Sitecom' => 'Sitecom',
+// 'TeVii-Technology-Ltd.' => 'TeVii Technology Ltd.',
+// 'GeoLab-Ltd' => 'GeoLab, Ltd',
+// 'MosChip-Semiconductor' => 'MosChip Semiconductor',
+// 'Grandtec' => 'Grandtec',
+// 'J.-Westhues' => 'J. Westhues',
+// 'AnMo-Electronics-Corporation' => 'AnMo Electronics Corporation',
+// 'Asix' => 'Asix',
+// '3Com' => '3Com',
+// 'Unknown' => 'Unknown',
+// 'Keil-Software-Inc.' => 'Keil Software, Inc.',
+// 'CACE-Technologies-Inc.' => 'CACE Technologies Inc.',
+// 'Ultimarc' => 'Ultimarc',
+// 'Xorcom-Ltd.' => 'Xorcom Ltd.',
+// 'MakingThings' => 'MakingThings',
+// 'eMPIA-Technology-Inc.' => 'eMPIA Technology, Inc.',
+// 'KWorld' => 'KWorld',
+// 'Hewlett-Packard' => 'Hewlett Packard',
+// 'Sunplus-Innovation-Technology-Inc' => 'Sunplus Innovation Technology Inc',
+// 'Feiya-Technology-Corp' => 'Feiya Technology Corp.',
+// "CLEVO-CO" => "CLEVO CO.",
+// );
+//
+// return (array_key_exists($string,$names)) ? $names[$string] : $string;
+}
diff --git a/Application/Include/vendors.php b/Application/Include/vendors.php
new file mode 100644
index 0000000..1f2bcc3
--- /dev/null
+++ b/Application/Include/vendors.php
@@ -0,0 +1,4191 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Vendors
+{
+
+ public static function getName($id,$interface)
+ {
+ if (self::check($id,$interface))
+ {
+ $idArray = strcmp($interface,'USB') === 0 ? self::$usbId : self::$pciId;
+
+ $temp = explode(':',$id);
+ $vendorId = $temp[0];
+ return $idArray[$vendorId];
+ }
+ return 'not-known';
+ }
+
+ public static function check($id,$interface = 'USB')
+ {
+ if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$id))
+ {
+ $idArray = strcmp($interface,'USB') === 0 ? self::$usbId : self::$pciId;
+
+ $temp = explode(':',$id);
+ $vendorId = $temp[0];
+ if (array_key_exists($vendorId,$idArray))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static $pciId = array(
+ '0010' => 'Allied-Telesis-Inc',
+ '001a' => 'Ascend-Communications-Inc.',
+ '001c' => 'PEAK-System-Technik-GmbH',
+ '0033' => 'Paradyne-corp.',
+ '003d' => 'Lockheed-Martin-Marietta-Corp',
+ '0070' => 'Hauppauge-computer-works-Inc.',
+ '0071' => 'Nebula-Electronics-Ltd.',
+ '00f5' => 'BFG-Technologies-Inc.',
+ '0100' => 'Ncipher-Corp-Ltd',
+ '0123' => 'General-Dynamics',
+ '0291' => 'Davicom-Semiconductor-Inc.',
+ '02e0' => 'XFX-Pine-Group-Inc',
+ '0315' => 'SK-Electronics-Co.-Ltd.',
+ '0357' => 'TTTech-AG',
+ '036f' => 'Trigem-Computer-Inc.',
+ '03f0' => 'Hewlett-Packard',
+ '0432' => 'SCM-Microsystems-Inc.',
+ '045e' => 'Microsoft',
+ '0482' => 'Kyocera',
+ '04cf' => 'Myson-Century-Inc',
+ '050d' => 'Belkin',
+ '058f' => 'Alcor-Micro-Corporation',
+ '05a9' => 'OmniVision',
+ '05e3' => 'CyberDoor',
+ '066f' => 'Sigmatel-Inc.',
+ '0675' => 'Dynalink',
+ '069d' => 'Hughes-Network-Systems-HNS',
+ '0721' => 'Sapphire-Inc.',
+ '0795' => 'Wired-Inc.',
+ '07ca' => 'AVerMedia-Technologies-Inc.',
+ '07d0' => 'ITT-Geospatial-Systems',
+ '08ff' => 'AuthenTec',
+ '093a' => 'PixArt-Imaging-Inc.',
+ '09c1' => 'Arris',
+ '0a89' => 'BREA-Technologies-Inc',
+ '0ace' => 'ZyDAS',
+ '0b0b' => 'Rhino-Equipment-Corp.',
+ '0b3d' => 'Brontes-Technologies',
+ '0b49' => 'ASCII-Corporation',
+ '0ccd' => 'TerraTec-Electronic-GmbH',
+ '0e11' => 'Compaq-Computer-Corporation',
+ '0e21' => 'Cowon-Systems-Inc.',
+ '0e55' => 'HaSoTec-GmbH',
+ '0f62' => 'Acrox-Technologies-Co.-Ltd.',
+ '1001' => 'Kolter-Electronic',
+ '1002' => 'Advanced-Micro-Devices-AMD',
+ '1003' => 'ULSI-Systems',
+ '1004' => 'VLSI-Technology-Inc',
+ '1005' => 'Avance-Logic-Inc.-ALI',
+ '1006' => 'Reply-Group',
+ '1007' => 'NetFrame-Systems-Inc',
+ '1008' => 'EPSON',
+ '100a' => 'Phoenix-Technologies',
+ '100b' => 'National-Semiconductor-Corp.',
+ '100c' => 'Tseng-Labs-Inc',
+ '100d' => 'AST-Research-Inc',
+ '100e' => 'Weitek',
+ '1010' => 'Video-Logic-Ltd.',
+ '1011' => 'Digital-Equipment-Corporation',
+ '1012' => 'Micronics-Computers-Inc',
+ '1013' => 'Cirrus-Logic',
+ '1014' => 'IBM',
+ '1015' => 'LSI-Logic-Corp-of-Canada',
+ '1016' => 'ICL-Personal-Systems',
+ '1017' => 'SPEA-Software-AG',
+ '1018' => 'Unisys-Systems',
+ '1019' => 'Elitegroup-Computer-Systems',
+ '101a' => 'AT-T-GIS-NCR',
+ '101b' => 'Vitesse-Semiconductor',
+ '101c' => 'Western-Digital',
+ '101e' => 'American-Megatrends-Inc.',
+ '101f' => 'PictureTel',
+ '1020' => 'Hitachi-Computer-Products',
+ '1022' => 'Advanced-Micro-Devices-AMD',
+ '1023' => 'Trident-Microsystems',
+ '1024' => 'Zenith-Data-Systems',
+ '1025' => 'Acer',
+ '1028' => 'Dell',
+ '1029' => 'Siemens-Nixdorf-IS',
+ '102a' => 'LSI-Logic',
+ '102b' => 'Matrox-Graphics-Inc.',
+ '102c' => 'Chips-and-Technologies',
+ '102d' => 'Wyse-Technology-Inc.',
+ '102e' => 'Olivetti-Advanced-Technology',
+ '102f' => 'Toshiba-America',
+ '1030' => 'TMC-Research',
+ '1031' => 'Miro-Computer-Products-AG',
+ '1032' => 'Compaq',
+ '1033' => 'NEC-Corporation',
+ '1034' => 'Framatome-Connectors-USA-Inc.',
+ '1035' => 'Comp.---Comm.-Research-Lab',
+ '1036' => 'Future-Domain-Corp.',
+ '1037' => 'Hitachi-Micro-Systems',
+ '1038' => 'AMP-Inc',
+ '103a' => 'Seiko-Epson-Corporation',
+ '103b' => 'Tatung-Corp.-Of-America',
+ '103c' => 'Hewlett-Packard',
+ '103e' => 'Solliday-Engineering',
+ '103f' => 'Synopsys-Logic-Modeling-Group',
+ '1040' => 'Accelgraphics-Inc.',
+ '1041' => 'Computrend',
+ '1042' => 'Micron',
+ '1043' => 'ASUSTeK-Computer-Inc.',
+ '1044' => 'Adaptec-formerly-DPT',
+ '1045' => 'OPTi-Inc.',
+ '1046' => 'IPC-Corporation-Ltd.',
+ '1047' => 'Genoa-Systems-Corp',
+ '1048' => 'Elsa-AG',
+ '1049' => 'Fountain-Technologies-Inc.',
+ '104b' => 'BusLogic',
+ '104c' => 'Texas-Instruments',
+ '104d' => 'Sony-Corporation',
+ '104e' => 'Oak-Technology-Inc',
+ '104f' => 'Co-time-Computer-Ltd',
+ '1050' => 'Winbond-Electronics-Corp',
+ '1051' => 'Anigma-Inc.',
+ '1052' => '-Young-Micro-Systems',
+ '1053' => 'Young-Micro-Systems',
+ '1054' => 'Hitachi-Ltd',
+ '1055' => 'Efar-Microsystems',
+ '1056' => 'ICL',
+ '105a' => 'Promise-Technology-Inc.',
+ '105b' => 'Foxconn-International-Inc.',
+ '105c' => 'Wipro-Infotech-Limited',
+ '105d' => 'Number-9-Computer-Company',
+ '105e' => 'Vtech-Computers-Ltd',
+ '105f' => 'Infotronic-America-Inc',
+ '1060' => 'United-Microelectronics-UMC',
+ '1061' => 'I.I.T.',
+ '1062' => 'Maspar-Computer-Corp',
+ '1063' => 'Ocean-Office-Automation',
+ '1064' => 'Alcatel',
+ '1065' => 'Texas-Microsystems',
+ '1066' => 'PicoPower-Technology',
+ '1067' => 'Mitsubishi-Electric',
+ '1068' => 'Diversified-Technology',
+ '1069' => 'Mylex-Corporation',
+ '106a' => 'Aten-Research-Inc',
+ '106b' => 'Apple-Computer-Inc.',
+ '106c' => 'Hynix-Semiconductor',
+ '106d' => 'Sequent-Computer-Systems',
+ '106e' => 'DFI-Inc',
+ '106f' => 'City-Gate-Development-Ltd',
+ '1070' => 'Daewoo-Telecom-Ltd',
+ '1071' => 'Mitac',
+ '1072' => 'GIT-Co-Ltd',
+ '1073' => 'Yamaha-Corporation',
+ '1074' => 'NexGen-Microsystems',
+ '1076' => 'Chaintech-Computer-Co.-Ltd',
+ '1077' => 'QLogic-Corp.',
+ '1078' => 'Cyrix-Corporation',
+ '1079' => 'I-Bus',
+ '107a' => 'NetWorth',
+ '107b' => 'Gateway-2000',
+ '107d' => 'LeadTek-Research-Inc.',
+ '107e' => 'Interphase-Corporation',
+ '107f' => 'Data-Technology-Corporation',
+ '1080' => 'Contaq-Microsystems',
+ '1081' => 'Supermac-Technology',
+ '1082' => 'EFA-Corporation-of-America',
+ '1083' => 'Forex-Computer-Corporation',
+ '1084' => 'Parador',
+ '1085' => 'Tulip-Computers-Int.B.V.',
+ '1086' => 'J.-Bond-Computer-Systems',
+ '1087' => 'Cache-Computer',
+ '1088' => 'Microcomputer-Systems-M-Son',
+ '1089' => 'Data-General-Corporation',
+ '108c' => 'Oakleigh-Systems-Inc.',
+ '108d' => 'Olicom',
+ '108f' => 'Systemsoft',
+ '1091' => 'Intergraph-Corporation',
+ '1092' => 'Diamond-Multimedia-Systems',
+ '1093' => 'National-Instruments',
+ '1096' => 'Alacron',
+ '1097' => 'Appian-Technology',
+ '1098' => 'Quantum-Designs-H.K.-Ltd',
+ '1099' => 'Samsung-Electronics-Co.-Ltd',
+ '109a' => 'Packard-Bell',
+ '109b' => 'Gemlight-Computer-Ltd.',
+ '109c' => 'Megachips-Corporation',
+ '109d' => 'Zida-Technologies-Ltd.',
+ '109e' => 'Brooktree-Corporation',
+ '109f' => 'Trigem-Computer-Inc.',
+ '10a0' => 'Meidensha-Corporation',
+ '10a1' => 'Juko-Electronics-Ind.-Co.-Ltd',
+ '10a2' => 'Quantum-Corporation',
+ '10a3' => 'Everex-Systems-Inc',
+ '10a4' => 'Globe-Manufacturing-Sales',
+ '10a5' => 'Smart-Link-Ltd.',
+ '10a6' => 'Informtech-Industrial-Ltd.',
+ '10a7' => 'Benchmarq-Microelectronics',
+ '10a8' => 'Sierra-Semiconductor',
+ '10a9' => 'Silicon-Graphics-Inc.',
+ '10aa' => 'ACC-Microelectronics',
+ '10ab' => 'Digicom',
+ '10ac' => 'Honeywell-IAC',
+ '10ad' => 'Symphony-Labs',
+ '10ae' => 'Cornerstone-Technology',
+ '10af' => 'Micro-Computer-Systems-Inc',
+ '10b0' => 'CardExpert-Technology',
+ '10b1' => 'Cabletron-Systems-Inc',
+ '10b2' => 'Raytheon-Company',
+ '10b3' => 'Databook-Inc',
+ '10b4' => 'STB-Systems-Inc',
+ '10b5' => 'PLX-Technology-Inc.',
+ '10b6' => 'Madge-Networks',
+ '10b7' => '3Com-Corporation',
+ '10b9' => 'ALi-Corporation',
+ '10ba' => 'Mitsubishi-Electric-Corp.',
+ '10bb' => 'Dapha-Electronics-Corporation',
+ '10bc' => 'Advanced-Logic-Research',
+ '10bd' => 'Surecom-Technology',
+ '10be' => 'Tseng-Labs-International-Co.',
+ '10bf' => 'Most-Inc',
+ '10c0' => 'Boca-Research-Inc.',
+ '10c1' => 'ICM-Co.-Ltd.',
+ '10c2' => 'Auspex-Systems-Inc.',
+ '10c3' => 'Samsung-Semiconductors-Inc.',
+ '10c5' => 'Xerox-Corporation',
+ '10c6' => 'Rambus-Inc.',
+ '10c7' => 'Media-Vision',
+ '10c8' => 'Neomagic-Corporation',
+ '10c9' => 'Dataexpert-Corporation',
+ '10ca' => 'Fujitsu-Microelectr.-Inc.',
+ '10cb' => 'Omron-Corporation',
+ '10cd' => 'Advanced-System-Products-Inc',
+ '10ce' => 'Radius',
+ '10d1' => 'FuturePlus-Systems-Corp.',
+ '10d2' => 'Molex-Incorporated',
+ '10d3' => 'Jabil-Circuit-Inc',
+ '10d4' => 'Hualon-Microelectronics',
+ '10d5' => 'Autologic-Inc.',
+ '10d6' => 'Cetia',
+ '10d7' => 'BCM-Advanced-Research',
+ '10d8' => 'Advanced-Peripherals-Labs',
+ '10d9' => 'Macronix-Inc.-MXIC',
+ '10da' => 'Compaq-IPG-Austin',
+ '10db' => 'Rohm-LSI-Systems-Inc.',
+ '10dc' => 'CERN-ECP-EDU',
+ '10dd' => 'Evans---Sutherland',
+ '10de' => 'NVIDIA',
+ '10df' => 'Emulex-Corporation',
+ '10e1' => 'Tekram-Technology-Co.Ltd.',
+ '10e2' => 'Aptix-Corporation',
+ '10e3' => 'Tundra-Semiconductor-Corp.',
+ '10e4' => 'Tandem-Computers',
+ '10e5' => 'Micro-Industries-Corporation',
+ '10e7' => 'Vadem',
+ '10e8' => 'Applied-Micro-Circuits-Corp.',
+ '10e9' => 'Alps-Electric-Co.-Ltd.',
+ '10ea' => 'Integraphics',
+ '10ec' => 'Realtek',
+ '10eb' => 'Artists-Graphics',
+ '10ed' => 'Ascii-Corporation',
+ '10ee' => 'Xilinx-Corporation',
+ '10f0' => 'Peritek-Corporation',
+ '10f1' => 'Tyan-Computer',
+ '10f2' => 'Achme-Computer-Inc.',
+ '10f3' => 'Alaris-Inc.',
+ '10f4' => 'S-MOS-Systems-Inc.',
+ '10f5' => 'NKK-Corporation',
+ '10f8' => 'Altos-India-Ltd',
+ '10f9' => 'PC-Direct',
+ '10fa' => 'Truevision',
+ '10fc' => 'I-O-Data-Device-Inc.',
+ '10fd' => 'Soyo-Computer-Inc',
+ '10fe' => 'Fast-Multimedia-AG',
+ '10ff' => 'NCube',
+ '1100' => 'Jazz-Multimedia',
+ '1101' => 'Initio-Corporation',
+ '1102' => 'Creative-Labs',
+ '1104' => 'RasterOps-Corp.',
+ '1105' => 'Sigma-Designs-Inc.',
+ '1106' => 'VIA-Technologies-Inc.',
+ '1107' => 'Stratus-Computers',
+ '1108' => 'Proteon-Inc.',
+ '110a' => 'Siemens-Nixdorf-AG',
+ '110b' => 'Chromatic-Research-Inc.',
+ '110c' => 'Mini-Max-Technology-Inc.',
+ '110d' => 'Znyx-Advanced-Systems',
+ '110e' => 'CPU-Technology',
+ '110f' => 'Ross-Technology',
+ '1110' => 'Powerhouse-Systems',
+ '1111' => 'Santa-Cruz-Operation',
+ '1113' => 'Accton-Technology-Corporation',
+ '1114' => 'Atmel-Corporation',
+ '1115' => '3D-Labs',
+ '1116' => 'Data-Translation',
+ '1117' => 'Datacube-Inc',
+ '1118' => 'Berg-Electronics',
+ '111a' => 'Efficient-Networks-Inc',
+ '111b' => 'Teledyne-Electronic-Systems',
+ '111c' => 'Tricord-Systems-Inc.',
+ '111e' => 'Eldec',
+ '111f' => 'Precision-Digital-Images',
+ '1120' => 'EMC-Corporation',
+ '1121' => 'Zilog',
+ '1122' => 'Multi-tech-Systems-Inc.',
+ '1123' => 'Excellent-Design-Inc.',
+ '1124' => 'Leutron-Vision-AG',
+ '1125' => 'Eurocore',
+ '1126' => 'Vigra',
+ '1127' => 'FORE-Systems-Inc',
+ '1129' => 'Firmworks',
+ '112b' => 'Linotype---Hell-AG',
+ '112c' => 'Zenith-Data-Systems',
+ '112d' => 'Ravicad',
+ '112f' => 'Dalsa-Inc.',
+ '1130' => 'Computervision',
+ '1131' => 'Philips',
+ '1132' => 'Mitel-Corp.',
+ '1133' => 'Dialogic-Corporation',
+ '1134' => 'Mercury-Computer-Systems',
+ '1135' => 'Fuji-Xerox-Co-Ltd',
+ '1136' => 'Momentum-Data-Systems',
+ '1137' => 'Cisco-Systems-Inc',
+ '1138' => 'Ziatech-Corporation',
+ '1139' => 'Dynamic-Pictures-Inc',
+ '113a' => 'FWB-Inc',
+ '113b' => 'Network-Computing-Devices',
+ '113c' => 'Cyclone-Microsystems-Inc.',
+ '113d' => 'Leading-Edge-Products-Inc',
+ '113f' => 'Equinox-Systems-Inc.',
+ '1140' => 'Intervoice-Inc',
+ '1141' => 'Crest-Microsystem-Inc',
+ '1143' => 'NetPower-Inc',
+ '1144' => 'Cincinnati-Milacron',
+ '1145' => 'Workbit-Corporation',
+ '1146' => 'Force-Computers',
+ '1147' => 'Interface-Corp',
+ '1149' => 'Win-System-Corporation',
+ '114a' => 'VMIC',
+ '114b' => 'Canopus-Co.-Ltd',
+ '114c' => 'Annabooks',
+ '114d' => 'IC-Corporation',
+ '114e' => 'Nikon-Systems-Inc',
+ '114f' => 'Digi-International',
+ '1150' => 'Thinking-Machines-Corp',
+ '1151' => 'JAE-Electronics-Inc.',
+ '1152' => 'Megatek',
+ '1153' => 'Land-Win-Electronic-Corp',
+ '1154' => 'Melco-Inc',
+ '1155' => 'Pine-Technology-Ltd',
+ '1156' => 'Periscope-Engineering',
+ '1157' => 'Avsys-Corporation',
+ '1158' => 'Voarx-R---D-Inc',
+ '1159' => 'Mutech-Corp',
+ '115a' => 'Harlequin-Ltd',
+ '115b' => 'Parallax-Graphics',
+ '115c' => 'Photron-Ltd.',
+ '115d' => 'Xircom',
+ '115e' => 'Peer-Protocols-Inc',
+ '115f' => 'Maxtor-Corporation',
+ '1160' => 'Megasoft-Inc',
+ '1161' => 'PFU-Limited',
+ '1162' => 'OA-Laboratory-Co-Ltd',
+ '1163' => 'Rendition',
+ '1165' => 'Imagraph-Corporation',
+ '1166' => 'Broadcom',
+ '1167' => 'Mutoh-Industries-Inc',
+ '1168' => 'Thine-Electronics-Inc',
+ '116b' => 'Connectware-Inc',
+ '116d' => 'Martin-Marietta',
+ '116e' => 'Electronics-for-Imaging',
+ '116f' => 'Workstation-Technology',
+ '1170' => 'Inventec-Corporation',
+ '1171' => 'Loughborough-Sound-Images-Plc',
+ '1172' => 'Altera-Corporation',
+ '1173' => 'Adobe-Systems-Inc',
+ '1174' => 'Bridgeport-Machines',
+ '1175' => 'Mitron-Computer-Inc.',
+ '1176' => 'SBE-Incorporated',
+ '1177' => 'Silicon-Engineering',
+ '1178' => 'Alfa-Inc.',
+ '1179' => 'Toshiba-America-Info-Systems',
+ '117a' => 'A-Trend-Technology',
+ '117b' => 'L-G-Electronics-Inc.',
+ '117c' => 'Atto-Technology',
+ '117d' => 'Becton---Dickinson',
+ '117e' => 'T-R-Systems',
+ '117f' => 'Integrated-Circuit-Systems',
+ '1180' => 'Ricoh-Co-Ltd',
+ '1181' => 'Telmatics-International',
+ '1183' => 'Fujikura-Ltd',
+ '1184' => 'Forks-Inc',
+ '1185' => 'Dataworld-International-Ltd',
+ '1186' => 'D-Link',
+ '1189' => 'Matsushita-Electronics-Co-Ltd',
+ '118a' => 'Hilevel-Technology',
+ '118b' => 'Hypertec-Pty-Limited',
+ '118c' => 'Corollary-Inc',
+ '118d' => 'BitFlow-Inc',
+ '118e' => 'Hermstedt-GmbH',
+ '118f' => 'Green-Logic',
+ '1190' => 'Tripace',
+ '1191' => 'Artop-Electronic-Corp',
+ '1192' => 'Densan-Company-Ltd',
+ '1193' => 'Zeitnet-Inc.',
+ '1194' => 'Toucan-Technology',
+ '1195' => 'Ratoc-System-Inc',
+ '1196' => 'Hytec-Electronics-Ltd',
+ '1197' => 'Gage-Applied-Sciences-Inc.',
+ '1198' => 'Lambda-Systems-Inc',
+ '1199' => 'Attachmate-Corporation',
+ '119a' => 'Mind-Share-Inc.',
+ '119b' => 'Omega-Micro-Inc.',
+ '119c' => 'Information-Technology-Inst.',
+ '119d' => 'Bug-Inc.-Sapporo-Japan',
+ '119e' => 'Fujitsu-Microelectronics-Ltd.',
+ '119f' => 'Bull-HN-Information-Systems',
+ '11a0' => 'Convex-Computer-Corporation',
+ '11a1' => 'Hamamatsu-Photonics-K.K.',
+ '11a4' => 'Barco-Graphics-NV',
+ '11a5' => 'Microunity-Systems-Eng.-Inc',
+ '11a6' => 'Pure-Data-Ltd.',
+ '11a7' => 'Power-Computing-Corp.',
+ '11a8' => 'Systech-Corp.',
+ '11a9' => 'InnoSys-Inc.',
+ '11aa' => 'Actel',
+ '11ab' => 'Marvell-Technology-Group-Ltd.',
+ '11ad' => 'Lite-On-Communications-Inc',
+ '11ae' => 'Aztech-System-Ltd',
+ '11af' => 'Avid-Technology-Inc.',
+ '11b0' => 'V3-Semiconductor-Inc.',
+ '11b1' => 'Apricot-Computers',
+ '11b2' => 'Eastman-Kodak',
+ '11b3' => 'Barr-Systems-Inc.',
+ '11b5' => 'Radstone-Technology-Plc',
+ '11b6' => 'United-Video-Corp',
+ '11b7' => 'Motorola',
+ '11b8' => 'XPoint-Technologies-Inc',
+ '11b9' => 'Pathlight-Technology-Inc.',
+ '11ba' => 'Videotron-Corp',
+ '11bb' => 'Pyramid-Technology',
+ '11bc' => 'Network-Peripherals-Inc',
+ '11bd' => 'Pinnacle-Systems-Inc.',
+ '11bf' => 'Astrodesign-Inc.',
+ '11c0' => 'Hewlett-Packard',
+ '11c2' => 'Sand-Microelectronics',
+ '11c3' => 'NEC-Corporation',
+ '11c4' => 'Document-Technologies-Inc',
+ '11c5' => 'Shiva-Corporation',
+ '11c6' => 'Dainippon-Screen-Mfg.-Co.-Ltd',
+ '11c7' => 'D.C.M.-Data-Systems',
+ '11c9' => 'Magma',
+ '11ca' => 'LSI-Systems-Inc',
+ '11cb' => 'Specialix-Research-Ltd.',
+ '11cd' => 'HAL-Computer-Systems-Inc.',
+ '11ce' => 'Netaccess',
+ '11d1' => 'Auravision',
+ '11d2' => 'Intercom-Inc.',
+ '11d3' => 'Trancell-Systems-Inc',
+ '11d4' => 'Analog-Devices',
+ '11d5' => 'Ikon-Corporation',
+ '11d6' => 'Tekelec-Telecom',
+ '11d7' => 'Trenton-Technology-Inc.',
+ '11d9' => 'TEC-Corporation',
+ '11da' => 'Novell',
+ '11db' => 'Sega-Enterprises-Ltd',
+ '11dc' => 'Questra-Corporation',
+ '11dd' => 'Crosfield-Electronics-Limited',
+ '11de' => 'Zoran-Corporation',
+ '11df' => 'New-Wave-PDG',
+ '11e0' => 'Cray-Communications-A-S',
+ '11e1' => 'GEC-Plessey-Semi-Inc.',
+ '11e3' => 'Quicklogic-Corporation',
+ '11e4' => 'Second-Wave-Inc',
+ '11e5' => 'IIX-Consulting',
+ '11e6' => 'Mitsui-Zosen-System-Research',
+ '11e9' => 'Highwater-Designs-Ltd.',
+ '11ea' => 'Elsag-Bailey',
+ '11eb' => 'Formation-Inc.',
+ '11ec' => 'Coreco-Inc',
+ '11ed' => 'Mediamatics',
+ '11ee' => 'Dome-Imaging-Systems-Inc',
+ '11ef' => 'Nicolet-Technologies-B.V.',
+ '11f0' => 'Compu-Shack',
+ '11f1' => 'Symbios-Logic-Inc',
+ '11f2' => 'Picture-Tel-Japan-K.K.',
+ '11f3' => 'Keithley-Metrabyte',
+ '11f4' => 'Kinetic-Systems-Corporation',
+ '11f6' => 'Compex',
+ '11f7' => 'Scientific-Atlanta',
+ '11f8' => 'PMC-Sierra-Inc.',
+ '11f9' => 'I-Cube-Inc',
+ '11fb' => 'Datel-Inc',
+ '11fc' => 'Silicon-Magic',
+ '11fd' => 'High-Street-Consultants',
+ '11fe' => 'Comtrol-Corporation',
+ '11ff' => 'Scion-Corporation',
+ '1200' => 'CSS-Corporation',
+ '1201' => 'Vista-Controls-Corp',
+ '1202' => 'Network-General-Corp.',
+ '1205' => 'Array-Corporation',
+ '1206' => 'Amdahl-Corporation',
+ '1208' => 'Parsytec-GmbH',
+ '1209' => 'SCI-Systems-Inc',
+ '120a' => 'Synaptel',
+ '120b' => 'Adaptive-Solutions',
+ '120c' => 'Technical-Corp.',
+ '120d' => 'Compression-Labs-Inc.',
+ '120e' => 'Cyclades-Corporation',
+ '120f' => 'Essential-Communications',
+ '1210' => 'Hyperparallel-Technologies',
+ '1211' => 'Braintech-Inc',
+ '1212' => 'Kingston-Technology-Corp.',
+ '1215' => 'Interware-Co.-Ltd',
+ '1216' => 'Purup-Prepress-A-S',
+ '1217' => 'O2-Micro-Inc.',
+ '1218' => 'Hybricon-Corp.',
+ '1219' => 'First-Virtual-Corporation',
+ '121a' => '3Dfx-Interactive-Inc.',
+ '121c' => 'Nippon-Texaco.-Ltd',
+ '121e' => 'CSPI',
+ '121f' => 'Arcus-Technology-Inc.',
+ '1220' => 'Ariel-Corporation',
+ '1221' => 'Contec-Co.-Ltd',
+ '1222' => 'Ancor-Communications-Inc.',
+ '1224' => 'Interactive-Images',
+ '1225' => 'Power-I-O-Inc.',
+ '1227' => 'Tech-Source',
+ '1228' => 'Norsk-Elektro-Optikk-A-S',
+ '1229' => 'Data-Kinesis-Inc.',
+ '122a' => 'Integrated-Telecom',
+ '122c' => 'Sican-GmbH',
+ '122d' => 'Aztech-System-Ltd',
+ '122e' => 'Xyratex',
+ '122f' => 'Andrew-Corporation',
+ '1230' => 'Fishcamp-Engineering',
+ '1231' => 'Woodward-McCoach-Inc.',
+ '1232' => 'GPT-Limited',
+ '1233' => 'Bus-Tech-Inc.',
+ '1235' => 'Risq-Modular-Systems-Inc.',
+ '1236' => 'Sigma-Designs-Corporation',
+ '1237' => 'Alta-Technology-Corporation',
+ '1238' => 'Adtran',
+ '1239' => '3DO-Company',
+ '123a' => 'Visicom-Laboratories-Inc.',
+ '123b' => 'Seeq-Technology-Inc.',
+ '123c' => 'Century-Systems-Inc.',
+ '123d' => 'Engineering-Design-Team-Inc.',
+ '123e' => 'Simutech-Inc.',
+ '123f' => 'C-Cube-Microsystems',
+ '1240' => 'Marathon-Technologies-Corp.',
+ '1241' => 'DSC-Communications',
+ '1243' => 'Delphax',
+ '1245' => 'A.P.D.-S.A.',
+ '1246' => 'Dipix-Technologies-Inc.',
+ '1247' => 'Xylon-Research-Inc.',
+ '1248' => 'Central-Data-Corporation',
+ '1249' => 'Samsung-Electronics-Co.-Ltd.',
+ '124a' => 'AEG-Electrocom-GmbH',
+ '124b' => 'SBS-Greenspring-Modular-I-O',
+ '124c' => 'Solitron-Technologies-Inc.',
+ '124d' => 'Stallion-Technologies-Inc.',
+ '124e' => 'Cylink',
+ '124f' => 'Infortrend-Technology-Inc.',
+ '1251' => 'VLSI-Solutions-Oy',
+ '1253' => 'Guzik-Technical-Enterprises',
+ '1254' => 'Linear-Systems-Ltd.',
+ '1255' => 'Optibase-Ltd',
+ '1256' => 'Perceptive-Solutions-Inc.',
+ '1257' => 'Vertex-Networks-Inc.',
+ '1258' => 'Gilbarco-Inc.',
+ '1259' => 'Allied-Telesyn-International',
+ '125a' => 'ABB-Power-Systems',
+ '125b' => 'Asix-Electronics-Corporation',
+ '125c' => 'Aurora-Technologies-Inc.',
+ '125d' => 'ESS-Technology',
+ '125e' => 'Specialvideo-Engineering-SRL',
+ '125f' => 'Concurrent-Technologies-Inc.',
+ '1260' => 'Intersil-Corporation',
+ '1262' => 'ES-Computer-Company-Ltd.',
+ '1263' => 'Sonic-Solutions',
+ '1264' => 'Aval-Nagasaki-Corporation',
+ '1265' => 'Casio-Computer-Co.-Ltd.',
+ '1266' => 'Microdyne-Corporation',
+ '1267' => 'S.-A.-Telecommunications',
+ '1268' => 'Tektronix',
+ '1269' => 'Thomson-CSF-TTM',
+ '126a' => 'Lexmark',
+ '126b' => 'Adax-Inc.',
+ '126c' => 'Northern-Telecom',
+ '126d' => 'Splash-Technology-Inc.',
+ '126f' => 'Silicon-Motion-Inc.',
+ '1270' => 'Olympus-Optical-Co.-Ltd.',
+ '1271' => 'GW-Instruments',
+ '1272' => 'Telematics-International',
+ '1273' => 'Hughes-Network-Systems',
+ '1274' => 'Ensoniq',
+ '1275' => 'Network-Appliance-Corporation',
+ '1277' => 'Comstream',
+ '1279' => 'Transmeta-Corporation',
+ '127a' => 'Rockwell-International',
+ '127b' => 'Pixera-Corporation',
+ '127c' => 'Crosspoint-Solutions-Inc.',
+ '127d' => 'Vela-Research',
+ '127e' => 'Winnov-L.P.',
+ '127f' => 'Fujifilm',
+ '1280' => 'Photoscript-Group-Ltd.',
+ '1281' => 'Yokogawa-Electric-Corporation',
+ '1282' => 'Davicom-Semiconductor-Inc.',
+ '1284' => 'Sahara-Networks-Inc.',
+ '1285' => 'Platform-Technologies-Inc.',
+ '1286' => 'Mazet-GmbH',
+ '1287' => 'M-Pact-Inc.',
+ '1288' => 'Timestep-Corporation',
+ '1289' => 'AVC-Technology-Inc.',
+ '128a' => 'Asante-Technologies-Inc.',
+ '128b' => 'Transwitch-Corporation',
+ '128c' => 'Retix-Corporation',
+ '128d' => 'G2-Networks-Inc.',
+ '128f' => 'Tateno-Dennou-Inc.',
+ '1290' => 'Sord-Computer-Corporation',
+ '1291' => 'NCS-Computer-Italia',
+ '1292' => 'Tritech-Microelectronics-Inc',
+ '1293' => 'Media-Reality-Technology',
+ '1294' => 'Rhetorex-Inc.',
+ '1295' => 'Imagenation-Corporation',
+ '1296' => 'Kofax-Image-Products',
+ '1299' => 'Knowledge-Technology-Lab.',
+ '129a' => 'VMetro-inc.',
+ '129b' => 'Image-Access',
+ '129c' => 'Jaycor',
+ '129d' => 'Compcore-Multimedia-Inc.',
+ '129e' => 'Victor-Company-of-Japan-Ltd.',
+ '129f' => 'OEC-Medical-Systems-Inc.',
+ '12a0' => 'Allen-Bradley-Company',
+ '12a1' => 'Simpact-Associates-Inc.',
+ '12a2' => 'Newgen-Systems-Corporation',
+ '12a3' => 'Lucent-Technologies',
+ '12a5' => 'Vision-Dynamics-Ltd.',
+ '12a6' => 'Scalable-Networks-Inc.',
+ '12a7' => 'AMO-GmbH',
+ '12a8' => 'News-Datacom',
+ '12a9' => 'Xiotech-Corporation',
+ '12aa' => 'SDL-Communications-Inc.',
+ '12ac' => 'Measurex-Corporation',
+ '12ad' => 'Multidata-GmbH',
+ '12ae' => 'Alteon-Networks-Inc.',
+ '12af' => 'TDK-USA-Corp',
+ '12b0' => 'Jorge-Scientific-Corp',
+ '12b1' => 'GammaLink',
+ '12b2' => 'General-Signal-Networks',
+ '12b3' => 'Inter-Face-Co-Ltd',
+ '12b4' => 'FutureTel-Inc',
+ '12b5' => 'Granite-Systems-Inc.',
+ '12b6' => 'Natural-Microsystems',
+ '12b8' => 'Korg',
+ '12ba' => 'BittWare-Inc.',
+ '12bb' => 'Nippon-Unisoft-Corporation',
+ '12bc' => 'Array-Microsystems',
+ '12bd' => 'Computerm-Corp.',
+ '12be' => 'Anchor-Chips-Inc.',
+ '12bf' => 'Fujifilm-Microdevices',
+ '12c0' => 'Infimed',
+ '12c1' => 'GMM-Research-Corp',
+ '12c2' => 'Mentec-Limited',
+ '12c3' => 'Holtek-Microelectronics-Inc',
+ '12c4' => 'Connect-Tech-Inc',
+ '12c5' => 'Picture-Elements-Incorporated',
+ '12c6' => 'Mitani-Corporation',
+ '12c7' => 'Dialogic-Corp',
+ '12c8' => 'G-Force-Co-Ltd',
+ '12c9' => 'Gigi-Operations',
+ '12ca' => 'Integrated-Computing-Engines',
+ '12cb' => 'Antex-Electronics-Corporation',
+ '12cd' => 'Aims-Lab',
+ '12ce' => 'Netspeed-Inc.',
+ '12cf' => 'Prophet-Systems-Inc.',
+ '12d0' => 'GDE-Systems-Inc.',
+ '12d1' => 'PSITech',
+ '12d3' => 'Vingmed-Sound-A-S',
+ '12d4' => 'Ulticom-Formerly-DGM-S',
+ '12d5' => 'Equator-Technologies-Inc',
+ '12d6' => 'Analogic-Corp',
+ '12d7' => 'Biotronic-SRL',
+ '12d8' => 'Pericom-Semiconductor',
+ '12d9' => 'Aculab-PLC',
+ '12da' => 'True-Time-Inc.',
+ '12db' => 'Annapolis-Micro-Systems-Inc',
+ '12dd' => 'Management-Graphics',
+ '12de' => 'Rainbow-Technologies',
+ '12df' => 'SBS-Technologies-Inc',
+ '12e0' => 'Chase-Research',
+ '12e1' => 'Nintendo-Co-Ltd',
+ '12e4' => 'Brooktrout-Technology-Inc',
+ '12e5' => 'Apex-Semiconductor-Inc',
+ '12e6' => 'Cirel-Systems',
+ '12e7' => 'Sunsgroup-Corporation',
+ '12e8' => 'Crisc-Corp',
+ '12e9' => 'GE-Spacenet',
+ '12ea' => 'Zuken',
+ '12eb' => 'Aureal-Semiconductor',
+ '12ec' => '3A-International-Inc.',
+ '12ed' => 'Optivision-Inc.',
+ '12ee' => 'Orange-Micro',
+ '12ef' => 'Vienna-Systems',
+ '12f0' => 'Pentek',
+ '12f1' => 'Sorenson-Vision-Inc',
+ '12f2' => 'Gammagraphx-Inc.',
+ '12f3' => 'Radstone-Technology',
+ '12f4' => 'Megatel',
+ '12f5' => 'Forks',
+ '12f6' => 'Dawson-France',
+ '12f7' => 'Cognex',
+ '12f8' => 'Electronic-Design-GmbH',
+ '12f9' => 'Four-Fold-Ltd',
+ '12fb' => 'Spectrum-Signal-Processing',
+ '12fc' => 'Capital-Equipment-Corp',
+ '12fd' => 'I2S',
+ '12ff' => 'Lexicon',
+ '1302' => 'Computer-Sciences-Corp',
+ '1303' => 'Innovative-Integration',
+ '1304' => 'Juniper-Networks',
+ '1305' => 'Netphone-Inc',
+ '1306' => 'Duet-Technologies',
+ '1308' => 'Jato-Technologies-Inc.',
+ '1309' => 'AB-Semiconductor-Ltd',
+ '130c' => 'Ambex-Technologies-Inc',
+ '130d' => 'Accelerix-Inc',
+ '130e' => 'Yamatake-Honeywell-Co.-Ltd',
+ '130f' => 'Advanet-Inc',
+ '1310' => 'Gespac',
+ '1311' => 'Videoserver-Inc',
+ '1312' => 'Acuity-Imaging-Inc',
+ '1313' => 'Yaskawa-Electric-Co.',
+ '1315' => 'Wavesat',
+ '1316' => 'Teradyne-Inc',
+ '1317' => 'ADMtek',
+ '1318' => 'Packet-Engines-Inc.',
+ '1319' => 'Fortemedia-Inc',
+ '131a' => 'Finisar-Corp.',
+ '131d' => 'Sysmic-Inc.',
+ '131e' => 'Xinex-Networks-Inc',
+ '131f' => 'Siig-Inc',
+ '1320' => 'Crypto-AG',
+ '1321' => 'Arcobel-Graphics-BV',
+ '1322' => 'MTT-Co.-Ltd',
+ '1323' => 'Dome-Inc',
+ '1324' => 'Sphere-Communications',
+ '1325' => 'Salix-Technologies-Inc',
+ '1326' => 'Seachange-international',
+ '1327' => 'Voss-scientific',
+ '1328' => 'quadrant-international',
+ '1329' => 'Productivity-Enhancement',
+ '132a' => 'Microcom-Inc.',
+ '132b' => 'Broadband-Technologies',
+ '132c' => 'Micrel-Inc',
+ '1330' => 'MMC-Networks',
+ '1331' => 'RadiSys-Corporation',
+ '1332' => 'Micro-Memory',
+ '1334' => 'Redcreek-Communications-Inc',
+ '1335' => 'Videomail-Inc',
+ '1337' => 'Third-Planet-Publishing',
+ '1338' => 'BT-Electronics',
+ '133a' => 'Vtel-Corp',
+ '133b' => 'Softcom-Microsystems',
+ '133c' => 'Holontech-Corp',
+ '133d' => 'SS-Technologies',
+ '133e' => 'Virtual-Computer-Corp',
+ '133f' => 'SCM-Microsystems',
+ '1340' => 'Atalla-Corp',
+ '1341' => 'Kyoto-Microcomputer-Co',
+ '1342' => 'Promax-Systems-Inc',
+ '1343' => 'Phylon-Communications-Inc',
+ '1345' => 'Arescom-Inc',
+ '1347' => 'Odetics',
+ '134a' => 'DTC-Technology-Corp.',
+ '134b' => 'ARK-Research-Corp.',
+ '134c' => 'Chori-Joho-System-Co.-Ltd',
+ '134d' => 'PCTel-Inc',
+ '134e' => 'CSTI',
+ '134f' => 'Algo-System-Co-Ltd',
+ '1350' => 'Systec-Co.-Ltd',
+ '1351' => 'Sonix-Inc',
+ '1353' => 'Thales-Idatys',
+ '1354' => 'Dwave-System-Inc',
+ '1355' => 'Kratos-Analytical-Ltd',
+ '1356' => 'The-Logical-Co',
+ '1359' => 'Prisa-Networks',
+ '135a' => 'Brain-Boxes',
+ '135b' => 'Giganet-Inc',
+ '135c' => 'Quatech-Inc',
+ '135d' => 'ABB-Network-Partner-AB',
+ '135e' => 'Sealevel-Systems-Inc',
+ '135f' => 'I-Data-International-A-S',
+ '1360' => 'Meinberg-Funkuhren',
+ '1361' => 'Soliton-Systems-K.K.',
+ '1362' => 'Fujifacom-Corporation',
+ '1363' => 'Phoenix-Technology-Ltd',
+ '1364' => 'ATM-Communications-Inc',
+ '1365' => 'Hypercope-GmbH',
+ '1366' => 'Teijin-Seiki-Co.-Ltd',
+ '1367' => 'Hitachi-Zosen-Corporation',
+ '1368' => 'Skyware-Corporation',
+ '1369' => 'Digigram',
+ '136a' => 'High-Soft-Tech',
+ '136b' => 'Kawasaki-Steel-Corporation',
+ '136c' => 'Adtek-System-Science-Co-Ltd',
+ '136d' => 'Gigalabs-Inc',
+ '136f' => 'Applied-Magic-Inc',
+ '1370' => 'ATL-Products',
+ '1371' => 'CNet-Technology-Inc',
+ '1373' => 'Silicon-Vision-Inc',
+ '1374' => 'Silicom-Ltd.',
+ '1375' => 'Argosystems-Inc',
+ '1376' => 'LMC',
+ '1378' => 'Telemann-Co.-Ltd',
+ '137a' => 'Mark-of-the-Unicorn-Inc',
+ '137b' => 'PPT-Vision',
+ '137c' => 'Iwatsu-Electric-Co-Ltd',
+ '137d' => 'Dynachip-Corporation',
+ '137f' => 'Japan-Satellite-Systems-Inc',
+ '1380' => 'Sanritz-Automation-Co-Ltd',
+ '1381' => 'Brains-Co.-Ltd',
+ '1383' => 'Controlnet-Inc',
+ '1385' => 'Netgear',
+ '1386' => 'Video-Domain-Technologies',
+ '1387' => 'Systran-Corp',
+ '1389' => 'Applicom-International',
+ '138a' => 'Fusion-Micromedia-Corp',
+ '138b' => 'Tokimec-Inc',
+ '138c' => 'Silicon-Reality',
+ '138d' => 'Future-Techno-Designs-pte-Ltd',
+ '138e' => 'Basler-GmbH',
+ '138f' => 'Patapsco-Designs-Inc',
+ '1390' => 'Concept-Development-Inc',
+ '1391' => 'Development-Concepts-Inc',
+ '1392' => 'Medialight-Inc',
+ '1393' => 'Moxa-Technologies-Co-Ltd',
+ '1394' => 'Level-One-Communications',
+ '1395' => 'Ambicom-Inc',
+ '1396' => 'Cipher-Systems-Inc',
+ '1397' => 'Cologne-Chip-Designs-GmbH',
+ '1398' => 'Clarion-co.-Ltd',
+ '1399' => 'Rios-systems-Co-Ltd',
+ '139a' => 'Alacritech-Inc',
+ '139c' => 'Quantum-3d-Inc',
+ '139d' => 'EPL-limited',
+ '139e' => 'Media4',
+ '139f' => 'Aethra-s.r.l.',
+ '13a0' => 'Crystal-Group-Inc',
+ '13a1' => 'Kawasaki-Heavy-Industries-Ltd',
+ '13a2' => 'Ositech-Communications-Inc',
+ '13a3' => 'Hifn-Inc.',
+ '13a4' => 'Rascom-Inc',
+ '13a5' => 'Audio-Digital-Imaging-Inc',
+ '13a6' => 'Videonics-Inc',
+ '13a7' => 'Teles-AG',
+ '13a8' => 'Exar-Corp.',
+ '13aa' => 'Broadband-Networks-Inc',
+ '13ab' => 'Arcom-Control-Systems-Ltd',
+ '13ac' => 'Motion-Media-Technology-Ltd',
+ '13ad' => 'Nexus-Inc',
+ '13ae' => 'ALD-Technology-Ltd',
+ '13af' => 'T.Sqware',
+ '13b0' => 'Maxspeed-Corp',
+ '13b1' => 'Tamura-corporation',
+ '13b2' => 'Techno-Chips-Co.-Ltd',
+ '13b3' => 'Lanart-Corporation',
+ '13b4' => 'Wellbean-Co-Inc',
+ '13b5' => 'ARM',
+ '13b6' => 'Dlog-GmbH',
+ '13b7' => 'Logic-Devices-Inc',
+ '13b8' => 'Nokia-Telecommunications-oy',
+ '13b9' => 'Elecom-Co-Ltd',
+ '13ba' => 'Oxford-Instruments',
+ '13bb' => 'Sanyo-Technosound-Co-Ltd',
+ '13bc' => 'Bitran-Corporation',
+ '13bd' => 'SHARP',
+ '13be' => 'Miroku-Jyoho-Service-Co.-Ltd',
+ '13bf' => 'Sharewave-Inc',
+ '13c0' => 'Microgate-Corporation',
+ '13c1' => '3ware-Inc',
+ '13c3' => 'Janz-Computer-AG',
+ '13c4' => 'Phase-Metrics',
+ '13c5' => 'Alphi-Technology-Corp',
+ '13c6' => 'Condor-Engineering-Inc',
+ '13c7' => 'Blue-Chip-Technology-Ltd',
+ '13c8' => 'Apptech-Inc',
+ '13c9' => 'Eaton-Corporation',
+ '13ca' => 'Iomega-Corporation',
+ '13cb' => 'Yano-Electric-Co-Ltd',
+ '13cc' => 'Metheus-Corporation',
+ '13ce' => 'Cocom-A-S',
+ '13cf' => 'Studio-Audio---Video-Ltd',
+ '13d0' => 'Techsan-Electronics-Co-Ltd',
+ '13d1' => 'Abocom-Systems-Inc',
+ '13d2' => 'Shark-Multimedia-Inc',
+ '13d3' => 'IMC-Networks',
+ '13d4' => 'Graphics-Microsystems-Inc',
+ '13d5' => 'Media-100-Inc',
+ '13d6' => 'K.I.-Technology-Co-Ltd',
+ '13d8' => 'Phobos-corporation',
+ '13d9' => 'Apex-PC-Solutions-Inc',
+ '13da' => 'Intresource-Systems-pte-Ltd',
+ '13dc' => 'Netboost-Corporation',
+ '13dd' => 'Multimedia-Bundle-Inc',
+ '13de' => 'ABB-Robotics-Products-AB',
+ '13df' => 'E-Tech-Inc',
+ '13e0' => 'GVC-Corporation',
+ '13e2' => 'Dynamics-Research-Corporation',
+ '13e3' => 'Nest-Inc',
+ '13e4' => 'Calculex-Inc',
+ '13e5' => 'Telesoft-Design-Ltd',
+ '13e6' => 'Argosy-research-Inc',
+ '13e7' => 'NAC-Incorporated',
+ '13e8' => 'Chip-Express-Corporation',
+ '13e9' => 'Intraserver-Technology-Inc',
+ '13ea' => 'Dallas-Semiconductor',
+ '13eb' => 'Hauppauge-Computer-Works-Inc',
+ '13ec' => 'Zydacron-Inc',
+ '13ed' => 'Raytheion-E-Systems',
+ '13ef' => 'Coppercom-Inc',
+ '13f0' => 'Sundance-Technology-Inc---IC-Plus-Corp',
+ '13f1' => 'Oce---Technologies-B.V.',
+ '13f2' => 'Ford-Microelectronics-Inc',
+ '13f3' => 'Mcdata-Corporation',
+ '13f4' => 'Troika-Networks-Inc.',
+ '13f5' => 'Kansai-Electric-Co.-Ltd',
+ '13f6' => 'C-Media-Electronics-Inc',
+ '13f7' => 'Wildfire-Communications',
+ '13f8' => 'Ad-Lib-Multimedia-Inc',
+ '13f9' => 'NTT-Advanced-Technology-Corp.',
+ '13fa' => 'Pentland-Systems-Ltd',
+ '13fb' => 'Aydin-Corp',
+ '13fd' => 'Micro-Science-Inc',
+ '13fe' => 'Advantech-Co.-Ltd',
+ '13ff' => 'Silicon-Spice-Inc',
+ '1400' => 'Artx-Inc',
+ '1401' => 'CR-Systems-A-S',
+ '1402' => 'Meilhaus-Electronic-GmbH',
+ '1403' => 'Ascor-Inc',
+ '1404' => 'Fundamental-Software-Inc',
+ '1405' => 'Excalibur-Systems-Inc',
+ '1406' => 'Oce-Printing-Systems-GmbH',
+ '1407' => 'Lava-Computer-mfg-Inc',
+ '1408' => 'Aloka-Co.-Ltd',
+ '1409' => 'Timedia-Technology-Co-Ltd',
+ '140a' => 'DSP-Research-Inc',
+ '140c' => 'Elmic-Systems-Inc',
+ '140d' => 'Matsushita-Electric-Works-Ltd',
+ '140e' => 'Goepel-Electronic-GmbH',
+ '140f' => 'Salient-Systems-Corp',
+ '1410' => 'Midas-lab-Inc',
+ '1411' => 'Ikos-Systems-Inc',
+ '1412' => 'VIA-Technologies-Inc.',
+ '1413' => 'Addonics',
+ '1414' => 'Microsoft',
+ '1415' => 'Oxford-Semiconductor-Ltd',
+ '1416' => 'Multiwave-Innovation-pte-Ltd',
+ '1417' => 'Convergenet-Technologies-Inc',
+ '1419' => 'Excel-Switching-Corp',
+ '141a' => 'Apache-Micro-Peripherals-Inc',
+ '141b' => 'Zoom-Telephonics-Inc',
+ '141d' => 'Digitan-Systems-Inc',
+ '141e' => 'Fanuc-Ltd',
+ '141f' => 'Visiontech-Ltd',
+ '1420' => 'Psion-Dacom-plc',
+ '1421' => 'Ads-Technologies-Inc',
+ '1422' => 'Ygrec-Systems-Co-Ltd',
+ '1423' => 'Custom-Technology-Corp.',
+ '1424' => 'Videoserver-Connections',
+ '1425' => 'Chelsio-Communications-Inc',
+ '1426' => 'Storage-Technology-Corp.',
+ '1427' => 'Better-On-Line-Solutions',
+ '1428' => 'Edec-Co-Ltd',
+ '1429' => 'Unex-Technology-Corp.',
+ '142a' => 'Kingmax-Technology-Inc',
+ '142b' => 'Radiolan',
+ '142c' => 'Minton-Optic-Industry-Co-Ltd',
+ '142d' => 'Pix-stream-Inc',
+ '142e' => 'Vitec-Multimedia',
+ '142f' => 'Radicom-Research-Inc',
+ '1431' => 'Gilat-Satellite-Networks',
+ '1432' => 'Edimax-Computer-Co.',
+ '1433' => 'Eltec-Elektronik-GmbH',
+ '1436' => 'CIS-Technology-Inc',
+ '1437' => 'Nissin-Inc-Co',
+ '1438' => 'Atmel-dream',
+ '143a' => 'Stargate-Solutions-Inc',
+ '143c' => 'Amlogic-Inc',
+ '143d' => 'Tamarack-Microelectronics-Inc',
+ '143e' => 'Jones-Futurex-Inc',
+ '1440' => 'ALGOL-Corp.',
+ '1441' => 'AGIE-Ltd',
+ '1442' => 'Phoenix-Contact-GmbH---Co.',
+ '1443' => 'Unibrain-S.A.',
+ '1444' => 'TRW',
+ '1445' => 'Logical-DO-Ltd',
+ '1446' => 'Graphin-Co-Ltd',
+ '1447' => 'AIM-GmBH',
+ '1448' => 'Alesis-Studio-Electronics',
+ '1449' => 'TUT-Systems-Inc',
+ '144a' => 'Adlink-Technology',
+ '144c' => 'Catalina-Research-Inc',
+ '144d' => 'Samsung-Electronics-Co-Ltd',
+ '144e' => 'OLITEC',
+ '144f' => 'Askey-Computer-Corp.',
+ '1450' => 'Octave-Communications-Ind.',
+ '1451' => 'SP3D-Chip-Design-GmBH',
+ '1453' => 'MYCOM-Inc',
+ '1454' => 'Altiga-Networks',
+ '1455' => 'Logic-Plus-Plus-Inc',
+ '1457' => 'Nuera-Communications-Inc',
+ '1458' => 'Giga-byte-Technology',
+ '1459' => 'DOOIN-Electronics',
+ '145a' => 'Escalate-Networks-Inc',
+ '145b' => 'PRAIM-SRL',
+ '145c' => 'Cryptek',
+ '145d' => 'Gallant-Computer-Inc',
+ '145e' => 'Aashima-Technology-B.V.',
+ '145f' => 'Baldor-Electric-Company',
+ '1460' => 'DYNARC-INC',
+ '1461' => 'Avermedia-Technologies-Inc',
+ '1463' => 'Fast-Corporation',
+ '1465' => 'GN-NETTEST-Telecom-DIV.',
+ '1466' => 'Designpro-Inc.',
+ '1467' => 'DIGICOM-SPA',
+ '1468' => 'AMBIT-Microsystem-Corp.',
+ '1469' => 'Cleveland-Motion-Controls',
+ '146a' => 'IFR',
+ '146b' => 'Parascan-Technologies-Ltd',
+ '146c' => 'Ruby-Tech-Corp.',
+ '146d' => 'Tachyon-INC.',
+ '1470' => 'Bay-Networks',
+ '1472' => 'DAIKIN-Industries-Ltd',
+ '1473' => 'ZAPEX-Technologies-Inc',
+ '1474' => 'Doug-Carson---Associates',
+ '1475' => 'PICAZO-Communications',
+ '1476' => 'MORTARA-Instrument-Inc',
+ '1477' => 'Net-Insight',
+ '1478' => 'DIATREND-Corporation',
+ '1479' => 'TORAY-Industries-Inc',
+ '147a' => 'FORMOSA-Industrial-Computing',
+ '147b' => 'ABIT-Computer-Corp.',
+ '147c' => 'AWARE-Inc.',
+ '147d' => 'Interworks-Computer-Products',
+ '147f' => 'NIHON-UNISYS-Ltd.',
+ '1480' => 'SCII-Telecom',
+ '1481' => 'BIOPAC-Systems-Inc',
+ '1483' => 'LABWAY-Corporation',
+ '1484' => 'Logic-Corporation',
+ '1485' => 'ERMA---Electronic-GmBH',
+ '1487' => 'MARQUETTE-Medical-Systems',
+ '1488' => 'KONTRON-Electronik-GmBH',
+ '1489' => 'KYE-Systems-Corp',
+ '148a' => 'OPTO',
+ '148b' => 'INNOMEDIALOGIC-Inc.',
+ '148c' => 'C.P.-Technology-Co.-Ltd',
+ '148d' => 'DIGICOM-Systems-Inc.',
+ '148e' => 'OSI-Plus-Corporation',
+ '148f' => 'Plant-Equipment-Inc.',
+ '1490' => 'Stone-Microsystems-PTY-Ltd.',
+ '1491' => 'ZEAL-Corporation',
+ '1492' => 'Time-Logic-Corporation',
+ '1493' => 'MAKER-Communications',
+ '1494' => 'WINTOP-Technology-Inc.',
+ '1496' => 'JOYTECH-Computer-Co.-Ltd.',
+ '1497' => 'SMA-Regelsysteme-GmBH',
+ '1498' => 'TEWS-Technologies-GmbH',
+ '1499' => 'EMTEC-CO.-Ltd',
+ '149a' => 'ANDOR-Technology-Ltd',
+ '149b' => 'SEIKO-Instruments-Inc',
+ '149c' => 'OVISLINK-Corp.',
+ '149d' => 'NEWTEK-Inc',
+ '149e' => 'Mapletree-Networks-Inc.',
+ '149f' => 'LECTRON-Co-Ltd',
+ '14a0' => 'SOFTING-GmBH',
+ '14a1' => 'Systembase-Co-Ltd',
+ '14a2' => 'Millennium-Engineering-Inc',
+ '14a3' => 'Maverick-Networks',
+ '14a4' => 'GVC-BCM-Advanced-Research',
+ '14a6' => 'INOVA-Computers-GmBH---Co-KG',
+ '14a7' => 'MYTHOS-Systems-Inc',
+ '14a9' => 'HIVERTEC-Inc',
+ '14aa' => 'Advanced-MOS-Technology-Inc',
+ '14ab' => 'Mentor-Graphics-Corp.',
+ '14ac' => 'Novaweb-Technologies-Inc',
+ '14ad' => 'Time-Space-Radio-AB',
+ '14ae' => 'CTI-Inc',
+ '14af' => 'Guillemot-Corporation',
+ '14b1' => 'Nextcom-K.K.',
+ '14b2' => 'ENNOVATE-Networks-Inc',
+ '14b3' => 'XPEED-Inc',
+ '14b5' => 'Creamware-GmBH',
+ '14b6' => 'Quantum-Data-Corp.',
+ '14b7' => 'PROXIM-Inc',
+ '14b8' => 'Techsoft-Technology-Co-Ltd',
+ '14b9' => 'Cisco-Systems-Inc.',
+ '14ba' => 'INTERNIX-Inc.',
+ '14bb' => 'SEMTECH-Corporation',
+ '14bc' => 'Globespan-Semiconductor-Inc.',
+ '14bd' => 'CARDIO-Control-N.V.',
+ '14be' => 'L3-Communications',
+ '14bf' => 'SPIDER-Communications-Inc.',
+ '14c0' => 'COMPAL-Electronics-Inc',
+ '14c1' => 'MYRICOM-Inc.',
+ '14c2' => 'DTK-Computer',
+ '14c3' => 'MEDIATEK-Corp.',
+ '14c5' => 'Automation-Products-AB',
+ '14c6' => 'Data-Race-Inc',
+ '14c8' => 'Turbocomm-Tech.-Inc.',
+ '14c9' => 'ODIN-Telesystems-Inc',
+ '14ca' => 'PE-Logic-Corp.',
+ '14cb' => 'Billionton-Systems-Inc',
+ '14cc' => 'NAKAYO-Telecommunications-Inc',
+ '14cd' => 'Universal-Scientific-Ind.',
+ '14ce' => 'Whistle-Communications',
+ '14cf' => 'TEK-Microsystems-Inc.',
+ '14d0' => 'Ericsson-Axe-R---D',
+ '14d1' => 'Computer-Hi-Tech-Co-Ltd',
+ '14d2' => 'Titan-Electronics-Inc',
+ '14d3' => 'CIRTECH-UK-Ltd',
+ '14d4' => 'Panacom-Technology-Corp',
+ '14d5' => 'Nitsuko-Corporation',
+ '14d6' => 'Accusys-Inc',
+ '14d7' => 'Hirakawa-Hewtech-Corp',
+ '14d8' => 'HOPF-Elektronik-GmBH',
+ '14db' => 'AFAVLAB-Technology-Inc',
+ '14dc' => 'Amplicon-Liveline-Ltd',
+ '14dd' => 'Boulder-Design-Labs-Inc',
+ '14df' => 'ASIC-Communications-Corp',
+ '14e1' => 'INVERTEX',
+ '14e2' => 'INFOLIBRIA',
+ '14e3' => 'AMTELCO',
+ '14e4' => 'Broadcom',
+ '14e5' => 'Pixelfusion-Ltd',
+ '14e6' => 'SHINING-Technology-Inc',
+ '14e7' => '3CX',
+ '14e8' => 'RAYCER-Inc',
+ '14e9' => 'GARNETS-System-CO-Ltd',
+ '14ea' => 'Planex-Communications-Inc',
+ '14eb' => 'SEIKO-EPSON-Corp',
+ '14ec' => 'ACQIRIS',
+ '14ed' => 'DATAKINETICS-Ltd',
+ '14ee' => 'MASPRO-KENKOH-Corp',
+ '14ef' => 'CARRY-Computer-ENG.-CO-Ltd',
+ '14f0' => 'CANON-RESEACH-CENTRE-FRANCE',
+ '14f1' => 'Conexant-Systems-Inc.',
+ '14f2' => 'MOBILITY-Electronics',
+ '14f3' => 'BroadLogic',
+ '14f5' => 'SOPAC-Ltd',
+ '14f6' => 'COYOTE-Technologies-LLC',
+ '14f7' => 'WOLF-Technology-Inc',
+ '14f8' => 'AUDIOCODES-Inc',
+ '14f9' => 'AG-COMMUNICATIONS',
+ '14fa' => 'WANDEL---GOLTERMANN',
+ '14fb' => 'TRANSAS-MARINE-UK-Ltd',
+ '14fc' => 'Quadrics-Ltd',
+ '14fd' => 'JAPAN-Computer-Industry-Inc',
+ '14fe' => 'ARCHTEK-TELECOM-Corp',
+ '14ff' => 'TWINHEAD-INTERNATIONAL-Corp',
+ '1500' => 'DELTA-Electronics-Inc',
+ '1501' => 'BANKSOFT-CANADA-Ltd',
+ '1503' => 'KAWASAKI-LSI-USA-Inc',
+ '1504' => 'KAISER-Electronics',
+ '1506' => 'CHAMELEON-Systems-Inc',
+ '150a' => 'FORVUS-RESEARCH-Inc',
+ '150b' => 'YAMASHITA-Systems-Corp',
+ '150c' => 'KYOPAL-CO-Ltd',
+ '150d' => 'WARPSPPED-Inc',
+ '150e' => 'C-PORT-Corp',
+ '150f' => 'INTEC-GmbH',
+ '1510' => 'BEHAVIOR-TECH-Computer-Corp',
+ '1511' => 'CENTILLIUM-Technology-Corp',
+ '1512' => 'ROSUN-Technologies-Inc',
+ '1513' => 'Raychem',
+ '1514' => 'TFL-LAN-Inc',
+ '1515' => 'Advent-design',
+ '1516' => 'MYSON-Technology-Inc',
+ '1517' => 'ECHOTEK-Corp',
+ '151a' => 'Globetek',
+ '151b' => 'COMBOX-Ltd',
+ '151c' => 'DIGITAL-AUDIO-LABS-Inc',
+ '151e' => 'MATRIX-Corp',
+ '151f' => 'TOPIC-SEMICONDUCTOR-Corp',
+ '1520' => 'CHAPLET-System-Inc',
+ '1521' => 'BELL-Corp',
+ '1522' => 'MainPine-Ltd',
+ '1523' => 'MUSIC-Semiconductors',
+ '1524' => 'ENE-Technology-Inc',
+ '1525' => 'IMPACT-Technologies',
+ '1526' => 'ISS-Inc',
+ '1527' => 'SOLECTRON',
+ '1528' => 'ACKSYS',
+ '1529' => 'AMERICAN-MICROSystems-Inc',
+ '152a' => 'QUICKTURN-DESIGN-Systems',
+ '152b' => 'FLYTECH-Technology-CO-Ltd',
+ '152c' => 'MACRAIGOR-Systems-LLC',
+ '152d' => 'QUANTA-Computer-Inc',
+ '152e' => 'MELEC-Inc',
+ '152f' => 'Philips---CRYPTO',
+ '1530' => 'ACQIS-Technology-Inc',
+ '1531' => 'CHRYON-Corp',
+ '1532' => 'ECHELON-Corp',
+ '1533' => 'BALTIMORE',
+ '1534' => 'ROAD-Corp',
+ '1535' => 'EVERGREEN-Technologies-Inc',
+ '1536' => 'ACTIS-Computer',
+ '1537' => 'DATALEX-COMMUNCATIONS',
+ '1538' => 'ARALION-Inc',
+ '153a' => 'ONO-SOKKI',
+ '153b' => 'TERRATEC-Electronic-GmbH',
+ '153c' => 'ANTAL-Electronic',
+ '153d' => 'FILANET-Corp',
+ '153e' => 'TECHWELL-Inc',
+ '153f' => 'MIPS-Technologies-Inc.',
+ '1540' => 'PROVIDEO-MULTIMEDIA-Co-Ltd',
+ '1541' => 'MACHONE-Communications',
+ '1543' => 'SILICON-Laboratories',
+ '1544' => 'DCM-DATA-Systems',
+ '1545' => 'VISIONTEK',
+ '1546' => 'IOI-Technology-Corp',
+ '1547' => 'MITUTOYO-Corp',
+ '1548' => 'JET-PROPULSION-Laboratory',
+ '154a' => 'MAX-Technologies-Inc',
+ '154b' => 'COMPUTEX-Co-Ltd',
+ '154c' => 'VISUAL-Technology-Inc',
+ '154e' => 'SERVOTEST-Ltd',
+ '154f' => 'STRATABEAM-Technology',
+ '1550' => 'OPEN-NETWORK-Co-Ltd',
+ '1552' => 'RACAL-AIRTECH-Ltd',
+ '1553' => 'Chicony-Electronics-CO',
+ '1554' => 'PROLINK-Microsystems-Corp',
+ '1555' => 'GESYTEC-GmBH',
+ '1556' => 'PLD-APPLICATIONS',
+ '1557' => 'MEDIASTAR-Co-Ltd',
+ '1558' => 'CLEVO-KAPOK-Computer',
+ '1559' => 'SI-LOGIC-Ltd',
+ '155a' => 'INNOMEDIA-Inc',
+ '155b' => 'PROTAC-INTERNATIONAL-Corp',
+ '155c' => 'Cemax-Icon-Inc',
+ '155d' => 'Mac-System-Co-Ltd',
+ '155e' => 'LP-Elektronik-GmbH',
+ '155f' => 'Perle-Systems-Ltd',
+ '1561' => 'Viewgraphics-Inc',
+ '1562' => 'Symbol-Technologies',
+ '1563' => 'A-Trend-Technology-Co-Ltd',
+ '1565' => 'Biostar-Microtech-Intl-Corp',
+ '1566' => 'Ardent-Technologies-Inc',
+ '1567' => 'Jungsoft',
+ '1568' => 'DDK-Electronics-Inc',
+ '1569' => 'Palit-Microsystems-Inc.',
+ '156a' => 'Avtec-Systems',
+ '156b' => '2wire-Inc',
+ '156c' => 'Vidac-Electronics-GmbH',
+ '156d' => 'Alpha-Top-Corp',
+ '156e' => 'Alfa-Inc',
+ '1570' => 'Lecroy-Corp',
+ '1571' => 'Contemporary-Controls',
+ '1572' => 'Otis-Elevator-Company',
+ '1573' => 'Lattice---Vantis',
+ '1574' => 'Fairchild-Semiconductor',
+ '1576' => 'Viewcast-COM',
+ '1578' => 'HITT',
+ '1579' => 'Dual-Technology-Corp',
+ '157a' => 'Japan-Elecronics-Ind-Inc',
+ '157b' => 'Star-Multimedia-Corp',
+ '157c' => 'Eurosoft-UK',
+ '157d' => 'Gemflex-Networks',
+ '157e' => 'Transition-Networks',
+ '157f' => 'PX-Instruments-Technology-Ltd',
+ '1580' => 'Primex-Aerospace-Co',
+ '1581' => 'SEH-Computertechnik-GmbH',
+ '1582' => 'Cytec-Corp',
+ '1583' => 'Inet-Technologies-Inc',
+ '1584' => 'Uniwill-Computer-Corp',
+ '1585' => 'Logitron',
+ '1586' => 'Lancast-Inc',
+ '1587' => 'Konica-Corp',
+ '1588' => 'Solidum-Systems-Corp',
+ '1589' => 'Atlantek-Microsystems-Pty-Ltd',
+ '158a' => 'Digalog-Systems-Inc',
+ '158b' => 'Allied-Data-Technologies',
+ '158d' => 'Point-Multimedia-Systems',
+ '158e' => 'Lara-Technology-Inc',
+ '158f' => 'Ditect-Coop',
+ '1590' => '3PAR-Inc.',
+ '1591' => 'ARN',
+ '1592' => 'Syba-Tech-Ltd',
+ '1593' => 'Bops-Inc',
+ '1594' => 'Netgame-Ltd',
+ '1595' => 'Diva-Systems-Corp',
+ '1596' => 'Folsom-Research-Inc',
+ '1597' => 'Memec-Design-Services',
+ '1598' => 'Granite-Microsystems',
+ '1599' => 'Delta-Electronics-Inc',
+ '159a' => 'General-Instrument',
+ '159b' => 'Faraday-Technology-Corp',
+ '159c' => 'Stratus-Computer-Systems',
+ '159e' => 'A-Max-Technology-Co-Ltd',
+ '159f' => 'Galea-Network-Security',
+ '15a0' => 'Compumaster-SRL',
+ '15a1' => 'Geocast-Network-Systems',
+ '15a2' => 'Catalyst-Enterprises-Inc',
+ '15a3' => 'Italtel',
+ '15a4' => 'X-Net-OY',
+ '15a5' => 'Toyota-Macs-Inc',
+ '15a7' => 'SSE-Telecom-Inc',
+ '15aa' => 'Moreton-Bay',
+ '15ab' => 'Bluesteel-Networks-Inc',
+ '15ac' => 'North-Atlantic-Instruments',
+ '15ad' => 'VMware',
+ '15ae' => 'Amersham-Pharmacia-Biotech',
+ '15b0' => 'Zoltrix-International-Ltd',
+ '15b1' => 'Source-Technology-Inc',
+ '15b2' => 'Mosaid-Technologies-Inc',
+ '15b3' => 'Mellanox-Technologies',
+ '15b4' => 'CCI-TRIAD',
+ '15b5' => 'Cimetrics-Inc',
+ '15b6' => 'Texas-Memory-Systems-Inc',
+ '15b7' => 'Sandisk-Corp',
+ '15b8' => 'ADDI-DATA-GmbH',
+ '15ba' => 'Impacct-Technology-Corp',
+ '15bb' => 'Portwell-Inc',
+ '15bc' => 'Agilent-Technologies',
+ '15bd' => 'DFI-Inc',
+ '15be' => 'Sola-Electronics',
+ '15bf' => 'High-Tech-Computer-Corp-HTC',
+ '15c0' => 'BVM-Ltd',
+ '15c1' => 'Quantel',
+ '15c2' => 'Newer-Technology-Inc',
+ '15c3' => 'Taiwan-Mycomp-Co-Ltd',
+ '15c4' => 'EVSX-Inc',
+ '15c5' => 'Procomp-Informatics-Ltd',
+ '15c8' => 'Penta-Media-Co-Ltd',
+ '15c9' => 'Serome-Technology-Inc',
+ '15ca' => 'Bitboys-OY',
+ '15cb' => 'AG-Electronics-Ltd',
+ '15cc' => 'Hotrail-Inc',
+ '15cd' => 'Dreamtech-Co-Ltd',
+ '15ce' => 'Genrad-Inc',
+ '15cf' => 'Hilscher-GmbH',
+ '15d1' => 'Infineon-Technologies-AG',
+ '15d3' => 'NDS-Technologies-Israel-Ltd',
+ '15d4' => 'Iwill-Corp',
+ '15d5' => 'Tatung-Co',
+ '15d6' => 'Entridia-Corp',
+ '15d7' => 'Rockwell-Collins-Inc',
+ '15d8' => 'Cybernetics-Technology-Co-Ltd',
+ '15d9' => 'Super-Micro-Computer-Inc',
+ '15da' => 'Cyberfirm-Inc',
+ '15db' => 'Applied-Computing-Systems-Inc',
+ '15dc' => 'Litronic-Inc',
+ '15dd' => 'Sigmatel-Inc',
+ '15de' => 'Malleable-Technologies-Inc',
+ '15df' => 'Infinilink-Corp',
+ '15e0' => 'Cacheflow-Inc',
+ '15e1' => 'Voice-Technologies-Group-Inc',
+ '15e2' => 'Quicknet-Technologies-Inc',
+ '15e3' => 'Networth-Technologies-Inc',
+ '15e4' => 'VSN-Systemen-BV',
+ '15e5' => 'Valley-technologies-Inc',
+ '15e6' => 'Agere-Inc',
+ '15e7' => 'Get-Engineering-Corp',
+ '15e8' => 'National-Datacomm-Corp',
+ '15e9' => 'Pacific-Digital-Corp',
+ '15ea' => 'Tokyo-Denshi-Sekei-K.K.',
+ '15ec' => 'Beckhoff-GmbH',
+ '15ed' => 'Macrolink-Inc',
+ '15ee' => 'In-Win-Development-Inc',
+ '15ef' => 'Intelligent-Paradigm-Inc',
+ '15f0' => 'B-Tree-Systems-Inc',
+ '15f1' => 'Times-N-Systems-Inc',
+ '15f2' => 'Diagnostic-Instruments-Inc',
+ '15f3' => 'Digitmedia-Corp',
+ '15f4' => 'Valuesoft',
+ '15f5' => 'Power-Micro-Research',
+ '15f6' => 'Extreme-Packet-Device-Inc',
+ '15f7' => 'Banctec',
+ '15f8' => 'Koga-Electronics-Co',
+ '15f9' => 'Zenith-Electronics-Corp',
+ '15fa' => 'J.P.-Axzam-Corp',
+ '15fb' => 'Zilog-Inc',
+ '15fc' => 'Techsan-Electronics-Co-Ltd',
+ '15fd' => 'N-CUBED.NET',
+ '15fe' => 'Kinpo-Electronics-Inc',
+ '15ff' => 'Fastpoint-Technologies-Inc',
+ '1600' => 'Northrop-Grumman---Canada-Ltd',
+ '1601' => 'Tenta-Technology',
+ '1602' => 'Prosys-tec-Inc',
+ '1603' => 'Nokia-Wireless-Communications',
+ '1605' => 'Pairgain-Technologies',
+ '1606' => 'Europop-AG',
+ '1609' => 'Scimetric-Instruments-Inc',
+ '1612' => 'Telesynergy-Research-Inc.',
+ '1618' => 'Stone-Ridge-Technology',
+ '1619' => 'FarSite-Communications-Ltd',
+ '161f' => 'Rioworks',
+ '1626' => 'TDK-Semiconductor-Corp.',
+ '1629' => 'Kongsberg-Spacetec-AS',
+ '1631' => 'Packard-Bell-B.V.',
+ '163c' => 'Smart-Link-Ltd.',
+ '1641' => 'MKNet-Corp.',
+ '165a' => 'Epix-Inc',
+ '165f' => 'Linux-Media-Labs-LLC',
+ '1661' => 'Worldspace-Corp.',
+ '1668' => 'Actiontec-Electronics-Inc',
+ '1677' => 'Bernecker-+-Rainer',
+ '1678' => 'NetEffect',
+ '1679' => 'Tokyo-Electron-Device-Ltd.',
+ '167b' => 'ZyDAS-Technology-Corp.',
+ '167e' => 'ONNTO-Corp.',
+ '1681' => 'Hercules',
+ '1682' => 'XFX-Pine-Group-Inc.',
+ '1688' => 'CastleNet-Technology-Inc.',
+ '168c' => 'Atheros',
+ '1695' => 'EPoX-Computer-Co.-Ltd.',
+ '169c' => 'Netcell-Corporation',
+ '16a5' => 'Tekram-Technology-Co.Ltd.',
+ '16ab' => 'Global-Sun-Technology-Inc',
+ '16ae' => 'SafeNet-Inc',
+ '16af' => 'SparkLAN-Communications-Inc.',
+ '16b4' => 'Aspex-Semiconductor-Ltd',
+ '16b8' => 'Sonnet-Technologies-Inc.',
+ '16be' => 'Creatix-Polymedia-GmbH',
+ '16c6' => 'Micrel-Kendin',
+ '16c8' => 'Octasic-Inc.',
+ '16c9' => 'EONIC-B.V.-The-Netherlands',
+ '16ca' => 'CENATEK-Inc',
+ '16cd' => 'Densitron-Technologies',
+ '16ce' => 'Roland-Corp.',
+ '16d5' => 'Acromag-Inc.',
+ '16da' => 'Advantech-Co.-Ltd.',
+ '16df' => 'PIKA-Technologies-Inc.',
+ '16e2' => 'Geotest-MTS',
+ '16e3' => 'European-Space-Agency',
+ '16e5' => 'Intellon-Corp.',
+ '16ec' => 'U.S.-Robotics',
+ '16ed' => 'Sycron-N.-V.',
+ '16f3' => 'Jetway-Information-Co.-Ltd.',
+ '16f4' => 'Vweb-Corp',
+ '16f6' => 'VideoTele.com-Inc.',
+ '1705' => 'Digital-First-Inc.',
+ '170b' => 'NetOctave',
+ '170c' => 'YottaYotta-Inc.',
+ '1719' => 'EZChip-Technologies',
+ '172a' => 'Accelerated-Encryption',
+ '1734' => 'Fujitsu-Technology-Solutions',
+ '1735' => 'Aten-International-Co.-Ltd.',
+ '1737' => 'Linksys',
+ '173b' => 'Altima-nee-Broadcom',
+ '1743' => 'Peppercon-AG',
+ '1745' => 'ViXS-Systems-Inc.',
+ '1749' => 'RLX-Technologies',
+ '174b' => 'PC-Partner-Limited',
+ '174d' => 'WellX-Telecom-SA',
+ '175c' => 'AudioScience-Inc',
+ '175e' => 'Sanera-Systems-Inc.',
+ '1760' => 'TEDIA-spol.-s-r.-o.',
+ '1771' => 'InnoVISION-Multimedia-Ltd.',
+ '177d' => 'Cavium-Networks',
+ '1789' => 'Ennyah-Technologies-Corp.',
+ '1797' => 'Techwell-Inc.',
+ '1799' => 'Belkin',
+ '179a' => 'id-Quantique',
+ '179c' => 'Data-Patterns',
+ '17a0' => 'Genesys-Logic-Inc',
+ '17aa' => 'Lenovo',
+ '17ab' => 'Phillips-Components',
+ '17b3' => 'Hawking-Technologies',
+ '17b4' => 'Indra-Networks-Inc.',
+ '17c0' => 'Wistron-Corp.',
+ '17c2' => 'Newisys-Inc.',
+ '17cb' => 'Airgo-Networks-Inc',
+ '17cc' => 'NetChip-Technology-Inc',
+ '17cf' => 'Z-Com-Inc.',
+ '17d3' => 'Areca-Technology-Corp.',
+ '17db' => 'Cray-Inc',
+ '17de' => 'KWorld-Computer-Co.-Ltd.',
+ '17e4' => 'Sectra-AB',
+ '17e6' => 'Entropic-Communications-Inc.',
+ '17ee' => 'Connect-Components-Ltd',
+ '17f2' => 'Albatron-Corp.',
+ '17f3' => 'RDC-Semiconductor-Inc.',
+ '17f7' => 'Topdek-Semiconductor-Inc.',
+ '17fe' => 'InProComm-Inc.',
+ '17ff' => 'Benq-Corporation',
+ '1803' => 'ProdaSafe-GmbH',
+ '1805' => 'Euresys-S.A.',
+ '1809' => 'Lumanate-Inc.',
+ '1813' => 'Ambient-Technologies-Inc',
+ '1814' => 'RaLink',
+ '1815' => 'Devolo-AG',
+ '1820' => 'InfiniCon-Systems-Inc.',
+ '1822' => 'Twinhan-Technology-Co.-Ltd',
+ '182d' => 'SiteCom-Europe-BV',
+ '182e' => 'Raza-Microelectronics-Inc.',
+ '1830' => 'Credence-Systems-Corporation',
+ '183b' => 'MikroM-GmbH',
+ '1849' => 'ASRock-Incorporation',
+ '184a' => 'Thales-Computers',
+ '1851' => 'Microtune-Inc.',
+ '1852' => 'Anritsu-Corp.',
+ '1854' => 'LG-Electronics-Inc.',
+ '185b' => 'Compro-Technology-Inc.',
+ '185f' => 'Wistron-NeWeb-Corp.',
+ '1864' => 'SilverBack',
+ '1867' => 'Topspin-Communications',
+ '186c' => 'Humusoft-s.r.o.',
+ '186f' => 'WiNRADiO-Communications',
+ '1876' => 'L-3-Communications',
+ '1885' => 'Avvida-Systems-Inc.',
+ '1888' => 'Varisys-Ltd',
+ '188a' => 'Ample-Communications-Inc',
+ '1890' => 'Egenera-Inc.',
+ '1894' => 'KNC-One',
+ '1897' => 'AMtek',
+ '18a1' => 'Astute-Networks-Inc.',
+ '18a2' => 'Stretch-Inc.',
+ '18a3' => 'AT-T',
+ '18ac' => 'DViCO-Corporation',
+ '18b8' => 'Ammasso',
+ '18bc' => 'Info-Tek-Corp.',
+ '18c8' => 'Cray-Inc Nee-Octigabay-System',
+ '18c9' => 'ARVOO-Engineering-BV',
+ '18d2' => 'Sitecom',
+ '18d8' => 'Dialogue-Technology-Corp.',
+ '18dd' => 'Artimi-Inc',
+ '18e6' => 'MPL-AG',
+ '18ec' => 'Cesnet-z.s.p.o.',
+ '18ee' => 'Chenming-Mold-Ind.-Corp.',
+ '18f1' => 'Spectrum-GmbH',
+ '18f4' => 'Napatech-A-S',
+ '18f6' => 'NextIO',
+ '18f7' => 'Commtech-Inc.',
+ '18fb' => 'Resilience-Corporation',
+ '1905' => 'Micronas-USA-Inc.',
+ '1912' => 'Renesas-Technology-Corp.',
+ '1919' => 'Soltek-Computer-Inc.',
+ '1923' => 'Sangoma-Technologies-Corp.',
+ '1924' => 'Solarflare-Communications',
+ '192e' => 'TransDimension',
+ '1931' => 'Option-N.V.',
+ '1932' => 'DiBcom',
+ '193c' => 'MAXIM-Integrated-Products',
+ '193f' => 'Comtech-AHA-Corp.',
+ '1942' => 'ClearSpeed-Technology-plc',
+ '1947' => 'C-guys-Inc.',
+ '1948' => 'Enterasys-Networks',
+ '194a' => 'DapTechnology-B.V.',
+ '1954' => 'Curtis-Inc.',
+ '1957' => 'Freescale-Semiconductor-Inc',
+ '1958' => 'Faster-Technology-LLC.',
+ '1959' => 'PA-Semi-Inc',
+ '1966' => 'Orad-Hi-Tec-Systems',
+ '1969' => 'Atheros',
+ '196a' => 'Sensory-Networks-Inc.',
+ '196d' => 'Club-3D-BV',
+ '1971' => 'AGEIA-Technologies-Inc.',
+ '1977' => 'Parsec',
+ '197b' => 'JMicron-Technology-Corp.',
+ '1989' => 'Montilio-Inc.',
+ '198a' => 'Nallatech-Ltd.',
+ '199a' => 'Pulse-LINK-Inc.',
+ '199d' => 'Xsigo-Systems',
+ '199f' => 'Auvitek',
+ '19a8' => 'DAQDATA-GmbH',
+ '19ac' => 'Kasten-Chase-Applied-Research',
+ '19ae' => 'Progeny-Systems-Corporation',
+ '19c1' => 'Exegy-Inc.',
+ '19d4' => 'Quixant-Limited',
+ '19de' => 'Pico-Computing',
+ '19e2' => 'Vector-Informatik-GmbH',
+ '19e3' => 'DDRdrive-LLC',
+ '19ee' => 'Netronome-Systems-Inc.',
+ '1a03' => 'ASPEED-Technology-Inc.',
+ '1a07' => 'Kvaser-AB',
+ '1a08' => 'Sierra-semiconductor',
+ '1a0e' => 'DekTec-Digital-Video-B.V.',
+ '1a17' => 'Force10-Networks-Inc.',
+ '1a1d' => 'GFaI-e.V.',
+ '1a1e' => '3Leaf-Systems-Inc.',
+ '1a22' => 'Ambric-Inc.',
+ '1a29' => 'Fortinet-Inc.',
+ '1a2b' => 'Ascom-AG',
+ '1a3b' => 'AzureWave',
+ '1a51' => 'Hectronic-AB',
+ '1a56' => 'Bigfoot-Networks-Inc.',
+ '1a57' => 'Highly-Reliable-Systems',
+ '1a58' => 'Razer-USA-Ltd.',
+ '1a5d' => 'Celoxica',
+ '1a5e' => 'Aprius-Inc.',
+ '1a5f' => 'System-TALKS-Inc.',
+ '1a68' => 'VirtenSys-Limited',
+ '1a71' => 'XenSource-Inc.',
+ '1a73' => 'Violin-Memory-Inc',
+ '1a76' => 'Wavesat',
+ '1a77' => 'Lightfleet-Corporation',
+ '1a78' => 'Virident-Systems-Inc.',
+ '1a84' => 'Commex-Technologies',
+ '1a88' => 'MEN-Mikro-Elektronik',
+ '1a8c' => 'Verigy-Pte.-Ltd.',
+ '1a8e' => 'DRS-Technologies',
+ '1aa8' => 'Ciprico-Inc.',
+ '1aae' => 'Global-Velocity-Inc.',
+ '1ab6' => 'CalDigit-Inc.',
+ '1ab9' => 'Espia-Srl',
+ '1ad7' => 'Spectracom-Corporation',
+ '1ade' => 'Spin-Master-Ltd.',
+ '1ae0' => 'Google-Inc.',
+ '1ae8' => 'Silicon-Software-GmbH',
+ '1aec' => 'Wolfson-Microelectronics',
+ '1aed' => 'Fusion-io',
+ '1aee' => 'Caustic-Graphics-Inc.',
+ '1af5' => 'Netezza-Corp.',
+ '1afa' => 'J---W-Electronics-Co.-Ltd.',
+ '1b03' => 'Magnum-Semiconductor-Inc',
+ '1b13' => 'Jaton-Corp',
+ '1b1a' => 'K-F-Computing-Research-Co.',
+ '1b36' => 'Red-Hat-Inc.',
+ '1b3a' => 'Westar-Display-Technologies',
+ '1b3e' => 'Teradata-Corp.',
+ '1b4b' => 'Marvell-Technology-Group-Ltd.',
+ '1b55' => 'NetUP-Inc.',
+ '1b73' => 'Fresco-Logic',
+ '1bad' => 'ReFLEX-CES',
+ '1bb3' => 'Bluecherry',
+ '1bf4' => 'VTI-Instruments-Corporation',
+ '1c1c' => 'Symphony',
+ '1d44' => 'DPT',
+ '1de1' => 'Tekram-Technology-Co.Ltd.',
+ '1fc9' => 'Tehuti-Networks-Ltd.',
+ '1fce' => 'Cognio-Inc.',
+ '1fd4' => 'SUNIX-Co.-Ltd.',
+ '2000' => 'Smart-Link-Ltd.',
+ '2001' => 'Temporal-Research-Ltd',
+ '2003' => 'Smart-Link-Ltd.',
+ '2004' => 'Smart-Link-Ltd.',
+ '2116' => 'ZyDAS-Technology-Corp.',
+ '21c3' => '21st-Century-Computer-Corp.',
+ '2348' => 'Racore',
+ '2646' => 'Kingston-Technologies',
+ '270b' => 'Xantel-Corporation',
+ '270f' => 'Chaintech-Computer-Co.-Ltd',
+ '2711' => 'AVID-Technology-Inc.',
+ '29b4' => '82q35-Express-MEI-Controller',
+ '2a15' => '3D-Vision---',
+ '3000' => 'Hansol-Electronics-Inc.',
+ '3142' => 'Post-Impression-Systems.',
+ '3388' => 'Hint-Corp',
+ '3411' => 'Quantum-Designs-H.K.-Inc',
+ '3442' => 'Bihl+Wiedemann-GmbH',
+ '3475' => 'Arastra-Inc.',
+ '3513' => 'ARCOM-Control-Systems-Ltd',
+ '3842' => 'eVga.com.-Corp.',
+ '38ef' => '4Links',
+ '3d3d' => '3DLabs',
+ '4005' => 'Avance-Logic-Inc.',
+ '4033' => 'Addtron-Technology-Co-Inc.',
+ '4040' => 'NetXen-Incorporated',
+ '4143' => 'Digital-Equipment-Corp',
+ '4144' => 'Alpha-Data',
+ '4150' => 'ONA-Electroerosion',
+ '415a' => 'Auzentech-Inc.',
+ '416c' => 'Aladdin-Knowledge-Systems',
+ '434e' => 'CAST-Navigation-LLC',
+ '4444' => 'Internext-Compression-Inc',
+ '4468' => 'Bridgeport-machines',
+ '4594' => 'Cogetec-Informatique-Inc',
+ '45fb' => 'Baldor-Electric-Company',
+ '4680' => 'Umax-Computer-Corp',
+ '4916' => 'RedCreek-Communications-Inc',
+ '4943' => 'Growth-Networks',
+ '494f' => 'ACCES-I-O-Products-Inc.',
+ '4978' => 'Axil-Computer-Inc',
+ '4a14' => 'NetVin',
+ '4b10' => 'Buslogic-Inc.',
+ '4c48' => 'LUNG-HWA-Electronics',
+ '4c53' => 'SBS-Technologies',
+ '4ca1' => 'Seanix-Technology-Inc',
+ '4d51' => 'MediaQ-Inc.',
+ '4d54' => 'Microtechnica-Co-Ltd',
+ '4d56' => 'MATRIX-VISION-GmbH',
+ '4ddc' => 'ILC-Data-Device-Corp',
+ '5045' => 'University-of-Toronto',
+ '5046' => 'GemTek-Technology-Corporation',
+ '5053' => 'Voyetra-Technologies',
+ '50b2' => 'TerraTec-Electronic-GmbH',
+ '5136' => 'S-S-Technologies',
+ '5143' => 'Qualcomm-Inc',
+ '5145' => 'Ensoniq-Old',
+ '5168' => 'Animation-Technologies-Inc.',
+ '5301' => 'Alliance-Semiconductor-Corp.',
+ '5333' => 'S3-Inc.',
+ '5431' => 'AuzenTech-Inc.',
+ '544c' => 'Teralogic-Inc',
+ '5455' => 'Technische-University-Berlin',
+ '5456' => 'GoTView',
+ '5519' => 'Cnet-Technologies-Inc.',
+ '5544' => 'Dunord-Technologies',
+ '5555' => 'Genroco-Inc',
+ '5646' => 'Vector-Fabrics-BV',
+ '5654' => 'VoiceTronix-Pty-Ltd',
+ '5700' => 'Netpower',
+ '584d' => 'AuzenTech-Co.-Ltd.',
+ '5851' => 'Exacq-Technologies',
+ '5853' => 'XenSource-Inc.',
+ '5ace' => 'Beholder-International-Ltd.',
+ '631c' => 'SmartInfra-Ltd',
+ '6356' => 'UltraStor',
+ '6409' => 'Logitec-Corp.',
+ '6549' => 'Teradici-Corp.',
+ '6900' => 'Red-Hat-Inc. nee-Qumranet',
+ '7063' => 'pcHDTV',
+ '7284' => 'HT-OMEGA-Inc.',
+ '7604' => 'O.N.-Electronic-Co-Ltd.',
+ '7bde' => 'MIDAC-Corporation',
+ '7fed' => 'PowerTV',
+ '8008' => 'Quancom-Electronic-GmbH',
+ '8086' => 'Intel',
+ '80ee' => 'InnoTek-Systemberatung-GmbH',
+ '8322' => 'Sodick-America-Corp.',
+ '8384' => 'SigmaTel',
+ '8401' => 'TRENDware-International-Inc.',
+ '8686' => 'ScaleMP',
+ '8800' => 'Trigem-Computer-Inc.',
+ '8866' => 'T-Square-Design-Inc.',
+ '8888' => 'Silicon-Magic',
+ '8912' => 'TRX',
+ '8e0e' => 'Computone-Corporation',
+ '8e2e' => 'KTI',
+ '9004' => 'Adaptec',
+ '9005' => 'Adaptec',
+ '907f' => 'Atronics',
+ '919a' => 'Gigapixel-Corp',
+ '9412' => 'Holtek',
+ '9699' => 'Omni-Media-Technology-Inc',
+ '9710' => 'NetMos-Technology',
+ '9902' => 'Stargen-Inc.',
+ 'a0a0' => 'AOPEN-Inc.',
+ 'a0f1' => 'UNISYS-Corporation',
+ 'a200' => 'NEC-Corporation',
+ 'a259' => 'Hewlett-Packard',
+ 'a25b' => 'Hewlett-Packard',
+ 'a304' => 'Sony',
+ 'a727' => '3Com-Corporation',
+ 'aa42' => 'Scitex-Digital-Video',
+ 'aa55' => 'Ncomputing-X300-PCI-Engine',
+ 'aaaa' => 'Adnaco-Technology-Inc.',
+ 'abcd' => 'Vadatech-Inc.',
+ 'ac3d' => 'Actuality-Systems',
+ 'ad00' => 'Alta-Data-Technologies-LLC',
+ 'b1b3' => 'Shiva-Europe-Limited',
+ 'bdbd' => 'Blackmagic-Design',
+ 'c001' => 'TSI-Telsys',
+ 'c0a9' => 'Micron-Crucial-Technology',
+ 'c0de' => 'Motorola',
+ 'c0fe' => 'Motion-Engineering-Inc.',
+ 'ca50' => 'Varian-Australia-Pty-Ltd',
+ 'cace' => 'CACE-Technologies-Inc.',
+ 'cafe' => 'Chrysalis-ITS',
+ 'cccc' => 'Catapult-Communications',
+ 'cddd' => 'Tyzx-Inc.',
+ 'ceba' => 'KEBA-AG',
+ 'd161' => 'Digium-Inc.',
+ 'd4d4' => 'Dy4-Systems-Inc',
+ 'd531' => 'I+ME-ACTIA-GmbH',
+ 'd84d' => 'Exsys',
+ 'db10' => 'Diablo-Technologies',
+ 'dead' => 'Indigita-Corporation',
+ 'deaf' => 'Middle-Digital-Inc.',
+ 'deda' => 'SoftHard-Technology-Ltd.',
+ 'e000' => 'Winbond',
+ 'e159' => 'Tiger-Jet-Network-Inc.',
+ 'e4bf' => 'EKF-Elektronik-GmbH',
+ 'e55e' => 'Essence-Technology-Inc.',
+ 'ea01' => 'Eagle-Technology',
+ 'eabb' => 'Aashima-Technology-B.V.',
+ 'ec80' => 'Belkin-Corporation',
+ 'edd8' => 'ARK-Logic-Inc',
+ 'f1d0' => 'AJA-Video',
+ 'f5f5' => 'F5-Networks-Inc.',
+ 'fa57' => 'Interagon-AS',
+ 'fab7' => 'Fabric7-Systems-Inc.',
+ 'febd' => 'Ultraview-Corp.',
+ 'feda' => 'Broadcom',
+ 'fede' => 'Fedetec-Inc.',
+ 'fffd' => 'XenSource-Inc.',
+ '1039' => 'Silicon-Integrated-Systems',
+ 'A259' => 'Hewlett-Packard',
+ );
+
+ public static $usbId = array(
+ '0001' => 'Frys-Electronics',
+ '0002' => 'Ingram',
+ '0003' => 'Club-Mac',
+ '0004' => 'Nebraska-Furniture-Mart',
+ '0053' => 'Planex',
+ '0079' => 'DragonRise-Inc.',
+ '0105' => 'Trust-International-B.V.',
+ '0145' => 'Unknown',
+ '0154' => 'LW154-Wireless-150N-Adapter',
+ '0218' => 'Hangzhou-Worlde',
+ '02ad' => 'HUMAX-Co.-Ltd.',
+ '0300' => 'MM300-eBook-Reader',
+ '0324' => 'OCZ-Technology-Inc',
+ '0325' => 'OCZ-Technology-Inc',
+ '0386' => 'LTS',
+ '03e8' => 'EndPoints-Inc.',
+ '03e9' => 'Thesys-Microelectronics',
+ '03ea' => 'Data-Broadcasting-Corp.',
+ '03eb' => 'Atmel-Corp.',
+ '03ec' => 'Iwatsu-America-Inc.',
+ '03ed' => 'Mitel-Corp.',
+ '03ee' => 'Mitsumi',
+ '03f0' => 'Hewlett-Packard',
+ '03f1' => 'Genoa-Technology',
+ '03f2' => 'Oak-Technology-Inc.',
+ '03f3' => 'Adaptec-Inc.',
+ '03f4' => 'Diebold-Inc.',
+ '03f5' => 'Siemens-Electromechanical',
+ '03f9' => 'KeyTronic-Corp.',
+ '03fb' => 'OPTi-Inc.',
+ '03fc' => 'Elitegroup-Computer-Systems',
+ '03fd' => 'Xilinx-Inc.',
+ '03fe' => 'Farallon-Comunications',
+ '0400' => 'National-Semiconductor-Corp.',
+ '0401' => 'National-Registry-Inc.',
+ '0402' => 'ALi-Corp.',
+ '0404' => 'NCR-Corp.',
+ '0405' => 'Synopsys-Inc.',
+ '0406' => 'Fujitsu-ICL-Computers',
+ '0408' => 'Quanta-Computer-Inc.',
+ '0409' => 'NEC-Corp.',
+ '040a' => 'Kodak-Co.',
+ '040b' => 'Weltrend-Semiconductor',
+ '040c' => 'VTech-Computers-Ltd',
+ '040d' => 'VIA-Technologies-Inc.',
+ '040e' => 'MCCI',
+ '040f' => 'Echo-Speech-Corp.',
+ '0411' => 'BUFFALO-INC---formerly-MelCo---Inc--',
+ '0412' => 'Award-Software-International',
+ '0413' => 'Leadtek-Research-Inc.',
+ '0414' => 'Giga-Byte-Technology-Co.-Ltd',
+ '0416' => 'Winbond-Electronics-Corp.',
+ '0417' => 'Symbios-Logic',
+ '0418' => 'AST-Research',
+ '041a' => 'Phoenix-Technologies-Ltd',
+ '041b' => 'dTV',
+ '041d' => 'S3-Inc.',
+ '041e' => 'Creative-Technology-Ltd',
+ '041f' => 'LCS-Telegraphics',
+ '0420' => 'Chips-and-Technologies',
+ '0421' => 'Nokia-Mobile-Phones',
+ '0422' => 'ADI-Systems-Inc.',
+ '0424' => 'Standard-Microsystems-Corp.',
+ '0429' => 'Cirrus-Logic',
+ '042a' => 'Ericsson-Austrian-AG',
+ '042b' => 'Intel',
+ '042d' => 'Micronics',
+ '042e' => 'Acer',
+ '042f' => 'Molex-Inc.',
+ '0430' => 'Sun-Microsystems-Inc.',
+ '0431' => 'Itac-Systems-Inc.',
+ '0432' => 'Unisys-Corp.',
+ '0433' => 'Alps-Electric-Inc.',
+ '0435' => 'Hyundai-Electronics-America',
+ '0436' => 'Taugagreining-HF',
+ '0437' => 'Framatome-Connectors-USA',
+ '0438' => 'Advanced-Micro-Devices-Inc.',
+ '0439' => 'Voice-Technologies-Group',
+ '043d' => 'Lexmark-International-Inc.',
+ '043e' => 'LG-Electronics-USA-Inc.',
+ '043f' => 'RadiSys-Corp.',
+ '0440' => 'Eizo-Nanao-Corp.',
+ '0441' => 'Winbond-Systems-Lab.',
+ '0442' => 'Ericsson-Inc.',
+ '0443' => 'Gateway-Inc.',
+ '0445' => 'Lucent-Technologies-Inc.',
+ '0446' => 'NMB-Technologies-Corp.',
+ '0447' => 'Momentum-Microsystems',
+ '044a' => 'Shamrock-Tech.-Co.-Ltd',
+ '044b' => 'WSI',
+ '044c' => 'CCL-ITRI',
+ '044d' => 'Siemens-Nixdorf-AG',
+ '044e' => 'Alps-Electric-Co.-Ltd',
+ '044f' => 'ThrustMaster-Inc.',
+ '0450' => 'DFI-Inc.',
+ '0451' => 'Texas-Instruments-Inc.',
+ '0453' => 'CMD-Technology',
+ '0454' => 'Vobis-Microcomputer-AG',
+ '0456' => 'Analog-Devices-Inc.',
+ '0457' => 'Silicon-Integrated-Systems',
+ '0459' => 'Adobe-Systems-Inc.',
+ '045a' => 'SONICblue-Inc.',
+ '045b' => 'Hitachi-Ltd',
+ '045d' => 'Nortel-Networks-Ltd',
+ '045e' => 'Microsoft',
+ '0460' => 'Ace-Cad-Enterprise-Co.-Ltd',
+ '0461' => 'Primax-Electronics-Ltd',
+ '0463' => 'MGE-UPS-Systems',
+ '0464' => 'AMP-Tycoelectronics-Corp.',
+ '0467' => 'AT-T-Paradyne',
+ '0468' => 'Wieson-Technologies-Co.-Ltd',
+ '046a' => 'Cherry-GmbH',
+ '046b' => 'American-Megatrends-Inc.',
+ '046d' => 'Logitech',
+ '046e' => 'Behavior-Tech.-Computer-Corp.',
+ '046f' => 'Crystal-Semiconductor',
+ '0471' => 'Philips-or-NXP',
+ '0472' => 'Chicony-Electronics-CO',
+ '0474' => 'Sanyo-Electric-Co.-Ltd',
+ '0476' => 'AESP',
+ '0477' => 'Seagate-Technology-Inc.',
+ '0478' => 'Connectix-Corp.',
+ '047a' => 'Semtech-Corp.',
+ '047b' => 'Silitek-Corp.',
+ '047c' => 'Dell-Computer-Corp.',
+ '047d' => 'Kensington',
+ '047e' => 'Agere-Systems-Inc.-Lucent',
+ '047f' => 'Plantronics-Inc.',
+ '0481' => 'Zenith-Data-Systems',
+ '0482' => 'Kyocera-Corp.',
+ '0483' => 'SGS-Thomson-Microelectronics',
+ '0484' => 'Specialix',
+ '0485' => 'Nokia-Monitors',
+ '0486' => 'ASUS-Computers-Inc.',
+ '0487' => 'Stewart-Connector',
+ '0488' => 'Cirque-Corp.',
+ '0489' => 'Foxconn---Hon-Hai',
+ '048a' => 'S-MOS-Systems-Inc.',
+ '048c' => 'Alps-Electric-Ireland-Ltd',
+ '048f' => 'Eicon-Tech.',
+ '0490' => 'United-Microelectronics-Corp.',
+ '0491' => 'Capetronic',
+ '0492' => 'Samsung-SemiConductor-Inc.',
+ '0493' => 'MAG-Technology-Co.-Ltd',
+ '0495' => 'ESS-Technology-Inc.',
+ '0496' => 'Micron-Electronics',
+ '0497' => 'Smile-International',
+ '0498' => 'Capetronic-Kaohsiung-Corp.',
+ '0499' => 'Yamaha-Corp.',
+ '049a' => 'Gandalf-Technologies-Ltd',
+ '049b' => 'Curtis-Computer-Products',
+ '049c' => 'Acer',
+ '049d' => 'VLSI-Technology',
+ '049f' => 'Compaq-Computer-Corp.',
+ '04a0' => 'Digital-Equipment-Corp.',
+ '04a1' => 'SystemSoft-Corp.',
+ '04a2' => 'FirePower-Systems',
+ '04a3' => 'Trident-Microsystems-Inc.',
+ '04a4' => 'Hitachi-Ltd',
+ '04a6' => 'Nokia-Display-Products',
+ '04a7' => 'Visioneer',
+ '04a8' => 'Multivideo-Labs-Inc.',
+ '04a9' => 'Canon-Inc.',
+ '04aa' => 'DaeWoo-Telecom-Ltd',
+ '04ab' => 'Chromatic-Research',
+ '04ac' => 'Micro-Audiometrics-Corp.',
+ '04ad' => 'Dooin-Electronics',
+ '04af' => 'Winnov-L.P.',
+ '04b0' => 'Nikon-Corp.',
+ '04b1' => 'Pan-International',
+ '04b3' => 'IBM-Corp.',
+ '04b4' => 'Cypress-Semiconductor-Corp.',
+ '04b5' => 'ROHM-LSI-Systems-USA-LLC',
+ '04b6' => 'Hint-Corp.',
+ '04b7' => 'Compal-Electronics-Inc.',
+ '04b8' => 'Seiko-Epson-Corp.',
+ '04b9' => 'Rainbow-Technologies-Inc.',
+ '04ba' => 'Toucan-Systems-Ltd',
+ '04bb' => 'I-O-Data-Device-Inc.',
+ '04be' => 'Telia-Research-AB',
+ '04bf' => 'TDK-Corp.',
+ '04c1' => 'U.S.-Robotics-3Com',
+ '04c3' => 'Maxi-Switch-Inc.',
+ '04c5' => 'Fujitsu-Ltd',
+ '04c7' => 'Micro-Macro-Technologies',
+ '04c8' => 'Konica-Corp.',
+ '04ca' => 'Lite-On-Technology-Corp.',
+ '04cb' => 'Fuji-Photo-Film-Co.-Ltd',
+ '04cc' => 'ST-Ericsson',
+ '04cd' => 'Tatung-Co.-Of-America',
+ '04ce' => 'ScanLogic-Corp.',
+ '04cf' => 'Myson-Century-Inc.',
+ '04d0' => 'Digi-International',
+ '04d1' => 'ITT-Canon',
+ '04d2' => 'Altec-Lansing-Technologies',
+ '04d3' => 'VidUS-Inc.',
+ '04d4' => 'LSI-Logic-Inc.',
+ '04d5' => 'Forte-Technologies-Inc.',
+ '04d6' => 'Mentor-Graphics',
+ '04d7' => 'Oki-Semiconductor',
+ '04d8' => 'Microchip-Technology-Inc.',
+ '04d9' => 'Holtek-Semiconductor-Inc.',
+ '04da' => 'Panasonic',
+ '04db' => 'Hypertec-Pty-Ltd',
+ '04dc' => 'Huan-Hsin-Holdings-Ltd',
+ '04dd' => 'SHARP',
+ '04de' => 'MindShare-Inc.',
+ '04df' => 'Interlink-Electronics',
+ '04e1' => 'Iiyama-North-America-Inc.',
+ '04e2' => 'Exar-Corp.',
+ '04e3' => 'Zilog-Inc.',
+ '04e4' => 'ACC-Microelectronics',
+ '04e5' => 'Promise-Technology',
+ '04e6' => 'SCM-Microsystems-Inc.',
+ '04e7' => 'Elo-TouchSystems',
+ '04e8' => 'Samsung-Electronics-Co.-Ltd',
+ '04e9' => 'PC-Tel-Inc.',
+ '04ea' => 'Brooktree-Corp.',
+ '04eb' => 'Northstar-Systems-Inc.',
+ '04ec' => 'Tokyo-Electron-Device-Ltd',
+ '04ed' => 'Annabooks',
+ '04f0' => 'Daewoo-Electronics-Co.-Ltd',
+ '04f1' => 'Victor-Company-of-Japan-Ltd',
+ '04f2' => 'Chicony-Electronics-CO',
+ '04f3' => 'Elan-Microelectronics-Corp.',
+ '04f4' => 'Harting-Elektronik-Inc.',
+ '04f5' => 'Fujitsu-ICL-Systems-Inc.',
+ '04f6' => 'Norand-Corp.',
+ '04f7' => 'Newnex-Technology-Corp.',
+ '04f8' => 'FuturePlus-Systems',
+ '04f9' => 'brother',
+ '04fa' => 'Dallas-Semiconductor',
+ '04fc' => 'Sunplus-Technology-Co.-Ltd',
+ '04fd' => 'Soliton-Systems-K.K.',
+ '04fe' => 'PFU-Ltd',
+ '04ff' => 'E-CMOS-Corp.',
+ '0500' => 'Siam-United-Hi-Tech',
+ '0501' => 'Fujikura-DDK-Ltd',
+ '0502' => 'Acer',
+ '0503' => 'Hitachi-America-Ltd',
+ '0504' => 'Hayes-Microcomputer-Products',
+ '0506' => '3Com-Corp.',
+ '0507' => 'Hosiden-Corp.',
+ '0508' => 'Clarion-Co.-Ltd',
+ '0509' => 'Aztech-Systems-Ltd',
+ '050a' => 'Cinch-Connectors',
+ '050b' => 'Cable-System-International',
+ '050c' => 'InnoMedia-Inc.',
+ '050d' => 'Belkin-Components',
+ '050e' => 'Neon-Technology-Inc.',
+ '050f' => 'KC-Technology-Inc.',
+ '0510' => 'Sejin-Electron-Inc.',
+ '0512' => 'Hualon-Microelectronics-Corp.',
+ '0513' => 'digital-X-Inc.',
+ '0514' => 'FCI-Electronics',
+ '0515' => 'ACTC',
+ '0516' => 'Longwell-Electronics',
+ '0517' => 'Butterfly-Communications',
+ '0518' => 'EzKEY-Corp.',
+ '0519' => 'Star-Micronics-Co.-Ltd',
+ '051a' => 'WYSE-Technology',
+ '051b' => 'Silicon-Graphics',
+ '051c' => 'Shuttle-Inc.',
+ '051d' => 'American-Power-Conversion',
+ '051e' => 'Scientific-Atlanta-Inc.',
+ '0521' => 'Airborn-Connectors',
+ '0522' => 'Advanced-Connectek-Inc.',
+ '0523' => 'ATEN-GmbH',
+ '0524' => 'Sola-Electronics',
+ '0525' => 'Netchip-Technology-Inc.',
+ '0526' => 'Temic-MHS-S.A.',
+ '0527' => 'ALTRA',
+ '0528' => 'ATI',
+ '0529' => 'Aladdin-Knowledge-Systems',
+ '052a' => 'Crescent-Heart-Software',
+ '052b' => 'Tekom-Technologies-Inc.',
+ '052d' => 'Avid-Electronics-Corp.',
+ '052e' => 'Standard-Microsystems-Corp.',
+ '052f' => 'Unicore-Software-Inc.',
+ '0530' => 'American-Microsystems-Inc.',
+ '0531' => 'Wacom-Technology-Corp.',
+ '0532' => 'Systech-Corp.',
+ '0533' => 'Alcatel-Mobile-Phones',
+ '0534' => 'Motorola-Inc.',
+ '0535' => 'LIH-TZU-Electric-Co.-Ltd',
+ '0537' => 'Inventec-Corp.',
+ '0539' => 'Shyh-Shiun-Terminals-Co.-Ltd',
+ '053a' => 'PrehKeyTec-GmbH',
+ '053b' => 'Global-Village-Communication',
+ '053d' => 'Silicon-Architect',
+ '053e' => 'Mobility-Electronics',
+ '053f' => 'Synopsys-Inc.',
+ '0540' => 'UniAccess-AB',
+ '0541' => 'Sirf-Technology-Inc.',
+ '0543' => 'ViewSonic-Corp.',
+ '0544' => 'Cristie-Electronics-Ltd',
+ '0545' => 'Xirlink-Inc.',
+ '0546' => 'Polaroid-Corp.',
+ '0547' => 'Anchor-Chips-Inc.',
+ '0548' => 'Tyan-Computer-Corp.',
+ '0549' => 'Pixera-Corp.',
+ '054b' => 'New-Media-Corp.',
+ '054c' => 'Sony-Corp.',
+ '054d' => 'Try-Corp.',
+ '054e' => 'Proside-Corp.',
+ '054f' => 'WYSE-Technology-Taiwan',
+ '0550' => 'Fuji-Xerox-Co.-Ltd',
+ '0551' => 'CompuTrend-Systems-Inc.',
+ '0552' => 'Philips-Monitors',
+ '0554' => 'Dictaphone-Corp.',
+ '0555' => 'ANAM-S-T-Co.-Ltd',
+ '0557' => 'ATEN-International-Co.-Ltd',
+ '0558' => 'Truevision-Inc.',
+ '0559' => 'Cadence-Design-Systems-Inc.',
+ '055a' => 'Kenwood-USA',
+ '055b' => 'KnowledgeTek-Inc.',
+ '055c' => 'Proton-Electronic-Ind.',
+ '055d' => 'Samsung-Electro-Mechanics-Co.',
+ '055e' => 'CTX-Opto-Electronics-Corp.',
+ '055f' => 'Mustek-Systems-Inc.',
+ '0560' => 'Interface-Corp.',
+ '0561' => 'Oasis-Design-Inc.',
+ '0562' => 'Telex-Communications-Inc.',
+ '0563' => 'Immersion-Corp.',
+ '0565' => 'Peracom-Networks-Inc.',
+ '0566' => 'Monterey-International-Corp.',
+ '0567' => 'Xyratex-International-Ltd',
+ '0568' => 'Quartz-Ingenierie',
+ '0569' => 'SegaSoft',
+ '056a' => 'Wacom-Co.-Ltd',
+ '056b' => 'Decicon-Inc.',
+ '056c' => 'eTEK-Labs',
+ '056d' => 'EIZO-Corp.',
+ '056e' => 'Elecom-Co.-Ltd',
+ '056f' => 'Korea-Data-Systems-Co.-Ltd',
+ '0570' => 'Epson-America',
+ '0571' => 'Interex-Inc.',
+ '0574' => 'City-University-of-Hong-Kong',
+ '0577' => 'ELSA',
+ '0578' => 'Intrinsix-Corp.',
+ '0579' => 'GVC-Corp.',
+ '057a' => 'Samsung-Electronics-America',
+ '057b' => 'Y-E-Data-Inc.',
+ '057c' => 'AVM-GmbH',
+ '057d' => 'Shark-Multimedia-Inc.',
+ '057e' => 'Nintendo-Co.-Ltd',
+ '057f' => 'QuickShot-Ltd',
+ '0580' => 'Denron-Inc.',
+ '0581' => 'Racal-Data-Group',
+ '0582' => 'Roland-Corp.',
+ '0583' => 'Padix-Co.-Ltd-Rockfire',
+ '0584' => 'RATOC-System-Inc.',
+ '0585' => 'FlashPoint-Technology-Inc.',
+ '0586' => 'ZyXEL-Communications-Corp.',
+ '0588' => 'Sapien-Design',
+ '0589' => 'Victron',
+ '058a' => 'Nohau-Corp.',
+ '058b' => 'Infineon-Technologies',
+ '058c' => 'In-Focus-Systems',
+ '058d' => 'Micrel-Semiconductor',
+ '058e' => 'Tripath-Technology-Inc.',
+ '058f' => 'Alcor-Micro-Corp.',
+ '0590' => 'Omron-Corp.',
+ '0591' => 'Questra-Consulting',
+ '0592' => 'Powerware-Corp.',
+ '0593' => 'Incite',
+ '0594' => 'Princeton-Graphic-Systems',
+ '0595' => 'Zoran-Microelectronics-Ltd',
+ '0596' => 'MicroTouch-Systems-Inc.',
+ '0597' => 'Trisignal-Communications',
+ '0598' => 'Niigata-Canotec-Co.-Inc.',
+ '059b' => 'Iomega-Corp.',
+ '059c' => 'A-Trend-Technology-Co.-Ltd',
+ '059d' => 'Advanced-Input-Devices',
+ '059e' => 'Intelligent-Instrumentation',
+ '059f' => 'LaCie-Ltd',
+ '05a0' => 'Vetronix-Corp.',
+ '05a1' => 'USC-Corp.',
+ '05a3' => 'ARC-International',
+ '05a4' => 'Ortek-Technology-Inc.',
+ '05a5' => 'Sampo-Technology-Corp.',
+ '05a6' => 'Cisco-Systems-Inc.',
+ '05a7' => 'Bose-Corp.',
+ '05a8' => 'Spacetec-IMC-Corp.',
+ '05a9' => 'OmniVision-Technologies-Inc.',
+ '05aa' => 'Utilux-South-China-Ltd',
+ '05ab' => 'In-System-Design',
+ '05ac' => 'Apple-Inc.',
+ '05ad' => 'Y.C.-Cable-U.S.A.-Inc.',
+ '05ae' => 'Synopsys-Inc.',
+ '05af' => 'Jing-Mold-Enterprise-Co.-Ltd',
+ '05b0' => 'Fountain-Technologies-Inc.',
+ '05b4' => 'LG-Semicon-Co.-Ltd',
+ '05b5' => 'Dialogic-Corp.',
+ '05b6' => 'Proxima-Corp.',
+ '05b7' => 'Medianix-Semiconductor-Inc.',
+ '05b8' => 'Agiler-Inc.',
+ '05b9' => 'Philips-Research-Laboratories',
+ '05ba' => 'DigitalPersona-Inc.',
+ '05bb' => 'Grey-Cell-Systems',
+ '05bc' => '3G-Green-Green-Globe-Co.-Ltd',
+ '05bd' => 'RAFI-GmbH---Co.-KG',
+ '05be' => 'Tyco-Electronics-Raychem',
+ '05bf' => 'S---S-Research',
+ '05c0' => 'Keil-Software',
+ '05c2' => 'Media-Phonics-Suisse-S.A.',
+ '05c5' => 'Digi-International-Inc.',
+ '05c6' => 'Qualcomm-Inc.',
+ '05c7' => 'Qtronix-Corp.',
+ '05c9' => 'Semtech-Corp.',
+ '05ca' => 'Ricoh-Co.-Ltd',
+ '05cc' => 'ELSA-AG',
+ '05cd' => 'Silicom-Ltd',
+ '05ce' => 'sci-worx-GmbH',
+ '05cf' => 'Sung-Forn-Co.-Ltd',
+ '05d0' => 'GE-Medical-Systems-Lunar',
+ '05d1' => 'Brainboxes-Ltd',
+ '05d2' => 'Wave-Systems-Corp.',
+ '05d3' => 'Tohoku-Ricoh-Co.-Ltd',
+ '05d6' => 'Philips-Semiconductors-CICT',
+ '05d7' => 'Thomas---Betts-Corp.',
+ '05d8' => 'Ultima-Electronics-Corp.',
+ '05d9' => 'Axiohm-Transaction-Solutions',
+ '05da' => 'Microtek-International-Inc.',
+ '05db' => 'Sun-Corp.-Suntac-',
+ '05dc' => 'Lexar-Media-Inc.',
+ '05dd' => 'Delta-Electronics-Inc.',
+ '05df' => 'Silicon-Vision-Inc.',
+ '05e0' => 'Symbol-Technologies',
+ '05e1' => 'Syntek-Semiconductor-Co.-Ltd',
+ '05e2' => 'ElecVision-Inc.',
+ '05e3' => 'Genesys-Logic-Inc.',
+ '05e4' => 'Red-Wing-Corp.',
+ '05e5' => 'Fuji-Electric-Co.-Ltd',
+ '05e6' => 'Keithley-Instruments',
+ '05e8' => 'ICC-Inc.',
+ '05e9' => 'Kawasaki-LSI',
+ '05eb' => 'FFC-Ltd',
+ '05ec' => 'COM21-Inc.',
+ '05ee' => 'Cytechinfo-Inc.',
+ '05ef' => 'AVB-Inc.-anko-',
+ '05f0' => 'Canopus-Co.-Ltd',
+ '05f1' => 'Compass-Communications',
+ '05f2' => 'Dexin-Corp.-Ltd',
+ '05f3' => 'PI-Engineering-Inc.',
+ '05f5' => 'Unixtar-Technology-Inc.',
+ '05f6' => 'AOC-International',
+ '05f7' => 'RFC-Distributions-PTE-Ltd',
+ '05f9' => 'PSC-Scanning-Inc.',
+ '05fc' => 'Harman-Multimedia',
+ '05fd' => 'InterAct-Inc.',
+ '05fe' => 'Chic-Technology-Corp.',
+ '05ff' => 'LeCroy-Corp.',
+ '0600' => 'Barco-Display-Systems',
+ '0601' => 'Jazz-Hipster-Corp.',
+ '0602' => 'Vista-Imaging-Inc.',
+ '0604' => 'Jean-Co.-Ltd',
+ '0605' => 'Anchor-C-C-Co.-Ltd',
+ '0607' => 'Bridge-Information-Co.-Ltd',
+ '0608' => 'Genrad-Ads',
+ '0609' => 'SMK-Manufacturing-Inc.',
+ '060b' => 'Solid-Year',
+ '060c' => 'EEH-Datalink-GmbH',
+ '060d' => 'Auctor-Corp.',
+ '060e' => 'Transmonde-Technologies-Inc.',
+ '0610' => 'Costar-Electronics-Inc.',
+ '0611' => 'Totoku-Electric-Co.-Ltd',
+ '0613' => 'TransAct-Technologies-Inc.',
+ '0614' => 'Bio-Rad-Laboratories',
+ '0618' => 'MacAlly',
+ '0619' => 'Seiko-Instruments-Inc.',
+ '061a' => 'Veridicom-International-Inc.',
+ '061b' => 'Promptus-Communications-Inc.',
+ '061c' => 'Act-Labs-Ltd',
+ '061d' => 'Quatech-Inc.',
+ '061e' => 'Nissei-Electric-Co.',
+ '0620' => 'Alaris-Inc.',
+ '0622' => 'Iotech-Inc.',
+ '0623' => 'Littelfuse-Inc.',
+ '0624' => 'Avocent-Corp.',
+ '0625' => 'TiMedia-Technology-Co.-Ltd',
+ '0627' => 'Adomax-Technology-Co.-Ltd',
+ '0628' => 'Tasking-Software-Inc.',
+ '0629' => 'Zida-Technologies-Ltd',
+ '062a' => 'Creative-Labs',
+ '0631' => 'JUJO-Electronics-Corp.',
+ '0633' => 'Cyrix-Corp.',
+ '0634' => 'Micron-Technology-Inc.',
+ '0635' => 'Methode-Electronics-Inc.',
+ '0636' => 'Sierra-Imaging-Inc.',
+ '0638' => 'Avision-Inc.',
+ '0639' => 'Chrontel-Inc.',
+ '063a' => 'Techwin-Corp.',
+ '063b' => 'Taugagreining-HF',
+ '063d' => 'Fong-Kai-Industrial-Co.-Ltd',
+ '063e' => 'RealMedia-Technology-Inc.',
+ '063f' => 'New-Technology-Cable-Ltd',
+ '0640' => 'Hitex-Development-Tools',
+ '0641' => 'Woods-Industries-Inc.',
+ '0642' => 'VIA-Medical-Corp.',
+ '0644' => 'TEAC-Corp.',
+ '0645' => 'Who--Vision-Systems-Inc.',
+ '0646' => 'UMAX',
+ '0647' => 'Acton-Research-Corp.',
+ '0648' => 'Inside-Out-Networks',
+ '0649' => 'Weli-Science-Co.-Ltd',
+ '064c' => 'Ji-Haw-Industrial-Co.-Ltd',
+ '064d' => 'TriTech-Microelectronics-Ltd',
+ '064e' => 'Suyin-Corp.',
+ '064f' => 'WIBU-Systems-AG',
+ '0650' => 'Dynapro-Systems',
+ '0651' => 'Likom-Technology-Sdn.-Bhd.',
+ '0652' => 'Stargate-Solutions-Inc.',
+ '0653' => 'CNF-Inc.',
+ '0654' => 'Granite-Microsystems-Inc.',
+ '0656' => 'Glory-Mark-Electronic-Ltd',
+ '0657' => 'Tekcon-Electronics-Corp.',
+ '0658' => 'Sigma-Designs-Inc.',
+ '0659' => 'Aethra',
+ '065a' => 'Optoelectronics-Co.-Ltd',
+ '065b' => 'Tracewell-Systems',
+ '065e' => 'Silicon-Graphics',
+ '0661' => 'Hamamatsu-Photonics-K.K.',
+ '0662' => 'Kansai-Electric-Co.-Ltd',
+ '0663' => 'Topmax-Electronic-Co.-Ltd',
+ '0664' => 'Groovy-Technology-Corp.',
+ '0665' => 'Cypress-Semiconductor',
+ '0667' => 'Aiwa-Co.-Ltd',
+ '0668' => 'WordWand',
+ '0669' => 'Oce-Printing-Systems-GmbH',
+ '066a' => 'Total-Technologies-Ltd',
+ '066b' => 'Linksys',
+ '066d' => 'Entrega-Inc.',
+ '066f' => 'SigmaTel-Inc.',
+ '0670' => 'Sequel-Imaging',
+ '0672' => 'Labtec-Inc.',
+ '0673' => 'HCL',
+ '0675' => 'DrayTek-Corp.',
+ '0676' => 'Teles-AG',
+ '0677' => 'Aiwa-Co.-Ltd',
+ '0678' => 'ACard-Technology-Corp.',
+ '067b' => 'Prolific-Technology-Inc.',
+ '067c' => 'Efficient-Networks-Inc.',
+ '067d' => 'Hohner-Corp.',
+ '067e' => 'Intermec-Technologies-Corp.',
+ '067f' => 'Virata-Ltd',
+ '0682' => 'Victor-Company-of-Japan-Ltd',
+ '0684' => 'Actiontec-Electronics-Inc.',
+ '0686' => 'Minolta-Co.-Ltd',
+ '068a' => 'Pertech-Inc.',
+ '068b' => 'Potrans-International-Inc.',
+ '068e' => 'CH-Products-Inc.',
+ '0690' => 'Golden-Bridge-Electech-Inc.',
+ '0693' => 'Hagiwara-Sys-Com-Co.-Ltd',
+ '0694' => 'Lego-Group',
+ '0698' => 'Chuntex-CTX',
+ '0699' => 'Tektronix-Inc.',
+ '069a' => 'Askey-Computer-Corp.',
+ '069b' => 'Thomson-Inc.',
+ '069d' => 'Hughes-Network-Systems-HNS',
+ '069e' => 'Marx',
+ '069f' => 'Allied-Data-Technologies-BV',
+ '06a2' => 'Topro-Technology-Inc.',
+ '06a3' => 'Saitek-PLC',
+ '06a5' => 'Divio',
+ '06a7' => 'MicroStore-Inc.',
+ '06a8' => 'Topaz-Systems-Inc.',
+ '06a9' => 'Westell',
+ '06aa' => 'Sysgration-Ltd',
+ '06b8' => 'Pixela-Corp.',
+ '06b9' => 'Alcatel-Telecom',
+ '06bb' => 'EDA-Inc.',
+ '06bc' => 'Oki-Data-Corp.',
+ '06bd' => 'AGFA-Gevaert-NV',
+ '06bf' => 'Leoco-Corp.',
+ '06c2' => 'Phidgets-Inc.-formerly-GLAB',
+ '06c4' => 'Bizlink-International-Corp.',
+ '06c5' => 'Hagenuk-GmbH',
+ '06c6' => 'Infowave-Software-Inc.',
+ '06c8' => 'SIIG-Inc.',
+ '06c9' => 'Taxan-Europe-Ltd',
+ '06ca' => 'Newer-Technology-Inc.',
+ '06cb' => 'Synaptics-Inc.',
+ '06cc' => 'Terayon-Communication-Systems',
+ '06cd' => 'Keyspan',
+ '06cf' => 'SpheronVR-AG',
+ '06d0' => 'LapLink-Inc.',
+ '06d1' => 'Daewoo-Electronics-Co.-Ltd',
+ '06d3' => 'Mitsubishi-Electric-Corp.',
+ '06d4' => 'Cisco-Systems',
+ '06d5' => 'TOSHIBA',
+ '06d6' => 'Aashima-Technology-B.V.',
+ '06da' => 'Phoenixtec-Power-Co.-Ltd',
+ '06db' => 'Paradyne',
+ '06de' => 'Heisei-Electronics-Co.-Ltd',
+ '06e0' => 'Multi-Tech-Systems-Inc.',
+ '06e1' => 'ADS-Technologies-Inc.',
+ '06e4' => 'Alcatel-Microelectronics',
+ '06e6' => 'Tiger-Jet-Network-Inc.',
+ '06ea' => 'Sirius-Technologies',
+ '06eb' => 'PC-Expert-Tech.-Co.-Ltd',
+ '06f0' => 'T.N.C-Industrial-Co.-Ltd',
+ '06f1' => 'Opcode-Systems-Inc.',
+ '06f2' => 'Emine-Technology-Co.',
+ '06f6' => 'Wintrend-Technology-Co.-Ltd',
+ '06f7' => 'Wailly-Technology-Ltd',
+ '06f8' => 'Guillemot-Corp.',
+ '06f9' => 'ASYST-electronic-d.o.o.',
+ '06fa' => 'HSD-S.r.L',
+ '06fd' => 'Boston-Acoustics',
+ '06fe' => 'Gallant-Computer-Inc.',
+ '0703' => 'Bvtech-Industry-Inc.',
+ '0705' => 'NKK-Corp.',
+ '0706' => 'Ariel-Corp.',
+ '0707' => 'Standard-Microsystems-Corp.',
+ '0708' => 'Putercom-Co.-Ltd',
+ '0709' => 'Silicon-Systems-Ltd-SSL',
+ '070d' => 'Comoss-Electronic-Co.-Ltd',
+ '0710' => 'Connect-Tech-Inc.',
+ '0713' => 'Interval-Research-Corp.',
+ '0714' => 'NewMotion-Inc.',
+ '0717' => 'ZNK-Corp.',
+ '0718' => 'Imation-Corp.',
+ '0719' => 'Tremon-Enterprises-Co.-Ltd',
+ '071b' => 'Domain-Technologies-Inc.',
+ '071d' => 'Eicon-Networks-Corp.',
+ '071e' => 'Ariston-Technologies',
+ '0729' => 'Amitm',
+ '072e' => 'Sunix-Co.-Ltd',
+ '072f' => 'Advanced-Card-Systems-Ltd',
+ '0731' => 'Susteen-Inc.',
+ '0733' => 'ViewQuest-Technologies-Inc.',
+ '0734' => 'Lasat-Communications-A-S',
+ '0735' => 'Asuscom-Network',
+ '0736' => 'Lorom-Industrial-Co.-Ltd',
+ '0738' => 'Mad-Catz-Inc.',
+ '073a' => 'Chaplet-Systems-Inc.',
+ '073b' => 'Suncom-Technologies',
+ '073d' => 'Eutron-S.p.a.',
+ '073e' => 'NEC-Inc.',
+ '0745' => 'Syntech-Information-Co.-Ltd',
+ '0746' => 'Onkyo-Corp.',
+ '0747' => 'Labway-Corp.',
+ '0749' => 'EVer-Electronics-Corp.',
+ '074b' => 'Polestar-Tech.-Corp.',
+ '074c' => 'C-C-C-Group-PLC',
+ '074d' => 'Micronas-GmbH',
+ '074e' => 'Digital-Stream-Corp.',
+ '0755' => 'Aureal-Semiconductor',
+ '0757' => 'Network-Technologies-Inc.',
+ '075b' => 'Sophisticated-Circuits-Inc.',
+ '0763' => 'Midiman',
+ '0764' => 'Cyber-Power-System-Inc.',
+ '0765' => 'X-Rite-Inc.',
+ '0766' => 'Jess-Link-Products-Co.-Ltd',
+ '0767' => 'Tokheim-Corp.',
+ '0768' => 'Camtel-Technology-Corp.',
+ '0769' => 'Surecom-Technology-Corp.',
+ '076b' => 'OmniKey-AG',
+ '076c' => 'Partner-Tech',
+ '076d' => 'Denso-Corp.',
+ '076e' => 'Kuan-Tech-Enterprise-Co.-Ltd',
+ '076f' => 'Jhen-Vei-Electronic-Co.-Ltd',
+ '0771' => 'Observator-Instruments-BV',
+ '0774' => 'AmTRAN-Technology-Co.-Ltd',
+ '0775' => 'Longshine-Electronics-Corp.',
+ '0776' => 'Inalways-Corp.',
+ '0777' => 'Comda-Enterprise-Corp.',
+ '0778' => 'Volex-Inc.',
+ '0779' => 'Fairchild-Semiconductor',
+ '077a' => 'Sankyo-Seiki-Mfg.-Co.-Ltd',
+ '077b' => 'Linksys',
+ '077c' => 'Forward-Electronics-Co.-Ltd',
+ '077d' => 'Griffin-Technology',
+ '077f' => 'Well-Excellent---Most-Corp.',
+ '0780' => 'Sagem-Monetel-GmbH',
+ '0781' => 'SanDisk-Corp.',
+ '0782' => 'Trackerball',
+ '0783' => 'C3PO',
+ '0784' => 'Vivitar-Inc.',
+ '0785' => 'NTT-ME',
+ '0789' => 'Logitec-Corp.',
+ '078b' => 'Happ-Controls-Inc.',
+ '078c' => 'GTCO-CalComp',
+ '078e' => 'Brincom-Inc.',
+ '0792' => 'Axis-Communications-AB',
+ '0793' => 'Wha-Yu-Industrial-Co.-Ltd',
+ '0794' => 'ABL-Electronics-Corp.',
+ '0795' => 'RealChip-Inc.',
+ '0796' => 'Certicom-Corp.',
+ '0797' => 'Grandtech-Semiconductor-Corp.',
+ '0798' => 'Optelec',
+ '0799' => 'Altera',
+ '079b' => 'Sagem',
+ '079d' => 'Alfadata-Computer-Corp.',
+ '07a1' => 'Digicom-S.p.A.',
+ '07a2' => 'National-Technical-Systems',
+ '07a3' => 'Onnto-Corp.',
+ '07a4' => 'Be-Inc.',
+ '07a6' => 'ADMtek-Inc.',
+ '07aa' => 'Corega-K.K.',
+ '07ab' => 'Freecom-Technologies',
+ '07af' => 'Microtech',
+ '07b0' => 'Trust-Technologies',
+ '07b1' => 'IMP-Inc.',
+ '07b2' => 'Motorola-BCS-Inc.',
+ '07b3' => 'Plustek-Inc.',
+ '07b4' => 'Olympus-Optical-Co.-Ltd',
+ '07b5' => 'Mega-World-International-Ltd',
+ '07b6' => 'Marubun-Corp.',
+ '07b7' => 'TIME-Interconnect-Ltd',
+ '07b8' => 'AboCom-Systems-Inc',
+ '07bc' => 'Canon',
+ '07bd' => 'Webgear-Inc.',
+ '07be' => 'Veridicom',
+ '07c1' => 'Keisokugiken',
+ '07c4' => 'Datafab-Systems-Inc.',
+ '07c5' => 'APG-Cash-Drawer',
+ '07c6' => 'ShareWave-Inc.',
+ '07c7' => 'Powertech-Industrial-Co.-Ltd',
+ '07c8' => 'B.U.G.-Inc.',
+ '07c9' => 'Allied-Telesyn-International',
+ '07ca' => 'AVerMedia-Technologies-Inc.',
+ '07cb' => 'Kingmax-Technology-Inc.',
+ '07cc' => 'Carry-Computer-Eng.-Co.-Ltd',
+ '07cd' => 'Elektor',
+ '07cf' => 'Casio-Computer-Co.-Ltd',
+ '07d0' => 'Dazzle',
+ '07d1' => 'D-Link',
+ '07d2' => 'Aptio-Products-Inc.',
+ '07d3' => 'Cyberdata-Corp.',
+ '07d5' => 'Radiant-Systems',
+ '07d7' => 'GCC-Technologies-Inc.',
+ '07da' => 'Arasan-Chip-Systems',
+ '07de' => 'Diamond-Multimedia',
+ '07df' => 'David-Electronics-Co.-Ltd',
+ '07e1' => 'Ambient-Technologies-Inc.',
+ '07e2' => 'Elmeg-GmbH---Co.-Ltd',
+ '07e3' => 'Planex-Communications-Inc.',
+ '07e4' => 'Movado-Enterprise-Co.-Ltd',
+ '07e5' => 'QPS-Inc.',
+ '07e6' => 'Allied-Cable-Corp.',
+ '07e7' => 'Mirvo-Toys-Inc.',
+ '07e8' => 'Labsystems',
+ '07ea' => 'Iwatsu-Electric-Co.-Ltd',
+ '07eb' => 'Double-H-Technology-Co.-Ltd',
+ '07ef' => 'STSN',
+ '07f6' => 'Circuit-Assembly-Corp.',
+ '07f7' => 'Century-Corp.',
+ '07f9' => 'Dotop-Technology-Inc.',
+ '07fa' => 'DrayTek-Corp.',
+ '07fd' => 'Mark-of-the-Unicorn',
+ '07ff' => 'Unknown',
+ '0801' => 'Mag-Tek',
+ '0802' => 'Mako-Technologies-LLC',
+ '0803' => 'Zoom-Telephonics-Inc.',
+ '0809' => 'Genicom-Technology-Inc.',
+ '080a' => 'Evermuch-Technology-Co.-Ltd',
+ '080b' => 'Cross-Match-Technologies',
+ '080c' => 'Datalogic-S.p.A.',
+ '080d' => 'Teco-Image-Systems-Co.-Ltd',
+ '0813' => 'Mattel-Inc.',
+ '0819' => 'eLicenser',
+ '081a' => 'MG-Logic',
+ '081b' => 'Indigita-Corp.',
+ '081c' => 'Mipsys',
+ '081e' => 'AlphaSmart-Inc.',
+ '0822' => 'Reudo-Corp.',
+ '0825' => 'GC-Protronics',
+ '0826' => 'Data-Transit',
+ '0827' => 'BroadLogic-Inc.',
+ '0828' => 'Sato-Corp.',
+ '082d' => 'Handspring',
+ '0830' => 'Palm-Inc.',
+ '0832' => 'Kouwell-Electronics-Corp.',
+ '0833' => 'Sourcenext-Corp.',
+ '0839' => 'Samsung-Techwin-Co.-Ltd',
+ '083a' => 'Accton-Technology-Corp.',
+ '083f' => 'Global-Village',
+ '0840' => 'Argosy-Research-Inc.',
+ '0841' => 'Rioport.com-Inc.',
+ '0844' => 'Welland-Industrial-Co.-Ltd',
+ '0846' => 'NetGear',
+ '084e' => 'KB-Gear',
+ '084f' => 'Empeg',
+ '0850' => 'Fast-Point-Technologies-Inc.',
+ '0852' => 'CSEM',
+ '0853' => 'Topre-Corporation',
+ '0854' => 'ActiveWire-Inc.',
+ '0856' => 'B-B-Electronics',
+ '0858' => 'Hitachi-Maxell-Ltd',
+ '085a' => 'Xircom',
+ '085c' => 'ColorVision-Inc.',
+ '0862' => 'Teletrol-Systems-Inc.',
+ '0863' => 'Filanet-Corp.',
+ '0864' => 'NetGear',
+ '0867' => 'Data-Translation-Inc.',
+ '086e' => 'System-TALKS-Inc.',
+ '086f' => 'MEC-IMEX-Inc.',
+ '0870' => 'Metricom',
+ '0871' => 'SanDisk-Inc.',
+ '0873' => 'Xpeed-Inc.',
+ '0874' => 'A-Tec-Subsystem-Inc.',
+ '0879' => 'Comtrol-Corp.',
+ '087c' => 'Adesso-Kbtek-America-Inc.',
+ '087d' => 'Jaton-Corp.',
+ '087f' => 'Virtual-IP-Group-Inc.',
+ '0880' => 'APT-Technologies-Inc.',
+ '0885' => 'Boca-Research-Inc.',
+ '0886' => 'XAC-Automation-Corp.',
+ '0887' => 'Hannstar-Electronics-Corp.',
+ '088b' => 'MassWorks-Inc.',
+ '088c' => 'Swecoin-AB',
+ '088e' => 'iLok',
+ '0892' => 'DioGraphy-Inc.',
+ '0897' => 'Lauterbach',
+ '089d' => 'Icron-Technologies-Corp.',
+ '089e' => 'NST-Co.-Ltd',
+ '089f' => 'Primex-Aerospace-Co.',
+ '08a5' => 'e9-Inc.',
+ '08a8' => 'Andrea-Electronics',
+ '08ae' => 'Macally-Mace-Group-Inc.',
+ '08b4' => 'Sorenson-Vision-Inc.',
+ '08b7' => 'NATSU',
+ '08b9' => 'RadioShack-Corp.-Tandy',
+ '08bb' => 'Texas-Instruments-Japan',
+ '08bd' => 'Citizen-Watch-Co.-Ltd',
+ '08c3' => 'Precise-Biometrics',
+ '08c4' => 'Proxim-Inc.',
+ '08c7' => 'Key-Nice-Enterprise-Co.-Ltd',
+ '08c8' => '2Wire-Inc.',
+ '08ca' => 'Aiptek-International-Inc.',
+ '08cd' => 'Jue-Hsun-Ind.-Corp.',
+ '08ce' => 'Long-Well-Electronics-Corp.',
+ '08d1' => 'smartBridges-Inc.',
+ '08d3' => 'Virtual-Ink',
+ '08d4' => 'Fujitsu-Siemens-Computers',
+ '08d8' => 'IXXAT-Automation-GmbH',
+ '08d9' => 'Increment-P-Corp.',
+ '08dd' => 'Billionton-Systems-Inc.',
+ '08de' => '---',
+ '08df' => 'Spyrus-Inc.',
+ '08e3' => 'Olitec-Inc.',
+ '08e4' => 'Pioneer-Corp.',
+ '08e5' => 'Litronic',
+ '08e6' => 'Gemplus',
+ '08e8' => 'Integrated-Memory-Logic',
+ '08e9' => 'Extended-Systems-Inc.',
+ '08ec' => 'M-Systems-Flash-Disk-Pioneers',
+ '08ed' => 'MediaTek-Inc.',
+ '08ee' => 'CCSI-Hesso',
+ '08f0' => 'Corex-Technologies',
+ '08f1' => 'CTI-Electronics-Corp.',
+ '08f2' => 'Gotop-Information-Inc.',
+ '08f5' => 'SysTec-Co.-Ltd',
+ '08f6' => 'Logic-3-International-Ltd',
+ '08f7' => 'Vernier',
+ '08f9' => 'Wipro-Technologies',
+ '08fa' => 'Caere',
+ '08fb' => 'Socket-Communications',
+ '08fd' => 'Digianswer-A-S',
+ '08ff' => 'AuthenTec-Inc.',
+ '0900' => 'Pinnacle-Systems-Inc.',
+ '0901' => 'VST-Technologies',
+ '0906' => 'Faraday-Technology-Corp.',
+ '0909' => 'Audio-Technica-Corp.',
+ '090b' => 'Neurosmith',
+ '090c' => 'Feiya-Technology-Corp',
+ '090e' => 'Shining-Technology-Inc.',
+ '090f' => 'Fujitsu-Devices-Inc.',
+ '0910' => 'Alation-Systems-Inc.',
+ '0911' => 'Philips-Speech-Processing',
+ '0912' => 'Voquette-Inc.',
+ '0915' => 'GlobeSpan-Inc.',
+ '0917' => 'SmartDisk-Corp.',
+ '0919' => 'Tiger-Electronics',
+ '091e' => 'Garmin-International',
+ '0920' => 'Echelon-Co.',
+ '0921' => 'GoHubs-Inc.',
+ '0922' => 'Dymo-CoStar-Corp.',
+ '0923' => 'IC-Media-Corp.',
+ '0924' => 'XEROX',
+ '0925' => 'Lakeview-Research',
+ '0927' => 'Summus-Ltd',
+ '0928' => 'Oxford-Semiconductor-Ltd',
+ '0929' => 'American-Biometric-Co.',
+ '092b' => 'Sena-Technologies-Inc.',
+ '0930' => 'Toshiba-Corp.',
+ '0931' => 'Harmonic-Data-Systems-Ltd',
+ '0932' => 'Crescentec-Corp.',
+ '0933' => 'Quantum-Corp.',
+ '0934' => 'Netcom-Systems',
+ '0936' => 'NuTesla',
+ '0939' => 'Lumberg-Inc.',
+ '093a' => 'Pixart-Imaging-Inc.',
+ '093b' => 'Plextor-Corp.',
+ '093d' => 'InnoSync-Inc.',
+ '093e' => 'J.S.T.-Mfg.-Co.-Ltd',
+ '0941' => 'Photobit-Corp.',
+ '0942' => 'i2Go.com-LLC',
+ '0944' => 'KORG-Inc.',
+ '0945' => 'Pasco-Scientific',
+ '0948' => 'Kronauer-music-in-digital',
+ '094b' => 'Linkup-Systems-Corp.',
+ '094d' => 'Cable-Television-Laboratories',
+ '094f' => 'Yano',
+ '0951' => 'Kingston-Technology',
+ '0954' => 'RPM-Systems-Corp.',
+ '0955' => 'NVIDIA',
+ '0956' => 'BSquare-Corp.',
+ '0957' => 'Agilent-Technologies-Inc.',
+ '0958' => 'CompuLink-Research-Inc.',
+ '0959' => 'Cologne-Chip-AG',
+ '095a' => 'Portsmith',
+ '095b' => 'Medialogic-Corp.',
+ '095c' => 'K-Tec-Electronics',
+ '095d' => 'Polycom-Inc.',
+ '0967' => 'Acer',
+ '0968' => 'Catalyst-Enterprises-Inc.',
+ '096e' => 'Feitian-Technologies-Inc.',
+ '0971' => 'Gretag-Macbeth-AG',
+ '0973' => 'Schlumberger',
+ '0975' => 'OLE-Communications-Inc.',
+ '0976' => 'Adirondack-Wire---Cable',
+ '0977' => 'Lightsurf-Technologies',
+ '0978' => 'Beckhoff-GmbH',
+ '0979' => 'Jeilin-Technology-Corp.-Ltd',
+ '097a' => 'Minds-At-Work-LLC',
+ '097b' => 'Knudsen-Engineering-Ltd',
+ '097c' => 'Marunix-Co.-Ltd',
+ '097d' => 'Rosun-Technologies-Inc.',
+ '097f' => 'Barun-Electronics-Co.-Ltd',
+ '0981' => 'Oak-Technology-Ltd',
+ '0984' => 'Apricorn',
+ '098c' => 'Vitana-Corp.',
+ '098d' => 'INDesign',
+ '098f' => 'Kenwood-TMI-Corp.',
+ '0993' => 'Gemstar-eBook-Group-Ltd',
+ '099a' => 'Zippy-Technology-Corp.',
+ '09a3' => 'PairGain-Technologies',
+ '09a4' => 'Contech-Research-Inc.',
+ '09a5' => 'VCON-Telecommunications',
+ '09a6' => 'Poinchips',
+ '09aa' => 'Intersil-Corp.',
+ '09ab' => 'Japan-Cash-Machine-Co.-Ltd.',
+ '09ae' => 'Tripp-Lite',
+ '09b3' => 'Altius-Solutions-Inc.',
+ '09b4' => 'MDS-Telephone-Systems',
+ '09b5' => 'Celltrix-Technology-Co.-Ltd',
+ '09bc' => 'Grundig',
+ '09be' => 'MySmart.Com',
+ '09bf' => 'Auerswald-GmbH---Co.-KG',
+ '09c1' => 'Arris-Interactive-LLC',
+ '09c2' => 'Nisca-Corp.',
+ '09c3' => 'ActivCard-Inc.',
+ '09c4' => 'ACTiSYS-Corp.',
+ '09c5' => 'Memory-Corp.',
+ '09cc' => 'Workbit-Corp.',
+ '09ce' => 'City-Electronics-Ltd',
+ '09d1' => 'NeoMagic-Inc.',
+ '09d2' => 'Vreelin-Engineering-Inc.',
+ '09d3' => 'Com-One',
+ '09d7' => 'Novatel-Wireless',
+ '09d9' => 'KRF-Tech-Ltd',
+ '09da' => 'A4-Tech-Co.-Ltd',
+ '09db' => 'Measurement-Computing-Corp.',
+ '09dc' => 'Aimex-Corp.',
+ '09dd' => 'Fellowes-Inc.',
+ '09df' => 'Addonics-Technologies-Corp.',
+ '09e1' => 'Intellon-Corp.',
+ '09e5' => 'Jo-Dan-International-Inc.',
+ '09e6' => 'Silutia-Inc.',
+ '09e7' => 'Real-3D-Inc.',
+ '09e8' => 'AKAI-Professional-M.I.-Corp.',
+ '09e9' => 'Chen-Source-Inc.',
+ '09eb' => 'IM-Networks-Inc.',
+ '09ef' => 'Xitel',
+ '09f3' => 'GoFlight-Inc.',
+ '09f5' => 'AresCom',
+ '09f6' => 'RocketChips-Inc.',
+ '09f7' => 'Edu-Science-H.K.-Ltd',
+ '09f8' => 'SoftConnex-Technologies-Inc.',
+ '09f9' => 'Bay-Associates',
+ '09fa' => 'Mtek-Vision',
+ '09fb' => 'Altera',
+ '09ff' => 'Gain-Technology-Corp.',
+ '0a00' => 'Liquid-Audio',
+ '0a01' => 'ViA-Inc.',
+ '0a07' => 'Ontrak-Control-Systems-Inc.',
+ '0a0b' => 'Cybex-Computer-Products-Co.',
+ '0a11' => 'Xentec-Inc.',
+ '0a12' => 'Cambridge-Silicon-Radio-Ltd',
+ '0a13' => 'Telebyte-Inc.',
+ '0a14' => 'Spacelabs-Medical-Inc.',
+ '0a15' => 'Scalar-Corp.',
+ '0a16' => 'Trek-Technology-S-PTE-Ltd',
+ '0a17' => 'Pentax-Corp.',
+ '0a19' => 'Hua-Geng-Technologies-Inc.',
+ '0a27' => 'Datacard-Group',
+ '0a2c' => 'AK-Modul-Bus-Computer-GmbH',
+ '0a34' => 'TG3-Electronics-Inc.',
+ '0a35' => 'Radikal-Technologies',
+ '0a39' => 'Gilat-Satellite-Networks-Ltd',
+ '0a3a' => 'PentaMedia-Co.-Ltd',
+ '0a3c' => 'NTT-DoCoMo-Inc.',
+ '0a3d' => 'Varo-Vision',
+ '0a3f' => 'Swissonic-AG',
+ '0a43' => 'Boca-Systems-Inc.',
+ '0a46' => 'Davicom-Semiconductor-Inc.',
+ '0a47' => 'Hirose-Electric',
+ '0a48' => 'I-O-Interconnect',
+ '0a4b' => 'Fujitsu-Media-Devices-Ltd',
+ '0a4c' => 'Computex-Co.-Ltd',
+ '0a4d' => 'Evolution-Electronics-Ltd',
+ '0a4f' => 'Litton-Systems-Inc.',
+ '0a50' => 'Mimaki-Engineering-Co.-Ltd',
+ '0a51' => 'Sony-Electronics-Inc.',
+ '0a52' => 'Jebsee-Electronics-Co.-Ltd',
+ '0a53' => 'Portable-Peripheral-Co.-Ltd',
+ '0a5a' => 'Electronics-For-Imaging-Inc.',
+ '0a5b' => 'EAsics-NV',
+ '0a5c' => 'Broadcom',
+ '0a5d' => 'Diatrend-Corp.',
+ '0a5f' => 'Zebra',
+ '0a62' => 'MPMan',
+ '0a66' => 'ClearCube-Technology',
+ '0a67' => 'Medeli-Electronics-Co.-Ltd',
+ '0a68' => 'Comaide-Corp.',
+ '0a69' => 'Chroma-ate-Inc.',
+ '0a6b' => 'Green-House-Co.-Ltd',
+ '0a6d' => 'UPS-Manufacturing',
+ '0a6e' => 'Benwin',
+ '0a6f' => 'Core-Technology-Inc.',
+ '0a70' => 'International-Game-Technology',
+ '0a72' => 'Sanwa-Denshi',
+ '0a7d' => 'NSTL-Inc.',
+ '0a7e' => 'Octagon-Systems-Corp.',
+ '0a80' => 'Rexon-Technology-Corp.-Ltd',
+ '0a81' => 'Chesen-Electronics-Corp.',
+ '0a82' => 'Syscan',
+ '0a83' => 'NextComm-Inc.',
+ '0a84' => 'Maui-Innovative-Peripherals',
+ '0a85' => 'Idexx-Labs',
+ '0a86' => 'NITGen-Co.-Ltd',
+ '0a8d' => 'Picturetel',
+ '0a90' => 'Candy-Technology-Co.-Ltd',
+ '0a91' => 'Globlink-Technology-Inc.',
+ '0a92' => 'EGO-SYStems-Inc.',
+ '0a93' => 'C-Technologies-AB',
+ '0a94' => 'Intersense',
+ '0aa3' => 'Lava-Computer-Mfg.-Inc.',
+ '0aa4' => 'Develco-Elektronik',
+ '0aa5' => 'First-International-Digital',
+ '0aa6' => 'Perception-Digital-Ltd',
+ '0aa8' => 'TriGem-Computer-Inc.',
+ '0aa9' => 'Baromtec-Co.',
+ '0aaa' => 'Japan-CBM-Corp.',
+ '0aab' => 'Vision-Shape-Europe-SA',
+ '0aac' => 'iCompression-Inc.',
+ '0aad' => 'Rohde---Schwarz-GmbH---Co.-KG',
+ '0aae' => 'NEC-infrontia-Corp.-Nitsuko',
+ '0aaf' => 'Digitalway-Co.-Ltd',
+ '0ab1' => 'FEIG-ELECTRONIC-GmbH',
+ '0aba' => 'Ellisys',
+ '0abe' => 'Stereo-Link',
+ '0abf' => 'Diolan',
+ '0ac4' => 'Leco-Corp.',
+ '0ac5' => 'I---C-Corp.',
+ '0ac6' => 'Singing-Electrons-Inc.',
+ '0ac7' => 'Panwest-Corp.',
+ '0ac8' => 'Z-Star-Microelectronics-Corp.',
+ '0ac9' => 'Micro-Solutions-Inc.',
+ '0aca' => 'OPEN-Networks-Ltd',
+ '0acc' => 'Koga-Electronics-Co.',
+ '0acd' => 'ID-Tech',
+ '0ace' => 'ZyDAS',
+ '0acf' => 'Intoto-Inc.',
+ '0ad0' => 'Intellix-Corp.',
+ '0ad1' => 'Remotec-Technology-Ltd',
+ '0ada' => 'Data-Encryption-Systems-Ltd.',
+ '0ae3' => 'Allion-Computer-Inc.',
+ '0ae4' => 'Taito-Corp.',
+ '0ae7' => 'Neodym-Systems-Inc.',
+ '0ae8' => 'System-Support-Co.-Ltd',
+ '0aea' => 'SciEssence-LLC',
+ '0aeb' => 'TTP-Communications-Ltd',
+ '0aec' => 'Neodio-Technologies-Corp.',
+ '0af0' => 'Option',
+ '0af6' => 'Silver-I-Co.-Ltd',
+ '0af7' => 'B2C2-Inc.',
+ '0af9' => 'Hama-Inc.',
+ '0afc' => 'Zaptronix-Ltd',
+ '0afd' => 'Tateno-Dennou-Inc.',
+ '0afe' => 'Cummins-Engine-Co.',
+ '0b00' => 'INGENICO',
+ '0b05' => 'ASUSTek-Computer-Inc.',
+ '0b0b' => 'Datamax-ONeil',
+ '0b0c' => 'Todos-AB',
+ '0b0d' => 'ProjectLab',
+ '0b0e' => 'GN-Netcom',
+ '0b0f' => 'AVID-Technology',
+ '0b10' => 'Pcally',
+ '0b11' => 'I-Tech-Solutions-Co.-Ltd',
+ '0b1f' => 'Insyde-Software-Corp.',
+ '0b20' => 'TransDimension-Inc.',
+ '0b21' => 'Yokogawa-Electric-Corp.',
+ '0b23' => 'Pan-Asia-Electronics-Co.-Ltd',
+ '0b24' => 'Link-Evolution-Corp.',
+ '0b27' => 'Ritek-Corp.',
+ '0b28' => 'Kenwood-Corp.',
+ '0b2c' => 'Village-Center-Inc.',
+ '0b30' => 'PNY-Technologies-Inc.',
+ '0b33' => 'Contour-Design-Inc.',
+ '0b37' => 'Hitachi-ULSI-Systems-Co.-Ltd',
+ '0b38' => 'Gear-Head',
+ '0b3a' => 'IPaxess',
+ '0b3b' => 'Tekram-Technology-Co.-Ltd',
+ '0b3c' => 'Olivetti-Techcenter',
+ '0b3e' => 'Kikusui-Electronics-Corp.',
+ '0b41' => 'Hal-Corp.',
+ '0b43' => 'Play.com-Inc.',
+ '0b47' => 'Sportbug.com-Inc.',
+ '0b48' => 'TechnoTrend-AG',
+ '0b49' => 'ASCII-Corp.',
+ '0b4b' => 'Pine-Corp.-Ltd.',
+ '0b4d' => 'Graphtec-America-Inc.',
+ '0b4e' => 'Musical-Electronics-Ltd',
+ '0b50' => 'Dumpries-Co.-Ltd',
+ '0b51' => 'Comfort-Keyboard-Co.',
+ '0b52' => 'Colorado-MicroDisplay-Inc.',
+ '0b54' => 'Sinbon-Electronics-Co.-Ltd',
+ '0b56' => 'TYI-Systems-Ltd',
+ '0b59' => 'Lake-Communications-Ltd',
+ '0b5a' => 'Corel-Corp.',
+ '0b5f' => 'Green-Electronics-Co.-Ltd',
+ '0b60' => 'Nsine-Ltd',
+ '0b61' => 'NEC-Viewtechnology-Ltd',
+ '0b62' => 'Orange-Micro-Inc.',
+ '0b63' => 'ADLink-Technology-Inc.',
+ '0b64' => 'Wonderful-Wire-Cable-Co.-Ltd',
+ '0b65' => 'Expert-Magnetics-Corp.',
+ '0b69' => 'CacheVision',
+ '0b6a' => 'Maxim-Integrated-Products',
+ '0b6f' => 'Nagano-Japan-Radio-Co.-Ltd',
+ '0b70' => 'PortalPlayer-Inc.',
+ '0b71' => 'SHIN-EI-Sangyo-Co.-Ltd',
+ '0b73' => 'Computone-Corp.',
+ '0b75' => 'Roland-DG-Corp.',
+ '0b79' => 'Sunrise-Telecom-Inc.',
+ '0b7a' => 'Zeevo-Inc.',
+ '0b7b' => 'Taiko-Denki-Co.-Ltd',
+ '0b7c' => 'ITRAN-Communications-Ltd',
+ '0b7d' => 'Astrodesign-Inc.',
+ '0b81' => 'id3-Semiconductors',
+ '0b84' => 'Rextron-Technology-Inc.',
+ '0b85' => 'Elkat-Electronics-Sdn.-Bhd.',
+ '0b86' => 'Exputer-Systems-Inc.',
+ '0b87' => 'Plus-One-I---T-Inc.',
+ '0b8c' => 'SMART-Technologies-Inc.',
+ '0b95' => 'ASIX-Electronics-Corp.',
+ '0b96' => 'Sewon-Telecom',
+ '0b97' => 'O2-Micro-Inc.',
+ '0b98' => 'Playmates-Toys-Inc.',
+ '0b99' => 'Audio-International-Inc.',
+ '0b9b' => 'Dipl.-Ing.-Stefan-Kunde',
+ '0b9d' => 'Softprotec-Co.',
+ '0b9f' => 'Chippo-Technologies',
+ '0baf' => 'U.S.-Robotics',
+ '0bb0' => 'Concord-Camera-Corp.',
+ '0bb1' => 'Infinilink-Corp.',
+ '0bb2' => 'Ambit-Microsystems-Corp.',
+ '0bb3' => 'Ofuji-Technology',
+ '0bb4' => 'High-Tech-Computer-Corp.',
+ '0bb5' => 'Murata-Manufacturing-Co.-Ltd',
+ '0bb6' => 'Network-Alchemy',
+ '0bb7' => 'Joytech-Computer-Co.-Ltd',
+ '0bb9' => 'Eiger-M-C-Co.-Ltd',
+ '0bba' => 'ZAccess-Systems',
+ '0bbb' => 'General-Meters-Corp.',
+ '0bbc' => 'Assistive-Technology-Inc.',
+ '0bbd' => 'System-Connection-Inc.',
+ '0bc0' => 'Knilink-Technology-Inc.',
+ '0bc1' => 'Fuw-Yng-Electronics-Co.-Ltd',
+ '0bc2' => 'Seagate-RSS-LLC',
+ '0bc3' => 'IPWireless-Inc.',
+ '0bc4' => 'Microcube-Corp.',
+ '0bc5' => 'JCN-Co.-Ltd',
+ '0bc6' => 'ExWAY-Inc.',
+ '0bc7' => 'X10-Wireless-Technology-Inc.',
+ '0bc8' => 'Telmax-Communications',
+ '0bc9' => 'ECI-Telecom-Ltd',
+ '0bca' => 'Startek-Engineering-Inc.',
+ '0bd7' => 'Andrew-Pargeter---Associates',
+ '0bda' => 'Realtek',
+ '0bdc' => 'Y-Media-Corp.',
+ '0bdd' => 'Orange-PCS',
+ '0be2' => 'Kanda-Tsushin-Kogyo-Co.-Ltd',
+ '0be3' => 'TOYO-Corp.',
+ '0be4' => 'Elka-International-Ltd',
+ '0be5' => 'DOME-imaging-systems-Inc.',
+ '0bed' => 'Silicon-Labs',
+ '0bee' => 'LTK-Industries-Ltd',
+ '0bef' => 'Way2Call-Communications',
+ '0bf0' => 'Pace-Micro-Technology-PLC',
+ '0bf1' => 'Intracom-S.A.',
+ '0bf2' => 'Konexx',
+ '0bf6' => 'Addonics-Technologies-Inc.',
+ '0bf7' => 'Sunny-Giken-Inc.',
+ '0bf8' => 'Fujitsu-Siemens-Computers',
+ '0c04' => 'MOTO-Development-Group-Inc.',
+ '0c05' => 'Appian-Graphics',
+ '0c06' => 'Hasbro-Games-Inc.',
+ '0c07' => 'Infinite-Data-Storage-Ltd',
+ '0c08' => 'Agate',
+ '0c09' => 'Comjet-Information-System',
+ '0c0a' => 'Highpoint-Technologies-Inc.',
+ '0c0b' => 'Dura-Micro-Inc.-Acomdata',
+ '0c12' => 'Zeroplus',
+ '0c15' => 'Iris-Graphics',
+ '0c16' => 'Gyration-Inc.',
+ '0c17' => 'Cyberboard-A-S',
+ '0c18' => 'SynerTek-Korea-Inc.',
+ '0c19' => 'cyberPIXIE-Inc.',
+ '0c1a' => 'Silicon-Motion-Inc.',
+ '0c1b' => 'MIPS-Technologies',
+ '0c22' => 'Tally-Printer-Corp.',
+ '0c23' => 'Lernout-+-Hauspie',
+ '0c24' => 'Taiyo-Yuden',
+ '0c25' => 'Sampo-Corp.',
+ '0c26' => 'Prolific-Technology-Inc.',
+ '0c27' => 'RFIDeas-Inc',
+ '0c2e' => 'Metro',
+ '0c35' => 'Eagletron-Inc.',
+ '0c36' => 'E-Ink-Corp.',
+ '0c37' => 'e.Digital',
+ '0c39' => 'IFR',
+ '0c3b' => 'Komatsu-Ltd',
+ '0c3c' => 'Radius-Co.-Ltd',
+ '0c3d' => 'Innocom-Inc.',
+ '0c3e' => 'Nextcell-Inc.',
+ '0c44' => 'Motorola-iDEN',
+ '0c45' => 'Microdia-Ltd',
+ '0c4b' => 'Reiner-SCT-Kartensysteme-GmbH',
+ '0c52' => 'Sealevel-Systems-Inc.',
+ '0c53' => 'ViewPLUS-Inc.',
+ '0c54' => 'Glory-Ltd',
+ '0c55' => 'Spectrum-Digital-Inc.',
+ '0c56' => 'Billion-Bright-Ltd',
+ '0c58' => 'Vidar-Systems-Corp.',
+ '0c5a' => 'TRS-International-Mfg.-Inc.',
+ '0c5e' => 'Xytronix-Research---Design',
+ '0c60' => 'Apogee-Electronics-Corp.',
+ '0c62' => 'Chant-Sincere-Co.-Ltd',
+ '0c63' => 'Toko-Inc.',
+ '0c65' => 'Eminence-Enterprise-Co.-Ltd',
+ '0c66' => 'Rexon-Electronics-Corp.',
+ '0c67' => 'Concept-Telecom-Ltd',
+ '0c70' => 'MCT-Elektronikladen',
+ '0c74' => 'Optronic-Laboratories-Inc.',
+ '0c76' => 'JMTek-LLC.',
+ '0c77' => 'Sipix-Group-Ltd',
+ '0c78' => 'Detto-Corp.',
+ '0c7a' => 'Wing-Span-Enterprise-Co.-Ltd',
+ '0c86' => 'NDA-Technologies-Inc.',
+ '0c88' => 'Kyocera-Wireless-Corp.',
+ '0c89' => 'Honda-Tsushin-Kogyo-Co.-Ltd',
+ '0c8a' => 'Pathway-Connectivity-Inc.',
+ '0c8b' => 'Wavefly-Corp.',
+ '0c8c' => 'Coactive-Networks',
+ '0c8d' => 'Tempo',
+ '0c8e' => 'Cesscom-Co.-Ltd',
+ '0c8f' => 'Applied-Microsystems',
+ '0c98' => 'Berkshire-Products-Inc.',
+ '0c99' => 'Innochips-Co.-Ltd',
+ '0c9a' => 'Hanwool-Robotics-Corp.',
+ '0c9b' => 'Jobin-Yvon-Inc.',
+ '0c9d' => 'SemTek',
+ '0ca2' => 'Zyfer',
+ '0ca3' => 'Sega-Corp.',
+ '0ca4' => 'ST-T-Instrument-Corp.',
+ '0ca5' => 'BAE-Systems-Canada-Inc.',
+ '0ca6' => 'Castles-Technology-Co.-Ltd',
+ '0cad' => 'Motorola-CGISS',
+ '0cae' => 'Ascom-Business-Systems-Ltd',
+ '0caf' => 'Buslink',
+ '0cb0' => 'Flying-Pig-Systems',
+ '0cb1' => 'Innovonics-Inc.',
+ '0cb6' => 'Celestix-Networks-Pte.-Ltd',
+ '0cb7' => 'Singatron-Enterprise-Co.-Ltd',
+ '0cb8' => 'Opticis-Co.-Ltd',
+ '0cbc' => 'Palmax-Technology-Co.-Ltd',
+ '0cbe' => 'Keryx-Technologies-Inc.',
+ '0cc0' => 'Kuon-Yi-Industrial-Corp.',
+ '0cc1' => 'Given-Imaging-Ltd',
+ '0cc2' => 'Timex-Corp.',
+ '0cc3' => 'Rimage-Corp.',
+ '0cc4' => 'emsys-GmbH',
+ '0cc5' => 'Sendo',
+ '0cc6' => 'Intermagic-Corp.',
+ '0cc7' => 'Kontron-Medical-AG',
+ '0cc8' => 'Technotools-Corp.',
+ '0cc9' => 'BroadMAX-Technologies-Inc.',
+ '0cca' => 'Amphenol',
+ '0ccb' => 'SKNet-Co.-Ltd',
+ '0ccc' => 'Domex-Technology-Corp.',
+ '0ccd' => 'TerraTec-Electronic-GmbH',
+ '0cd4' => 'Bang-Olufsen',
+ '0cd5' => 'LabJack-Corporation',
+ '0cd7' => 'NewChip-S.r.l.',
+ '0cd8' => 'JS-Digitech-Inc.',
+ '0cd9' => 'Hitachi-Shin-Din-Cable-Ltd',
+ '0cde' => 'Z-Com',
+ '0ce9' => 'pico-Technology',
+ '0cf1' => 'e-Conn-Electronic-Co.-Ltd',
+ '0cf2' => 'ENE-Technology-Inc.',
+ '0cf3' => 'Atheros',
+ '0cf4' => 'Fomtex-Corp.',
+ '0cf5' => 'Cellink-Co.-Ltd',
+ '0cf6' => 'Compucable-Corp.',
+ '0cf7' => 'ishoni-Networks',
+ '0cf8' => 'Clarisys-Inc.',
+ '0cfa' => 'Inviso-Inc.',
+ '0cfc' => 'Minolta-QMS-Inc.',
+ '0cff' => 'SAFA-MEDIA-Co.-Ltd.',
+ '0d08' => 'UTStarcom',
+ '0d0b' => 'Contemporary-Controls',
+ '0d0c' => 'Astron-Electronics-Co.-Ltd',
+ '0d0d' => 'MKNet-Corp.',
+ '0d0e' => 'Hybrid-Networks-Inc.',
+ '0d0f' => 'Feng-Shin-Cable-Co.-Ltd',
+ '0d10' => 'Elastic-Networks',
+ '0d11' => 'Maspro-Denkoh-Corp.',
+ '0d12' => 'Hansol-Electronics-Inc.',
+ '0d13' => 'BMF-Corp.',
+ '0d14' => 'Array-Comm-Inc.',
+ '0d15' => 'OnStream-b.v.',
+ '0d17' => 'NALTEC-Inc.',
+ '0d18' => 'coaXmedia',
+ '0d28' => 'NXP',
+ '0d33' => 'AirSpeak-Inc.',
+ '0d34' => 'Rearden-Steel-Technologies',
+ '0d35' => 'Dah-Kun-Co.-Ltd',
+ '0d3a' => 'Posiflex-Technologies-Inc.',
+ '0d3c' => 'Sri-Cable-Technology-Ltd',
+ '0d3d' => 'Tangtop-Technology-Co.-Ltd',
+ '0d3e' => 'Fitcom-inc.',
+ '0d3f' => 'MTS-Systems-Corp.',
+ '0d40' => 'Ascor-Inc.',
+ '0d42' => 'Full-Der-Co.-Ltd',
+ '0d46' => 'Kobil-Systems-GmbH',
+ '0d49' => 'Maxtor',
+ '0d4a' => 'NF-Corp.',
+ '0d4b' => 'Grape-Systems-Inc.',
+ '0d4c' => 'Tedas-AG',
+ '0d4d' => 'Coherent-Inc.',
+ '0d4e' => 'Agere-Systems-Netherland-BV',
+ '0d4f' => 'EADS-Airbus-France',
+ '0d50' => 'Cleware-GmbH',
+ '0d51' => 'Volex-Asia-Pte.-Ltd',
+ '0d53' => 'HMI-Co.-Ltd',
+ '0d54' => 'Holon-Corp.',
+ '0d55' => 'ASKA-Technologies-Inc.',
+ '0d56' => 'AVLAB-Technology-Inc.',
+ '0d57' => 'Solomon-Microtech-Ltd',
+ '0d5c' => 'SMC-Networks-Inc.',
+ '0d5e' => 'Myacom-Ltd',
+ '0d5f' => 'CSI-Inc.',
+ '0d60' => 'IVL-Technologies-Ltd',
+ '0d62' => 'Darfon-Electronics-Corp.',
+ '0d63' => 'Fritz-Gegauf-AG',
+ '0d64' => 'DXG-Technology-Corp.',
+ '0d65' => 'KMJP-Co.-Ltd',
+ '0d66' => 'TMT',
+ '0d67' => 'Advanet-Inc.',
+ '0d69' => 'NSI',
+ '0d6a' => 'Megapower-International-Corp.',
+ '0d6b' => 'And-Or-Logic',
+ '0d70' => 'Try-Computer-Co.-Ltd',
+ '0d71' => 'Hirakawa-Hewtech-Corp.',
+ '0d72' => 'Winmate-Communication-Inc.',
+ '0d73' => 'Hits-Communications-Inc.',
+ '0d76' => 'MFP-Korea-Inc.',
+ '0d77' => 'Power-Sentry-Newpoint',
+ '0d78' => 'Japan-Distributor-Corp.',
+ '0d7a' => 'MARX-Datentechnik-GmbH',
+ '0d7b' => 'Wellco-Technology-Co.-Ltd',
+ '0d7d' => 'Phison-Electronics-Corp.',
+ '0d7f' => 'Essential-Reality-LLC',
+ '0d81' => 'TechnoVision',
+ '0d83' => 'Think-Outside-Inc.',
+ '0d87' => 'Dolby-Laboratories-Inc.',
+ '0d89' => 'Oz-Software',
+ '0d8a' => 'King-Jim-Co.-Ltd',
+ '0d8b' => 'Ascom-Telecommunications-Ltd',
+ '0d8c' => 'C-Media-Electronics-Inc.',
+ '0d8e' => 'Global-Sun-Technology-Inc.',
+ '0d8f' => 'Pitney-Bowes',
+ '0d90' => 'Sure-Fire-Electrical-Corp.',
+ '0d96' => 'Skanhex-Technology-Inc.',
+ '0d98' => 'Mars-Semiconductor-Corp.',
+ '0d99' => 'Trazer-Technologies-Inc.',
+ '0d9a' => 'RTX-Telecom-AS',
+ '0d9b' => 'Tat-Shing-Electrical-Co.',
+ '0d9d' => 'Sanwa-Supply-Inc.',
+ '0d9e' => 'Avaya',
+ '0d9f' => 'Powercom-Co.-Ltd',
+ '0da0' => 'Danger-Research',
+ '0da4' => 'Polar-Electro-OY',
+ '0da7' => 'IOGear-Inc.',
+ '0da8' => 'softDSP-Co.-Ltd',
+ '0dab' => 'Cubig-Group',
+ '0dad' => 'Westover-Scientific',
+ '0db0' => 'Micro-Star-International',
+ '0db1' => 'Wen-Te-Electronics-Co.-Ltd',
+ '0db3' => 'Tekram-Technology-Co.-Ltd',
+ '0db7' => 'ELCON-Systemtechnik',
+ '0dbc' => 'A-D-Medical',
+ '0dbf' => 'Quik-Tech-Solutions',
+ '0dc1' => 'Tamagawa-Seiki-Co.-Ltd',
+ '0dc4' => 'Macpower-Peripherals-Ltd',
+ '0dc5' => 'SDK-Co.-Ltd',
+ '0dc7' => 'First-Cable-Line-Inc.',
+ '0dcd' => 'NetworkFab-Corp.',
+ '0dd0' => 'Access-Solutions',
+ '0dd1' => 'Contek-Electronics-Co.-Ltd',
+ '0dd3' => 'MediaQ',
+ '0dd4' => 'Custom-Engineering-SPA',
+ '0dd5' => 'California-Micro-Devices',
+ '0dd7' => 'Kocom-Co.-Ltd',
+ '0dd8' => 'Netac-Technology-Co.-Ltd',
+ '0dd9' => 'HighSpeed-Surfing',
+ '0ddb' => 'Tamarack-Inc.',
+ '0ddd' => 'Datelink-Technology-Co.-Ltd',
+ '0dde' => 'Ubicom-Inc.',
+ '0de0' => 'BD-Consumer-Healthcare',
+ '0ded' => 'Novasonics',
+ '0dee' => 'Lifetime-Memory-Products',
+ '0def' => 'Full-Rise-Electronic-Co.-Ltd',
+ '0df4' => 'NET-SYS',
+ '0df6' => 'Sitecom-Europe-B.V.',
+ '0e03' => 'Nippon-Systemware-Co.-Ltd',
+ '0e08' => 'Winbest-Technology-Co.-Ltd',
+ '0e0b' => 'Amigo-Technology-Inc.',
+ '0e0c' => 'Gesytec',
+ '0e0f' => 'VMware-Inc.',
+ '0e16' => 'JMTek-LLC',
+ '0e17' => 'Walex-Electronic-Ltd',
+ '0e1b' => 'Crewave',
+ '0e20' => 'Pegasus-Technologies-Ltd.',
+ '0e21' => 'Cowon-Systems-Inc.',
+ '0e22' => 'Symbian-Ltd.',
+ '0e25' => 'VinChip-Systems-Inc.',
+ '0e26' => 'J-Phone-East-Co.-Ltd',
+ '0e30' => 'HeartMath-LLC',
+ '0e34' => 'Micro-Computer-Control-Corp.',
+ '0e35' => '3Pea-Technologies-Inc.',
+ '0e36' => 'TiePie-engineering',
+ '0e38' => 'Stratitec-Inc.',
+ '0e3a' => 'Neostar-Technology-Co.-Ltd',
+ '0e3b' => 'Mansella-Ltd',
+ '0e41' => 'Line6-Inc.',
+ '0e48' => 'Julia-Corp.-Ltd',
+ '0e4c' => 'Radica-Games-Ltd',
+ '0e55' => 'Speed-Dragon-Multimedia-Ltd',
+ '0e5a' => 'Active-Co.-Ltd',
+ '0e5d' => 'Neltron-Industrial-Co.-Ltd',
+ '0e5e' => 'Conwise-Technology-Co.-Ltd.',
+ '0e66' => 'Hawking-Technologies',
+ '0e67' => 'Fossil-Inc.',
+ '0e6a' => 'Megawin-Technology-Co.-Ltd',
+ '0e6f' => 'Logic3',
+ '0e72' => 'Hsi-Chin-Electronics-Co.-Ltd',
+ '0e75' => 'TVS-Electronics-Ltd',
+ '0e79' => 'Archos-Inc.',
+ '0e7b' => 'On-Tech-Industry-Co.-Ltd',
+ '0e7e' => 'Gmate-Inc.',
+ '0e83' => 'Shin-An-Wire---Cable-Co.',
+ '0e8d' => 'MediaTek-Inc.',
+ '0e8f' => 'GreenAsia-Inc.',
+ '0e90' => 'WiebeTech-LLC',
+ '0e91' => 'VTech-Engineering-Canada-Ltd',
+ '0e92' => 'Cs-Glory-Enterprise-Co.-Ltd',
+ '0e93' => 'eM-Technics-Co.-Ltd',
+ '0e95' => 'Future-Technology-Co.-Ltd',
+ '0e96' => 'Aplux-Communications-Ltd',
+ '0e97' => 'Fingerworks-Inc.',
+ '0e99' => 'Parallel-Dice-Co.-Ltd',
+ '0e9a' => 'TA-HSING-Industries-Ltd',
+ '0e9b' => 'ADTEC-Corp.',
+ '0e9c' => 'Streamzap-Inc.',
+ '0e9f' => 'Tamura-Corp.',
+ '0ea0' => 'Ours-Technology-Inc.',
+ '0ea6' => 'Nihon-Computer-Co.-Ltd',
+ '0ea7' => 'MSL-Enterprises-Corp.',
+ '0ea8' => 'CenDyne-Inc.',
+ '0ead' => 'Humax-Co.-Ltd',
+ '0eb0' => 'NovaTech',
+ '0eb1' => 'WIS-Technologies-Inc.',
+ '0eb2' => 'Y-S-Electronic-Co.-Ltd',
+ '0eb3' => 'Saint-Technology-Corp.',
+ '0eb7' => 'Endor-AG',
+ '0ebe' => 'VWeb-Corp.',
+ '0ec1' => 'Abit-Computer-Corp.',
+ '0ec2' => 'Sweetray-Industrial-Ltd',
+ '0ec3' => 'Axell-Co.-Ltd',
+ '0ec4' => 'Ballracing-Developments-Ltd',
+ '0ec6' => 'InnoVISION-Multimedia-Ltd',
+ '0ec7' => 'Theta-Link-Corp.',
+ '0ecd' => 'Lite-On-IT-Corp.',
+ '0ece' => 'TaiSol-Electronics-Co.-Ltd',
+ '0ecf' => 'Phogenix-Imaging-LLC',
+ '0ed1' => 'WinMaxGroup',
+ '0ed2' => 'Kyoto-Micro-Computer-Co.-Ltd',
+ '0ed3' => 'Wing-Tech-Enterprise-Co.-Ltd',
+ '0ed5' => 'Fiberbyte',
+ '0eda' => 'Noriake-Itron-Corp.',
+ '0edf' => 'e-MDT-Co.-Ltd',
+ '0ee0' => 'Shima-Seiki-Mfg.-Ltd',
+ '0ee1' => 'Sarotech-Co.-Ltd',
+ '0ee2' => 'AMI-Semiconductor-Inc.',
+ '0ee3' => 'ComTrue-Technology-Corp.',
+ '0ee4' => 'Sunrich-Technology-Ltd',
+ '0eef' => 'D-WAV-Scientific-Co.-Ltd',
+ '0ef0' => 'Hitachi-Cable-Ltd',
+ '0ef1' => 'Aichi-Micro-Intelligent-Corp.',
+ '0ef2' => 'I-O-Magic-Corp.',
+ '0ef3' => 'Lynn-Products-Inc.',
+ '0ef4' => 'DSI-Datotech',
+ '0ef5' => 'PointChips',
+ '0ef6' => 'Yield-Microelectronics-Corp.',
+ '0ef7' => 'SM-Tech-Co.-Ltd-Tulip',
+ '0efd' => 'Oasis-Semiconductor',
+ '0efe' => 'Wem-Technology-Inc.',
+ '0f0c' => 'CAS-Corp.',
+ '0f0d' => 'Hori-Co.-Ltd',
+ '0f0e' => 'Energy-Full-Corp.',
+ '0f11' => 'LD-Didactic-GmbH',
+ '0f12' => 'Mars-Engineering-Corp.',
+ '0f13' => 'Acetek-Technology-Co.-Ltd',
+ '0f18' => 'Finger-Lakes-Instrumentation',
+ '0f19' => 'Oracom-Co.-Ltd',
+ '0f1b' => 'Onset-Computer-Corp.',
+ '0f1c' => 'Funai-Electric-Co.-Ltd',
+ '0f1d' => 'Iwill-Corp.',
+ '0f21' => 'IOI-Technology-Corp.',
+ '0f22' => 'Senior-Industries-Inc.',
+ '0f24' => 'Flex-P-Industries-Snd.-Bhd.',
+ '0f2d' => 'ViPower-Inc.',
+ '0f2f' => 'Priva-Design-Services',
+ '0f30' => 'Jess-Technology-Co.-Ltd',
+ '0f31' => 'Chrysalis-Development',
+ '0f37' => 'Kokuyo-Co.-Ltd',
+ '0f38' => 'Nien-Yi-Industrial-Corp.',
+ '0f3d' => 'Airprime-Incorporated',
+ '0f41' => 'RDC-Semiconductor-Co.-Ltd',
+ '0f44' => 'Polhemus',
+ '0f4b' => 'St.-John-Technology-Co.-Ltd',
+ '0f4c' => 'WorldWide-Cable-Opto-Corp.',
+ '0f4d' => 'Microtune-Inc.',
+ '0f4e' => 'Freedom-Scientific',
+ '0f52' => 'Wing-Key-Electrical-Co.-Ltd',
+ '0f55' => 'AmbiCom-Inc.',
+ '0f5c' => 'Prairiecomm-Inc.',
+ '0f5d' => 'NewAge-International-LLC',
+ '0f5f' => 'Key-Technology-Corp.',
+ '0f60' => 'NTK-Ltd',
+ '0f61' => 'Varian-Inc.',
+ '0f62' => 'Acrox-Technologies-Co.-Ltd',
+ '0f63' => 'LeapFrog-Enterprises',
+ '0f68' => 'Kobe-Steel-Ltd',
+ '0f69' => 'Dionex-Corp.',
+ '0f6a' => 'Vibren-Technologies-Inc.',
+ '0f6e' => 'INTELLIGENT-SYSTEMS',
+ '0f73' => 'DFI',
+ '0f7c' => 'DQ-Technology-Inc.',
+ '0f7d' => 'NetBotz-Inc.',
+ '0f7e' => 'Fluke-Corp.',
+ '0f88' => 'VTech-Holdings-Ltd',
+ '0f8b' => 'Yazaki-Corp.',
+ '0f8d' => 'Uniwill-Computer-Corp.',
+ '0f8e' => 'Kingnet-Technology-Co.-Ltd',
+ '0f8f' => 'Soma-Networks',
+ '0f97' => 'CviLux-Corp.',
+ '0f98' => 'CyberBank-Corp.',
+ '0f9c' => 'Hyun-Won-Inc.',
+ '0f9e' => 'Lucent-Technologies',
+ '0fa3' => 'Starconn-Electronic-Co.-Ltd',
+ '0fa4' => 'ATL-Technology',
+ '0fa5' => 'Sotec-Co.-Ltd',
+ '0fa7' => 'Epox-Computer-Co.-Ltd',
+ '0fa8' => 'Logic-Controls-Inc.',
+ '0faf' => 'Winpoint-Electronic-Corp.',
+ '0fb1' => 'Inclose-Design-Inc.',
+ '0fb8' => 'Wistron-Corp.',
+ '0fb9' => 'AACom-Corp.',
+ '0fbb' => 'Bitwise-Systems-Inc.',
+ '0fc1' => 'Mitac-Internatinal-Corp.',
+ '0fc5' => 'Delcom-Engineering',
+ '0fc6' => 'Dataplus-Supplies-Inc.',
+ '0fca' => 'Research-In-Motion-Ltd.',
+ '0fcf' => 'Dynastream-Innovations-Inc.',
+ '0fd0' => 'Tulip-Computers-B.V.',
+ '0fd1' => 'Giant-Electronics-Ltd.',
+ '0fd4' => 'Tenovis-GmbH---Co.-KG',
+ '0fdc' => 'Micro-Plus',
+ '0fe4' => 'IN-Tech-Electronics-Ltd',
+ '0fe5' => 'Greenconn-U.S.A.-Inc.',
+ '0fe9' => 'DVICO',
+ '0fea' => 'United-Computer-Accessories',
+ '0feb' => 'CRS-Electronic-Co.-Ltd',
+ '0fec' => 'UMC-Electronics-Co.-Ltd',
+ '0fed' => 'Access-Co.-Ltd',
+ '0fee' => 'Xsido-Corp.',
+ '0fef' => 'MJ-Research-Inc.',
+ '0ff6' => 'Core-Valley-Co.-Ltd',
+ '0fff' => 'Aopen-Inc.',
+ '1000' => 'Speed-Tech-Corp.',
+ '1003' => 'Sigma-Corp.',
+ '1004' => 'LG-Electronics-Inc.',
+ '1005' => 'Apacer-Technology-Inc.',
+ '1006' => 'iRiver-Ltd.',
+ '1009' => 'Emuzed-Inc.',
+ '100a' => 'AV-Chaseway-Ltd',
+ '100b' => 'Chou-Chin-Industrial-Co.-Ltd',
+ '100d' => 'Netopia-Inc.',
+ '1010' => 'Fukuda-Denshi-Co.-Ltd',
+ '1011' => 'Mobile-Media-Tech.',
+ '1014' => 'Densitron-Technologies-PLC',
+ '1015' => 'Softronics-Pty.-Ltd',
+ '1020' => 'Labtec',
+ '1022' => 'Shinko-Shoji-Co.-Ltd',
+ '1025' => 'Hyper-Paltek',
+ '1026' => 'Newly-Corp.',
+ '1027' => 'Time-Domain',
+ '1028' => 'Inovys-Corp.',
+ '1029' => 'Atlantic-Coast-Telesys',
+ '102a' => 'Ramos-Technology-Co.-Ltd',
+ '102b' => 'Infotronic-America-Inc.',
+ '102c' => 'Etoms-Electronics-Corp.',
+ '102d' => 'Winic-Corp.',
+ '1031' => 'Comax-Technology-Inc.',
+ '1032' => 'C-One-Technology-Corp.',
+ '1033' => 'Nucam-Corp.',
+ '1038' => 'Ideazon-Inc.',
+ '1039' => 'Silicon-Integrated-Systems',
+ '103d' => 'Stanton',
+ '1043' => 'iCreate-Technologies-Corp.',
+ '1044' => 'Chu-Yuen-Enterprise-Co.-Ltd',
+ '1048' => 'Targus-Group-International',
+ '104b' => 'Mylex---Buslogic',
+ '104c' => 'AMCO-TEC-International-Inc.',
+ '104d' => 'Newport-Corporation',
+ '104f' => 'WB-Electronics',
+ '1050' => 'Yubico.com',
+ '1053' => 'Immanuel-Electronics-Co.-Ltd',
+ '1054' => 'BMS-International-Beheer-N.V.',
+ '1056' => 'Hsin-Chen-Ent-Co.-Ltd',
+ '1057' => 'ON-Semiconductor',
+ '1059' => 'Giesecke---Devrient-GmbH',
+ '105d' => 'Delkin-Devices-Inc.',
+ '1060' => 'Easthome-Industrial-Co.-Ltd',
+ '1065' => 'CCYU-Technology',
+ '106a' => 'Loyal-Legend-Ltd',
+ '106c' => 'Curitel-Communications-Inc.',
+ '106d' => 'San-Chieh-Manufacturing-Ltd',
+ '106e' => 'ConectL',
+ '106f' => 'Money-Controls',
+ '1076' => 'GCT-Semiconductor-Inc.',
+ '107b' => 'Gateway-Inc.',
+ '107d' => 'Arlec-Australia-Ltd',
+ '107e' => 'Midoriya-Electric-Co.-Ltd',
+ '107f' => 'KidzMouse-Inc.',
+ '1082' => 'Shin-Etsukaken-Co.-Ltd',
+ '1083' => 'Canon-Electronics-Inc.',
+ '1084' => 'Pantech-Co.-Ltd',
+ '108a' => 'Chloride-Power-Protection',
+ '108b' => 'Grand-tek-Technology-Co.-Ltd',
+ '108c' => 'Robert-Bosch-GmbH',
+ '108e' => 'Lotes-Co.-Ltd.',
+ '1099' => 'Surface-Optics-Corp.',
+ '109a' => 'DATASOFT-Systems-GmbH',
+ '109f' => 'eSOL-Co.-Ltd',
+ '10a0' => 'Hirotech-Inc.',
+ '10a3' => 'Mitsubishi-Materials-Corp.',
+ '10a9' => 'SK-Teletech-Co.-Ltd',
+ '10aa' => 'Cables-To-Go',
+ '10ab' => 'USI-Co.-Ltd',
+ '10ac' => 'Honeywell-Inc.',
+ '10ae' => 'Princeton-Technology-Corp.',
+ '10af' => 'Liebert-Corp.',
+ '10b5' => 'Comodo-PLX-',
+ '10b8' => 'DiBcom',
+ '10bb' => 'TM-Technology-Inc.',
+ '10bc' => 'Dinging-Technology-Co.-Ltd',
+ '10bd' => 'TMT-Technology-Inc.',
+ '10bf' => 'SmartHome',
+ '10c5' => 'Sanei-Electric-Inc.',
+ '10c6' => 'Intec-Inc.',
+ '10cb' => 'Eratech',
+ '10cc' => 'GBM-Connector-Co.-Ltd',
+ '10cd' => 'Kycon-Inc.',
+ '10ce' => 'Silicon-Labs',
+ '10cf' => 'Velleman-Components-Inc.',
+ '10d1' => 'Hottinger-Baldwin-Measurement',
+ '10d4' => 'Man-Boon-Manufactory-Ltd',
+ '10d5' => 'Uni-Class-Technology-Co.-Ltd',
+ '10de' => 'Authenex-Inc.',
+ '10df' => 'In-Win-Development-Inc.',
+ '10e0' => 'Post-Op-Video-Inc.',
+ '10e1' => 'CablePlus-Ltd',
+ '10e2' => 'Nada-Electronics-Ltd',
+ '10ec' => 'Vast-Technologies-Inc.',
+ '10f0' => 'Nexio-Co.-Ltd',
+ '10f1' => 'Importek',
+ '10f5' => 'Turtle-Beach',
+ '10fb' => 'Pictos-Technologies-Inc.',
+ '10fd' => 'Anubis-Electronics-Ltd',
+ '1100' => 'VirTouch-Ltd',
+ '1101' => 'EasyPass-Industrial-Co.-Ltd',
+ '1108' => 'Brightcom-Technologies-Ltd',
+ '110a' => 'Moxa-Technologies-Co.-Ltd.',
+ '1111' => 'Pandora-International-Ltd.',
+ '1112' => 'YM-ELECTRIC-CO.-Ltd',
+ '1113' => 'Medion-AG',
+ '111e' => 'VSO-Electric-Co.-Ltd',
+ '112a' => 'RedRat',
+ '112f' => 'Cellon-International-Inc.',
+ '1130' => 'Tenx-Technology-Inc.',
+ '1136' => 'CTS-Electronincs',
+ '113c' => 'Arin-Tech-Co.-Ltd',
+ '113d' => 'Mapower-Electronics-Co.-Ltd',
+ '1141' => 'V-One-Multimedia-Pte.-Ltd',
+ '1142' => 'CyberScan-Technologies-Inc.',
+ '1145' => 'Japan-Radio-Company',
+ '114b' => 'Sphairon-Access-Systems-GmbH',
+ '114f' => 'Wavecom',
+ '115b' => 'Salix-Technology-Co.-Ltd.',
+ '1162' => 'Secugen-Corp.',
+ '1163' => 'DeLorme-Publishing-Inc.',
+ '1165' => 'Telson-Electronics-Co.-Ltd',
+ '1167' => 'Salient-Systems-Corp.',
+ '1168' => 'BizConn-International-Corp.',
+ '116e' => 'Gigastorage-Corp.',
+ '116f' => 'Silicon-10-Technology-Corp.',
+ '1175' => 'Shengyih-Steel-Mold-Co.-Ltd',
+ '117d' => 'Santa-Electronic-Inc.',
+ '117e' => 'JNC-Inc.',
+ '1182' => 'Venture-Corp.-Ltd',
+ '1184' => 'Kyocera-Elco-Corp.',
+ '1188' => 'Bloomberg-L.P.',
+ '118f' => 'You-Yang-Technology-Co.-Ltd',
+ '1190' => 'Tripace',
+ '1196' => 'Yankee-Robotics-LLC',
+ '1197' => 'Technoimagia-Co.-Ltd',
+ '1198' => 'StarShine-Technology-Corp.',
+ '1199' => 'Sierra-Wireless-Inc.',
+ '119a' => 'ZHAN-QI-Technology-Co.-Ltd',
+ '119b' => 'ruwido-austria-GmbH',
+ '11a0' => 'Chipcon-AS',
+ '11a3' => 'Technovas-Co.-Ltd',
+ '11aa' => 'GlobalMedia-Group-LLC',
+ '11ab' => 'Exito-Electronics-Co.-Ltd',
+ '11b0' => 'ATECH-FLASH-TECHNOLOGY',
+ '11c5' => 'Inmax',
+ '11db' => 'Topfield-Co.-Ltd.',
+ '11e6' => 'K.I.-Technology-Co.-Ltd.',
+ '11f5' => 'Siemens-AG',
+ '11f6' => 'Prolific',
+ '11f7' => 'Alcatel--',
+ '1209' => 'InterBiometrics',
+ '120e' => 'Hudson-Soft-Co.-Ltd',
+ '120f' => 'Magellan',
+ '1210' => 'DigiTech',
+ '121e' => 'Jungsoft-Co.-Ltd',
+ '1233' => 'Denver-Electronics',
+ '1234' => 'Unknown',
+ '1235' => 'Novation-EMS',
+ '1241' => 'Belkin',
+ '124a' => 'AirVast',
+ '124b' => 'Nyko-Honey-Bee',
+ '125c' => 'Apogee-Inc.',
+ '125f' => 'A-DATA-Technology-Co.-Ltd.',
+ '1260' => 'Standard-Microsystems-Corp.',
+ '1264' => 'Covidien-Energy-based-Devices',
+ '1266' => 'Pirelli-Broadband-Solutions',
+ '1267' => 'Logic3---SpectraVideo-plc',
+ '126c' => 'Aristocrat-Technologies',
+ '126d' => 'Bel-Stewart',
+ '126e' => 'Strobe-Data-Inc.',
+ '126f' => 'TwinMOS',
+ '1274' => 'Ensoniq',
+ '1283' => 'zebris-Medical-GmbH',
+ '1286' => 'Marvell-Semiconductor-Inc.',
+ '1292' => 'Innomedia',
+ '1293' => 'Belkin-Components-hex',
+ '1294' => 'RISO-KAGAKU-CORP.',
+ '129b' => 'CyberTAN-Technology',
+ '12a7' => 'Trendchip-Technologies-Corp.',
+ '12c4' => 'Autocue-Group-Ltd',
+ '12d1' => 'Huawei-Technologies-Co.-Ltd.',
+ '12d6' => 'EMS-Dr.-Thomas-Wuensche',
+ '12d7' => 'BETTER-WIRE-FACTORY-CO.-LTD.',
+ '12e6' => 'Waldorf-Music-GmbH',
+ '12ef' => 'Tapwave-Inc.',
+ '12f7' => 'Memorex-Products-Inc.',
+ '12fd' => 'AIN-Comm.-Technology-Co.-Ltd',
+ '12ff' => 'Fascinating-Electronics-Inc.',
+ '1307' => 'Transcend-Information-Inc.',
+ '1308' => 'Shuttle-Inc.',
+ '1310' => 'Roper',
+ '1312' => 'ICS-Electronics',
+ '131d' => 'Natural-Point',
+ '132a' => 'Envara-Inc.',
+ '132b' => 'KONICA-MINOLTA',
+ '1342' => 'Mobility',
+ '1345' => 'Sino-Lite-Technology-Corp.',
+ '1347' => 'Moravian-Instruments',
+ '134c' => 'PanJit-International-Inc.',
+ '1357' => 'P-E-Microcomputer-Systems',
+ '1366' => 'SEGGER',
+ '136b' => 'STEC',
+ '1370' => 'Swissbit',
+ '1371' => 'CNet-Technology-Inc.',
+ '1376' => 'Vimtron-Electronics-Co.-Ltd.',
+ '137b' => 'SCAPS-GmbH',
+ '1385' => 'Netgear',
+ '138a' => 'Validity-Sensors-Inc.',
+ '138e' => 'Jungo-LTD',
+ '1390' => 'TOMTOM-B.V.',
+ '1391' => 'IdealTEK-Inc.',
+ '1395' => 'Sennheiser-Communications',
+ '1397' => 'BEHRINGER-International-GmbH',
+ '1398' => 'Q-tec',
+ '13ad' => 'Baltech',
+ '13b0' => 'PerkinElmer-Optoelectronics',
+ '13b1' => 'Linksys',
+ '13b2' => 'Alesis',
+ '13b3' => 'Nippon-Dics-Co.-Ltd.',
+ '13ba' => 'Unknown',
+ '13be' => 'Ricoh-Printing-Systems-Ltd.',
+ '13cf' => 'Wisair-Ltd.',
+ '13d0' => 'Techsan-Electronics-Co.-Ltd.',
+ '13d2' => 'Shark-Multimedia',
+ '13d3' => 'IMC-Networks',
+ '13dc' => 'ALEREON-INC.',
+ '13dd' => 'i.Tech-Dynamic-Limited',
+ '13e5' => 'Rane',
+ '13e6' => 'TechnoScope-Co.-Ltd.',
+ '13ec' => 'Zydacron',
+ '13fd' => 'Initio-Corporation',
+ '1400' => 'Axxion-Group-Corp.',
+ '1402' => 'Bowe-Bell---Howell',
+ '1403' => 'Sitronix',
+ '140e' => 'Telechips-Inc.',
+ '1410' => 'Novatel-Wireless',
+ '1419' => 'ABILITY-ENTERPRISE-CO.-LTD.',
+ '142a' => 'Thales-E-Transactions',
+ '142b' => 'Arbiter-Systems-Inc.',
+ '1430' => 'RedOctane',
+ '1431' => 'Pertech-Resources-Inc.',
+ '1435' => 'Wistron-NeWeb',
+ '1436' => 'Denali-Software-Inc.',
+ '143c' => 'Altek-Corporation',
+ '1443' => 'Digilent',
+ '1453' => 'Radio-Shack',
+ '145f' => 'Trust',
+ '1460' => 'Tatung-Co.',
+ '1461' => 'Staccato-Communications',
+ '1462' => 'Micro-Star-International',
+ '1472' => 'Huawei-3Com',
+ '147e' => 'Upek',
+ '147f' => 'Hama-GmbH---Co.-KG',
+ '1482' => 'Vaillant',
+ '1484' => 'Elsa-AG-hex',
+ '1485' => 'Silicom',
+ '1487' => 'DSP-Group-Ltd.',
+ '148e' => 'EVATRONIX-SA',
+ '148f' => 'Ralink',
+ '1497' => 'Panstrong-Company-Ltd.',
+ '1498' => 'Microtek-International-Inc.',
+ '149a' => 'Imagination-Technologies',
+ '14aa' => 'WideView-Technology-Inc.',
+ '14ad' => 'CTK-Corporation',
+ '14ae' => 'Printronix-Inc.',
+ '14af' => 'ATP-Electronics-Inc.',
+ '14b0' => 'StarTech.com-Ltd.',
+ '14b2' => 'Ralink',
+ '14c0' => 'Rockwell-Automation-Inc.',
+ '14c2' => 'Gemlight-Computer-Ltd',
+ '14cd' => 'Super-Top',
+ '14d8' => 'JAMER-INDUSTRIES-CO.-LTD.',
+ '14dd' => 'Raritan-Computer-Inc.',
+ '14e1' => 'Dialogue-Technology-Corp.',
+ '14ea' => 'Planex-Communications',
+ '14ed' => 'Shure-Inc.',
+ '14f7' => 'TechniSat-Digital-GmbH',
+ '1500' => 'Ellisys',
+ '1501' => 'Pine-Tum-Enterprise-Co.-Ltd.',
+ '1513' => 'medMobile',
+ '1514' => 'Actel',
+ '1516' => 'CompUSA',
+ '1518' => 'Cheshire-Engineering-Corp.',
+ '1520' => 'Bitwire-Corp.',
+ '1524' => 'ENE-Technology-Inc',
+ '1527' => 'Silicon-Portals',
+ '1529' => 'UBIQUAM-Co.-Ltd.',
+ '152e' => 'LG-HLDS',
+ '1532' => 'Razer-USA-Ltd',
+ '1546' => 'U-Blox-AG',
+ '154a' => 'Celectronic-GmbH',
+ '154b' => 'PNY',
+ '154d' => 'ConnectCounty-Holdings-Berhad',
+ '1554' => 'Prolink-Microsystems-Corp.',
+ '1557' => 'OQO',
+ '1568' => 'Sunf-Pu-Technology-Co.-Ltd',
+ '156f' => 'Quantum-Corporation',
+ '1570' => 'ALLTOP-TECHNOLOGY-CO.-LTD.',
+ '157b' => 'Ketron-SRL',
+ '157e' => 'TRENDnet',
+ '1582' => 'Fiberline',
+ '1587' => 'SMA-Technologie-AG',
+ '158d' => 'Oakley-Inc.',
+ '15a2' => 'Freescale-Semiconductor-Inc.',
+ '15a4' => 'Afatech-Technologies-Inc.',
+ '15a8' => 'Teams-Power-Limited',
+ '15a9' => 'Gemtek',
+ '15ad' => 'VMware-Inc.',
+ '15ba' => 'Olimex-Ltd.',
+ '15c0' => 'XL-Imaging',
+ '15c2' => 'SoundGraph-Inc.',
+ '15c6' => 'Laboratoires-MXM',
+ '15c8' => 'KTF-Technologies',
+ '15c9' => 'D-Box-Technologies',
+ '15ca' => 'Textech-International-Ltd.',
+ '15d5' => 'Coulomb-Electronics-Ltd.',
+ '15d9' => 'Trust-International-B.V.',
+ '15dc' => 'Hynix-Semiconductor-Inc.',
+ '15e0' => 'Seong-Ji-Industrial-Co.-Ltd.',
+ '15e1' => 'RSA',
+ '15e8' => 'SohoWare',
+ '15e9' => 'Pacific-Digital-Corp.',
+ '15ec' => 'Belcarra-Technologies-Corp.',
+ '15f4' => 'HanfTek',
+ '1604' => 'Tascam',
+ '1606' => 'Umax',
+ '1608' => 'Inside-Out-Networks-hex',
+ '160a' => 'VIA-Technologies-Inc.',
+ '1614' => 'Amoi-Electronics',
+ '1621' => 'Wionics-Research',
+ '1628' => 'Stonestreet-One-Inc.',
+ '162a' => 'Airgo-Networks-Inc.',
+ '162f' => 'WiQuest-Communications-Inc.',
+ '1630' => '2Wire-Inc.',
+ '1631' => 'Good-Way-Technology',
+ '1645' => 'Cross-Match-Technologies-GmbH',
+ '1649' => 'SofTec-Microsystems',
+ '164a' => 'ChipX',
+ '164c' => 'Matrix-Vision-GmbH',
+ '165b' => 'Frontier-Design-Group',
+ '1660' => 'Creatix-Polymedia-GmbH',
+ '1668' => 'Actiontec-Electronics-Inc',
+ '1669' => 'PiKRON-Ltd.-hex',
+ '1679' => 'Total-Phase',
+ '1680' => 'Golden-Bridge-Electech-Inc.',
+ '1681' => 'Prevo-Technologies-Inc.',
+ '1684' => 'Godspeed-Computer-Corp.',
+ '1685' => 'Delock',
+ '1686' => 'ZOOM-Corporation',
+ '1687' => 'Kingmax-Digital-Inc.',
+ '1688' => 'Saab-AB',
+ '168c' => 'Atheros',
+ '1690' => 'Askey-Computer-Corp.-hex',
+ '1697' => 'VTec-Test-Inc.',
+ '16a6' => 'Unigraf',
+ '16ab' => 'Global-Sun-Technology',
+ '16b4' => 'iStation',
+ '16b5' => 'Persentec-Inc.',
+ '16c0' => 'VOTI',
+ '16ca' => 'Wireless-Cables-Inc.',
+ '16cc' => 'silex-technology-Inc.',
+ '16d0' => 'GrauTec',
+ '16d5' => 'AnyDATA-Corporation',
+ '16d6' => 'JABLOCOM-s.r.o.',
+ '16d8' => 'CMOTECH-Co.-Ltd.',
+ '16dc' => 'Wiener-Plein---Baus',
+ '16f0' => 'GN-ReSound-A-S',
+ '16f5' => 'Futurelogic-Inc.',
+ '1706' => 'BlueView-Technologies-Inc.',
+ '1707' => 'ARTIMI',
+ '170b' => 'Swissonic',
+ '170d' => 'Avnera',
+ '1725' => 'Vitesse-Semiconductor',
+ '1726' => 'Axesstel-Inc.',
+ '172f' => 'Waltop-International-Corp.',
+ '1733' => 'Cellink-Technology-Co.-Ltd',
+ '1737' => 'Linksys',
+ '1740' => 'Senao',
+ '1743' => 'General-Atomics',
+ '174c' => 'ASMedia-Technology-Inc.',
+ '174f' => 'Syntek',
+ '1753' => 'GERTEC-Telecomunicacoes-Ltda.',
+ '1759' => 'LucidPort-Technology-Inc.',
+ '1772' => 'System-Level-Solutions-Inc.',
+ '1776' => 'Arowana',
+ '177f' => 'Sweex',
+ '1781' => 'Multiple-Vendors',
+ '1784' => 'TopSeed-Technology-Corp.',
+ '1787' => 'ATI-AIB',
+ '1796' => 'Printrex-Inc.',
+ '1797' => 'JALCO-CO.-LTD.',
+ '1799' => 'Belkin-Components',
+ '17a0' => 'Samson-Technologies-Corp.',
+ '17a4' => 'Concept2',
+ '17a7' => 'MICOMSOFT-CO.-LTD.',
+ '17b3' => 'Grey-Innovation',
+ '17c3' => 'Singim-International-Corp.',
+ '17cc' => 'Native-Instruments',
+ '17d0' => 'Sanford-L.P.',
+ '17d3' => 'Korea-Techtron-Co.-Ltd.',
+ '17e9' => 'Newnham-Research',
+ '17eb' => 'Cornice-Inc.',
+ '17ef' => 'Lenovo',
+ '17f5' => 'K.K.-Rocky',
+ '17f6' => 'Unicomp-Inc',
+ '1809' => 'Advantech',
+ '1822' => 'Twinhan',
+ '1831' => 'Gwo-Jinn-Industries-Co.-Ltd.',
+ '183d' => 'VIVOphone',
+ '1843' => 'Vaisala',
+ '1849' => 'ASRock-Incorporation',
+ '1852' => 'GYROCOM-C-C-Co.-LTD',
+ '1854' => 'Memory-Devices-Ltd.',
+ '185b' => 'Compro',
+ '1862' => 'Teridian-Semiconductor-Corp.',
+ '1870' => 'Nexio-Co.-Ltd',
+ '1871' => 'Aveo-Technology-Corp.',
+ '187c' => 'Alienware-Corporation',
+ '187f' => 'Siano-Mobile-Silicon',
+ '1892' => 'Vast-Technologies-Inc.',
+ '1894' => 'Topseed',
+ '1897' => 'Evertop-Wire-Cable-Co.',
+ '18a5' => 'Verbatim-Ltd',
+ '18b1' => 'Petalynx',
+ '18b4' => 'e3C-Technologies',
+ '18b6' => 'Mikkon-Technology-Limited',
+ '18b7' => 'Zotek-Electronic-Co.-Ltd.',
+ '18c5' => 'amit-Inc',
+ '18cd' => 'Ecamm',
+ '18d1' => 'Google-Inc.',
+ '18d9' => 'Kaba',
+ '18dd' => 'Planon-System-Solutions-Inc.',
+ '18e8' => 'Qcom',
+ '18ea' => 'Matrox-Graphics-Inc.',
+ '18ec' => 'Arkmicro-Technologies-Inc.',
+ '18fd' => 'FineArch-Inc.',
+ '1908' => 'GEMBIRD',
+ '190d' => 'Motorola-GSG',
+ '1914' => 'Alco-Digital-Devices-Limited',
+ '1915' => 'Nordic-Semiconductor-ASA',
+ '1926' => 'NextWindow',
+ '192f' => 'Avago-Technologies-Pte.',
+ '1941' => 'Dream-Link',
+ '1943' => 'Sensoray-Co.-Inc.',
+ '1949' => 'Lab126',
+ '1951' => 'Hyperstone-AG',
+ '1953' => 'Ironkey-Inc.',
+ '1954' => 'Radiient-Technologies',
+ '195d' => 'Itron-Technology-iONE',
+ '196b' => 'Wispro-Technology-Inc.',
+ '1970' => 'Dane-Elec-Corp.-USA',
+ '1977' => 'T-Logic',
+ '1989' => 'Nuconn-Technology-Corp.',
+ '198f' => 'Beceem-Communications-Inc.',
+ '1995' => 'Trillium-Technology-Pty.-Ltd.',
+ '199f' => 'Benica-Corporation',
+ '19a8' => 'Biforst-Technology-Inc.',
+ '19ab' => 'Bodelin',
+ '19af' => 'S-Life',
+ '19b2' => 'Batronix',
+ '19b4' => 'Celestron',
+ '19b5' => 'B---W-Group',
+ '19b6' => 'Infotech-Logistic-LLC',
+ '19b9' => 'Data-Robotics',
+ '19ca' => 'Mindtribe',
+ '19cf' => 'Parrot-SA',
+ '19d2' => 'ONDA-Communication-S.p.A.',
+ '19f7' => 'RODE-Microphones',
+ '19fa' => 'Gampaq-Co.Ltd',
+ '19ff' => 'Dynex',
+ '1a08' => 'Bellwood-International-Inc.',
+ '1a0a' => 'USB-IF-non-workshop',
+ '1a12' => 'KES-Co.-Ltd.',
+ '1a25' => 'Amphenol-East-Asia-Ltd.',
+ '1a2a' => 'Seagate-Branded-Solutions',
+ '1a32' => 'Quanta-Microsystems-Inc.',
+ '1a36' => 'Biwin-Technology-Ltd.',
+ '1a40' => 'TERMINUS-TECHNOLOGY-INC.',
+ '1a41' => 'Action-Electronics-Co.-Ltd.',
+ '1a4a' => 'Silicon-Image',
+ '1a4b' => 'SafeBoot-International-B.V.',
+ '1a61' => 'Abbott-Diabetes-Care',
+ '1a6a' => 'Spansion-Inc.',
+ '1a6d' => 'SamYoung-Electronics-Co.-Ltd',
+ '1a6e' => 'Global-Unichip-Corp.',
+ '1a6f' => 'Sagem-Orga-GmbH',
+ '1a79' => 'Bayer-Health-Care-LLC',
+ '1a7b' => 'Lumberg-Connect-GmbH---Co.-KG',
+ '1a7c' => 'Evoluent',
+ '1a86' => 'QinHeng-Electronics',
+ '1a89' => 'Dynalith-Systems-Co.-Ltd.',
+ '1a8b' => 'SGS-Taiwan-Ltd.',
+ '1a8d' => 'BandRich-Inc.',
+ '1a90' => 'Corsair-Voyager-GT-16GB',
+ '1a98' => 'Leica-Camera-AG',
+ '1aa4' => 'Data-Drive-Thru-Inc.',
+ '1aa5' => 'UBeacon-Technologies-Inc.',
+ '1aa6' => 'eFortune-Technology-Corp.',
+ '1acb' => 'Salcomp-Plc',
+ '1ad1' => 'Desay-Wire-Co.-Ltd.',
+ '1ae7' => 'X-TENSIONS',
+ '1b04' => 'Meilhaus-Electronic-GmBH',
+ '1b20' => 'MStar-Semiconductor-Inc.',
+ '1b22' => 'WiLinx-Corp.',
+ '1b26' => 'Cellex-Power-Products-Inc.',
+ '1b27' => 'Current-Electronics-Inc.',
+ '1b28' => 'NAVIsis-Inc.',
+ '1b32' => 'Ugobe-Life-Forms-Inc.',
+ '1b36' => 'ViXS-Systems-Inc.',
+ '1b3b' => 'iPassion-Technology-Inc.',
+ '1b3f' => 'Generalplus-Technology-Inc.',
+ '1b47' => 'Energizer-Holdings-Inc.',
+ '1b48' => 'Plastron-Precision-Co.-Ltd.',
+ '1b59' => 'K.S.-Terminals-Inc.',
+ '1b72' => 'ATERGI-TECHNOLOGY-CO.-LTD.',
+ '1b73' => 'Fresco-Logic',
+ '1b75' => 'Ovislink-Corp.',
+ '1b76' => 'Legend-Silicon-Corp.',
+ '1b80' => 'Afatech',
+ '1b8c' => 'Altium-Limited',
+ '1b8d' => 'e-MOVE-Technology-Co.-Ltd.',
+ '1b8e' => 'Amlogic-Inc.',
+ '1b8f' => 'MA-LABS-Inc.',
+ '1b96' => 'N-Trig',
+ '1b98' => 'YMax-Communications-Corp.',
+ '1b99' => 'Shenzhen-Yuanchuan-Electronic',
+ '1ba4' => 'Ember-Corporation',
+ '1ba6' => 'Abilis-Systems',
+ '1bad' => 'Harmonix-Music',
+ '1bae' => 'Vuzix-Corporation',
+ '1bbb' => 'T---A-Mobile-Phones',
+ '1bc4' => 'Ford-Motor-Co.',
+ '1bc5' => 'AVIXE-Technology-China-Ltd.',
+ '1bcf' => 'Sunplus-Innovation-Technology-Inc',
+ '1bde' => 'P-TWO-INDUSTRIES-INC.',
+ '1bf0' => 'RealVision-Inc.',
+ '1bf5' => 'Extranet-Systems-Inc.',
+ '1bfd' => 'TouchPack',
+ '1c02' => 'Kreton-Corporation',
+ '1c04' => 'QNAP-System-Inc.',
+ '1c0d' => 'Relm-Wireless',
+ '1c10' => 'Lanterra-Industrial-Co.-Ltd.',
+ '1c13' => 'ALECTRONIC-LIMITED',
+ '1c1a' => 'Datel-Electronics-Ltd.',
+ '1c1b' => 'Volkswagen-of-America-Inc.',
+ '1c1f' => 'Goldvish-S.A.',
+ '1c21' => 'ADDMM-LLC',
+ '1c27' => 'HuiYang-D---S-Cable-Co.-Ltd.',
+ '1c31' => 'LS-Cable-Ltd.',
+ '1c34' => 'SpringCard',
+ '1c37' => 'Authorizer-Technologies-Inc.',
+ '1c3d' => 'NONIN-MEDICAL-INC.',
+ '1c3e' => 'Wep-Peripherals',
+ '1c49' => 'Cherng-Weei-Technology-Corp.',
+ '1c4f' => 'SiGma-Micro',
+ '1c6c' => 'Skydigital-Inc.',
+ '1c73' => 'AMT',
+ '1c77' => 'Kaetat-Industrial-Co.-Ltd.',
+ '1c78' => 'Datascope-Corp.',
+ '1c79' => 'Unigen-Corporation',
+ '1c7a' => 'LighTuning-Technology-Inc.',
+ '1c87' => '2N-TELEKOMUNIKACE-a.s.',
+ '1c88' => 'Somagic-Inc.',
+ '1c8e' => 'ASTRON-INTERNATIONAL-CORP.',
+ '1c98' => 'ALPINE-ELECTRONICS-INC.',
+ '1ca0' => 'ACCARIO-Inc.',
+ '1cac' => 'Kinstone',
+ '1cb3' => 'Aces-Electronic-Co.-Ltd.',
+ '1cb4' => 'OPEX-CORPORATION',
+ '1cbe' => 'Luminary-Micro-Inc.',
+ '1cc0' => 'PlantSense',
+ '1cca' => 'NextWave-Broadband-Inc.',
+ '1cd4' => 'adp-corporation',
+ '1cd5' => 'Firecomms-Ltd.',
+ '1cdf' => 'WonTen-Technology-Co.-Ltd.',
+ '1ce0' => 'EDIMAX-TECHNOLOGY-CO.-LTD.',
+ '1ce1' => 'Amphenol-KAE',
+ '1cfc' => 'ANDES-TECHNOLOGY-CORPORATION',
+ '1d07' => 'Solid-Motion',
+ '1d14' => 'ALPHA-SAT-TECHNOLOGY-LIMITED',
+ '1d17' => 'C-Thru-Music-Ltd.',
+ '1d19' => 'Dexatek-Technology-Ltd.',
+ '1d1f' => 'Diostech-Co.-Ltd.',
+ '1d20' => 'SAMTACK-INC.',
+ '1d4d' => 'PEGATRON-CORPORATION',
+ '1d50' => 'OpenMoko-Inc.',
+ '1d5b' => 'Smartronix-Inc.',
+ '1d6b' => 'Linux-Foundation',
+ '1e0e' => 'Qualcomm---Option',
+ '1e10' => 'Point-Grey-Research-Inc.',
+ '1e1d' => 'Lumension-Security',
+ '1e1f' => 'INVIA',
+ '1e29' => 'Festo-AG---Co.-KG',
+ '1e41' => 'Cleverscope',
+ '1e54' => 'TypeMatrix',
+ '1e68' => 'TrekStor-GmbH---Co.-KG',
+ '1e71' => 'NZXT',
+ '1e74' => 'Coby-Electronics-Corporation',
+ '1e7d' => 'ROCCAT',
+ '1ebb' => 'NuCORE-Technology-Inc.',
+ '1eda' => 'AirTies-Wireless-Networks',
+ '1ef6' => 'EADS-Deutschland-GmbH',
+ '1f28' => 'Cal-Comp',
+ '1f4d' => 'G-Tek-Electronics-Group',
+ '1f82' => 'TANDBERG',
+ '1f84' => 'Alere-Inc.',
+ '1f87' => 'Stantum',
+ '1fbd' => 'Delphin-Technology-AG',
+ '1fc9' => 'NXP-Semiconductors',
+ '1fe7' => 'Vertex-Wireless-Co.-Ltd.',
+ '2001' => 'D-Link',
+ '2013' => 'Unknown-Pinnacle-',
+ '2019' => 'PLANEX',
+ '2040' => 'Hauppauge',
+ '2047' => 'Texas-Instruments',
+ '2080' => 'Barnes---Noble',
+ '2087' => 'Cando',
+ '20a0' => 'Clay-Logic',
+ '20b1' => 'XMOS-Ltd',
+ '20b3' => 'Hanvon',
+ '20b7' => 'Qi-Hardware',
+ '20df' => 'Simtec-Electronics',
+ '2101' => 'ActionStar',
+ '2162' => 'Creative--',
+ '2184' => 'GW-Instek',
+ '21a1' => 'Emotiv-Systems-Pty.-Ltd.',
+ '21d6' => 'Agecodagis-SARL',
+ '2222' => 'MacAlly',
+ '2227' => 'SAMWOO-Enterprise',
+ '2233' => 'RadioShack-Corporation',
+ '2237' => 'Kobo-Inc.',
+ '22a6' => 'Pie-Digital-Inc.',
+ '22b8' => 'Motorola-PCS',
+ '22b9' => 'eTurboTouch-Technology-Inc.',
+ '2304' => 'Pinnacle-Systems-Inc.',
+ '2373' => 'Pumatronix-Ltda',
+ '2375' => 'Digit-at-lway-Inc.',
+ '2478' => 'Tripp-Lite',
+ '2632' => 'TwinMOS',
+ '2730' => 'Citizen',
+ '2735' => 'DigitalWay',
+ '2770' => 'NHJ-Ltd',
+ '2821' => 'ASUSTek-Computer-Inc.',
+ '2899' => 'Toptronic-Industrial-Co.-Ltd',
+ '2c02' => 'Planex-Communications',
+ '2c1a' => 'Dolphin-Peripherals',
+ '2fb2' => 'Fujitsu-Ltd',
+ '3125' => 'Eagletron',
+ '3176' => 'Whanam-Electronics-Co.-Ltd',
+ '3275' => 'VidzMedia-Pte-Ltd',
+ '3334' => 'AEI',
+ '3340' => 'Yakumo',
+ '3504' => 'Micro-Star',
+ '3579' => 'DIVA',
+ '3636' => 'InVibro',
+ '3838' => 'WEM',
+ '3923' => 'National-Instruments-Corp.',
+ '40bb' => 'I-O-Data',
+ '4101' => 'i-rocks',
+ '4102' => 'iRiver-Ltd.',
+ '413c' => 'Dell-Computer-Corp.',
+ '4146' => 'USBest-Technology',
+ '4242' => 'USB-Design-by-Example',
+ '4317' => 'Broadcom',
+ '4348' => 'WinChipHead',
+ '4572' => 'Shuttle-Inc.',
+ '4586' => 'Panram',
+ '4670' => 'EMS-Production',
+ '4752' => 'Miditech',
+ '4757' => 'GW-Instek',
+ '4766' => 'Aceeca',
+ '4855' => 'Memorex',
+ '4971' => 'SimpleTech',
+ '5032' => 'Grandtec',
+ '5041' => 'Linksys',
+ '50c2' => 'Averatec--',
+ '5173' => 'Sweex',
+ '5219' => 'I-Tetra',
+ '5345' => 'Owon',
+ '544d' => 'Transmeta-Corp.',
+ '5543' => 'UC-Logic-Technology-Corp.',
+ '5555' => 'Epiphan-Systems-Inc.',
+ '55aa' => 'OnSpec-Electronic-Inc.',
+ '5656' => 'Uni-Trend-Group-Limited',
+ '595a' => 'IRTOUCHSYSTEMS-Co.-Ltd.',
+ '5986' => 'Acer',
+ '5a57' => 'Zinwell',
+ '6000' => 'Beholder-International-Ltd.',
+ '601a' => 'Ingenic-Semiconductor-Ltd.',
+ '6189' => 'Sitecom',
+ '6253' => 'TwinHan-Technology-Co.-Ltd',
+ '636c' => 'CoreLogic-Inc.',
+ '6472' => 'Unknown-Sony-',
+ '6547' => 'Arkmicro-Technologies-Inc.',
+ '6615' => 'IRTOUCHSYSTEMS-Co.-Ltd.',
+ '6666' => 'Prototype-product-Vendor-ID',
+ '6677' => 'WiseGroup-Ltd.',
+ '6891' => '3Com',
+ '695c' => 'Opera1',
+ '7104' => 'CME-Central-Music-Co.',
+ '726c' => 'StackFoundry-LLC',
+ '734c' => 'TBS-Technologies-China',
+ '7392' => 'Edimax-Technology-Co.-Ltd',
+ '8086' => 'Intel-Corp.',
+ '8087' => 'Intel-Corp.',
+ '80ee' => 'VirtualBox',
+ '8282' => 'Keio',
+ '8341' => 'EGO-Systems-Inc.',
+ '9016' => 'Sitecom',
+ '9022' => 'TeVii-Technology-Ltd.',
+ '9148' => 'GeoLab-Ltd',
+ '9710' => 'MosChip-Semiconductor',
+ '99fa' => 'Grandtec',
+ '9ac4' => 'J.-Westhues',
+ 'a168' => 'AnMo-Electronics-Corporation',
+ 'a600' => 'Asix',
+ 'a727' => '3Com',
+ 'abcd' => 'Unknown',
+ 'c251' => 'Keil-Software-Inc.',
+ 'cace' => 'CACE-Technologies-Inc.',
+ 'd209' => 'Ultimarc',
+ 'e4e4' => 'Xorcom-Ltd.',
+ 'eb03' => 'MakingThings',
+ 'eb1a' => 'eMPIA-Technology-Inc.',
+ 'eb2a' => 'KWorld',
+ 'f003' => 'Hewlett-Packard',
+ '1412' => 'ESI',
+ '7012' => 'VIA-Technologies-Inc',
+ );
+
+} \ No newline at end of file
diff --git a/Application/Include/version.php b/Application/Include/version.php
new file mode 100644
index 0000000..7e348f6
--- /dev/null
+++ b/Application/Include/version.php
@@ -0,0 +1,138 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+
+class Version
+{
+
+ public static $mobileAllowed = array(
+ 'home,index',
+ 'contact,index',
+ 'credits,index',
+ 'project,index',
+ 'hardware,catalogue',
+ 'wifi,catalogue',
+ 'wifi,view',
+ 'videocards,catalogue',
+ 'videocards,view',
+ 'printers,catalogue',
+ 'printers,view',
+ 'scanners,catalogue',
+ 'scanners,view',
+ 'threegcards,catalogue',
+ 'threegcards,view',
+ 'soundcards,catalogue',
+ 'soundcards,view',
+ 'webcams,catalogue',
+ 'webcams,view',
+ 'bluetooth,catalogue',
+ 'bluetooth,view',
+ 'acquisitioncards,catalogue',
+ 'acquisitioncards,view',
+ 'fingerprintreaders,catalogue',
+ 'fingerprintreaders,view',
+ 'ethernetcards,catalogue',
+ 'ethernetcards,view',
+ 'sdcardreaders,catalogue',
+ 'sdcardreaders,view',
+ 'modems,catalogue',
+ 'modems,view',
+ 'notebooks,catalogue',
+ 'notebooks,view',
+ 'raidadapters,catalogue',
+ 'raidadapters,view',
+ 'hostcontrollers,catalogue',
+ 'hostcontrollers,view',
+ );
+
+ //get the subfolder of the Views folder where to look for the view files
+ public static function getViewSubfolder()
+ {
+ $type = self::get();
+
+ if ($type === 'mobile')
+ {
+ return 'Mobile';
+ }
+ return 'Desktop';
+ }
+
+ //get the type of version: desktop or mobile
+ public static function get()
+ {
+ if (isset($_COOKIE['version']))
+ {
+ if (strcmp($_COOKIE['version'],'mobile') === 0)
+ {
+ return 'mobile';
+ }
+ else if (strcmp($_COOKIE['version'],'desktop') === 0)
+ {
+ return 'desktop';
+ }
+ }
+ else
+ {
+ //Regular expression to detect mobile browsers
+ //taken from http://detectmobilebrowsers.com/
+ $useragent=$_SERVER['HTTP_USER_AGENT'];
+ if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
+ return 'mobile';
+ }
+ return 'desktop';
+ }
+
+ //set the version
+ public static function set()
+ {
+ if (isset($_GET['version']))
+ {
+ if (strcmp($_GET['version'],'mobile') === 0)
+ {
+ self::setMobile();
+ }
+ else if (strcmp($_GET['version'],'desktop') === 0)
+ {
+ self::setDesktop();
+ }
+ $h = new HeaderObj(DOMAIN_NAME);
+ $h->redirect("home/index/".Lang::$current);
+ }
+ }
+
+ public static function setMobile()
+ {
+ if (!isset($_COOKIE['version']) or strcmp($_COOKIE['version'],'desktop') === 0)
+ {
+ setcookie("version","mobile",0,'/');
+ }
+ }
+
+ public static function setDesktop()
+ {
+ if (!isset($_COOKIE['version']) or strcmp($_COOKIE['version'],'mobile') === 0)
+ {
+ setcookie("version","desktop",0,'/');
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Application/Include/wikiFormatting.php b/Application/Include/wikiFormatting.php
new file mode 100644
index 0000000..6eb93f7
--- /dev/null
+++ b/Application/Include/wikiFormatting.php
@@ -0,0 +1,356 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+
+$decodeCounter = 0;
+$decodeAnotherTime = false;
+
+//decode the text of the wiki
+function decodeWikiText($string)
+{
+ global $decodeAnotherTime;
+ global $decodeCounter;
+
+ $decodeCounter++;
+
+ $decodeAnotherTime = false;
+
+ $string = preg_replace('/(\[hr\])/', '<hr />',$string);
+
+ $string = preg_replace_callback('/(\[\[)(.*?)\|(.*?)(\]\])/', 'linkToInternalPageWithText' ,$string);
+
+ $string = preg_replace_callback('/(\[\[)(.*?)(\]\])/', 'linkToInternalPage' ,$string);
+
+ $string = preg_replace_callback('/(\[a\])(.*?)(\[\/a\])/', 'linkTo',$string);
+
+ $string = preg_replace_callback('/(\[a\])(.*?)\|(.*?)(\[\/a\])/', 'linkToWithText',$string);
+
+ $string = preg_replace_callback('/(\[notebook\])([0-9]*?)(\[\/notebook\])/s', 'linkToNotebook',$string);
+
+ $string = preg_replace_callback('/(\[wifi\])([0-9]*?)(\[\/wifi\])/s', 'linkToWifi',$string);
+
+ $string = preg_replace_callback('/(\[videocard\])([0-9]*?)(\[\/videocard\])/s', 'linkToVideocard',$string);
+
+ $string = preg_replace('/(\[b\])(.*?)(\[\/b\])/s', '<b>${2}</b>',$string);
+
+ $string = preg_replace('/(\[u\])(.*?)(\[\/u\])/s', '<u>${2}</u>',$string);
+
+ $string = preg_replace('/(\[i\])(.*?)(\[\/i\])/s', '<i>${2}</i>',$string);
+
+ $string = preg_replace('/(\[del\])(.*?)(\[\/del\])/s', '<del>${2}</del>',$string);
+
+ $string = preg_replace_callback('/(\[\*\])(.*?)(\[\/\*\])/s', 'createItem',$string);
+
+ $string = preg_replace_callback('/(\[list\])(.*?)(\[\/list\])/s', 'createList',$string);
+
+ $string = preg_replace_callback('/(\[enum\])(.*?)(\[\/enum\])/s', 'createEnum',$string);
+
+ $string = preg_replace('/(\[code\])(.*?)(\[\/code\])/s', '<pre class="code_pre">${2}</pre>',$string);
+
+ $string = preg_replace('/(\[p\])(.*?)(\[\/p\])/s', '<p>${2}</p>',$string);
+
+ $string = preg_replace_callback('/(\[)(h)(1|2|3)(\])(.*?)(\[\/)(h)(1|2|3)(\])/s', 'createHeadGeneric',$string);
+
+ $string = preg_replace_callback('/(\[tab )(lang=)([^\s]+)(\s*\])(.*?)(\[\/tab\])/s', 'createTabs',$string);
+
+ $string = preg_replace_callback('/(__TOC__)/s', 'createToc',$string);
+
+ $string = preg_replace('/(\[lang\])(.*?)(\[\/lang\])/s', '<div class="div_lang">${2}</div>',$string);
+
+ $string = preg_replace('/(\{\{)/s', '[',$string);
+
+ $string = preg_replace('/(\}\})/s', ']',$string);
+
+ if ($decodeAnotherTime and $decodeCounter<=30)
+ {
+ return decodeWikiText(Tabs::render().$string);
+ }
+ else
+ {
+ return Tabs::render().$string;
+ }
+}
+
+//create the list of the tabs in the description entry
+function createTabs($match)
+{
+ $label = Lang::getLabel($match[3]);
+ Tabs::$tabList[] = "<li class='desc_tabs ".$match[3]."'><a href='#".$match[3]."'>".$label."</a></li>\n";
+ Tabs::$htmlList[] = "<div class='separation_line'>$label</div>\n<div class='description_tabs_page' id='".$match[3]."'>".$match[5]."</div>\n";
+ return null;
+}
+
+//create the HTML of the tabs in the description entry
+class Tabs
+{
+ public static $tabList = array();
+ public static $htmlList = array();
+
+ public static function render()
+ {
+ $html = null;
+ if (count(self::$tabList) > 0)
+ {
+ $html .= "<div class='description_tabs'>\n";
+ $html .= "<noscript><div class='noscript_notice'>".gtext("you need javascript enabled in order to correctly use the language's tabs (see below)")."</div></noscript>\n";
+ $html .= "<ul class='desc_menu'>\n";
+ foreach (self::$tabList as $label)
+ {
+ $html .= $label;
+ }
+ $html .= "</ul>\n<div id='description_tabs_content'>\n";
+ foreach (self::$htmlList as $content)
+ {
+ $html .= $content;
+ }
+ $html .= "</div>\n</div>\n";
+ }
+ self::$tabList = array();
+ self::$htmlList = array();
+ return $html;
+ }
+
+}
+
+function checkUrl($url)
+{
+ $match = '/^http(s)?\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)*\.([a-z]{2,4})((\/[a-zA-Z0-9\_\.\-\:\%\+]+)*(\/([a-zA-Z0-9\_\:\-\.\+]+\.(php|html|htm|asp|aspx|jsp|cgi))?)?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\%\+\&amp;]+)+)?(#[a-zA-Z0-9\_\-\+\s\%]+)?([\s]*)?$/';
+
+ if (preg_match($match,$url))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+function vitalizeUrl($string)
+{
+ if (checkUrl($string))
+ {
+ return "<a title = '".$string."' href='".$string."'>".$string."</a>";
+ }
+ return $string;
+}
+
+function linkTo($match)
+{
+ if (checkUrl($match[2]))
+ {
+ return "<a title = '".$match[2]."' href='".$match[2]."'>".$match[2]."</a>";
+ }
+ else
+ {
+ return $match[0];
+ }
+}
+
+function createNode($match,$hnodeTag,$htmlTagBegin,$htmlTagEng)
+{
+ $numb = strlen($hnodeTag);
+ global $decodeAnotherTime;
+
+ if (strstr($match[2],$hnodeTag))
+ {
+ $string = substr($match[0],$numb);
+ $string = decodeWikiText($string);
+ $decodeAnotherTime = true;
+ return $hnodeTag.$string;
+ }
+ else
+ {
+// $decodeAnotherTime = false;
+ return $htmlTagBegin.$match[2].$htmlTagEng;
+ }
+}
+
+function createToc($match)
+{
+ return Toc::render();
+}
+
+//table of contents
+class Toc
+{
+
+ public static $links = array();
+ public static $level = 1;
+
+ private static $html = null;
+
+ public function render()
+ {
+ $c=0;
+ foreach (self::$links as $link)
+ {
+ if ((int)substr($link,0,1) === 1)
+ {
+ break;
+ }
+ $c++;
+ }
+
+ self::$links = array_slice(self::$links,$c);
+
+ $res = array();
+
+ if (count(self::$links) > 0)
+ {
+ self::$links[] = '1fine';
+
+ $res[] = "<div class='tables_of_contents'><div class='tables_of_contents_title'>".gtext("Table of contents")."</div><ul>";
+ foreach (self::$links as $link)
+ {
+ $startChar = (int)substr($link,0,1);
+
+ if (strcmp(self::$level,$startChar) === 0)
+ {
+ $res[] = "<li><a href='#".substr($link,1)."'>".substr($link,1)."</a></li>";
+ }
+ else if ($startChar > self::$level)
+ {
+ $diff = (int)$startChar - (int)self::$level;
+ if ($diff !== 1)
+ {
+ return null;
+ }
+
+ self::$level = $startChar;
+ $res[] = "<ul><li><a href='#".substr($link,1)."'>".substr($link,1)."</a></li>";
+ }
+ else
+ {
+ $diff = (int)self::$level - (int)$startChar;
+
+ for ($i=0;$i<$diff;$i++)
+ {
+ $res[] = "</ul>";
+ }
+ self::$level = $startChar;
+ $res[] = "<li><a href='#".substr($link,1)."'>".substr($link,1)."</a></li>";
+ }
+ }
+ array_pop($res);
+ $res[] = "</ul></div>";
+ }
+ self::$links = array();
+ return implode('',$res);
+ }
+}
+
+//create h1, h2, h3 ($level=1,2,3)
+function createHead($match,$level)
+{
+ Toc::$links[] = $level.$match[5];
+
+ return "<div id='".$match[5]."' class='div_h$level'>".$match[5]."</div>";
+}
+
+//create <h1></h1>,<h2></h2>,<h3></h3>
+function createHeadGeneric($match)
+{
+ if (strcmp($match[3],'1') === 0)
+ {
+ return createHead($match,'1');
+ }
+ else if (strcmp($match[3],'2') === 0)
+ {
+ return createHead($match,'2');
+ }
+ else
+ {
+ return createHead($match,'3');
+ }
+}
+
+//create <li></li>
+function createItem($match)
+{
+ return createNode($match,'[*]',"<li>","</li>");
+}
+
+//create <ul></ul>
+function createList($match)
+{
+ return createNode($match,'[list]',"<ul>","</ul>");
+}
+
+//create <ol></ol>
+function createEnum($match)
+{
+ return createNode($match,'[enum]',"<ol>","</ol>");
+}
+
+function linkToInternalPage($match)
+{
+ return "<a title = '".$match[2]."' href='".Url::getRoot()."wiki/page/".Lang::$current."/".encodeUrl($match[2])."'>".$match[2]."</a>";
+}
+
+function linkToInternalPageWithText($match)
+{
+ return "<a title = '".$match[2]."' href='".Url::getRoot()."wiki/page/".Lang::$current."/".encodeUrl($match[2])."'>".$match[3]."</a>";
+}
+
+function linkToWithText($match)
+{
+ if (checkUrl($match[2]))
+ {
+
+ return "<a title = '".$match[2]."' href='".$match[2]."'>".$match[3]."</a>";
+ }
+ else
+ {
+ return $match[0];
+ }
+}
+
+//create the link to the wiki page of the notebook
+function linkToNotebook($match)
+{
+ $hardware = new HardwareModel();
+ $clean['id_hard'] = (int)$match[2];
+ $name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
+ $href = Url::getRoot()."notebooks/view/".Lang::$current."/".$clean['id_hard']."/$name";
+ return (strcmp($name,'') !== 0) ? "<a title = 'link to notebook $name: $href' href='$href'>".$name."</a>" : $match[0];
+}
+
+//create the link to the wiki page of the wifi
+function linkToWifi($match)
+{
+ $hardware = new HardwareModel();
+ $clean['id_hard'] = (int)$match[2];
+ $name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
+ $href = Url::getRoot()."wifi/view/".Lang::$current."/".$clean['id_hard']."/$name";
+ return (strcmp($name,'') !== 0) ? "<a title = 'link to wifi card $name: $href' href='$href'>".$name."</a>" : $match[0];
+}
+
+//create the link to the wiki page of the videocard
+function linkToVideocard($match)
+{
+ $hardware = new HardwareModel();
+ $clean['id_hard'] = (int)$match[2];
+ $name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
+ $href = Url::getRoot()."videocards/view/".Lang::$current."/".$clean['id_hard']."/$name";
+ return (strcmp($name,'') !== 0) ? "<a title = 'link to video card $name: $href' href='$href'>".$name."</a>" : $match[0];
+} \ No newline at end of file
diff --git a/Application/Models/AcquisitioncardsModel.php b/Application/Models/AcquisitioncardsModel.php
new file mode 100644
index 0000000..147aa94
--- /dev/null
+++ b/Application/Models/AcquisitioncardsModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class AcquisitioncardsModel extends GenericModel
+{
+
+ public $type = 'acquisition-card'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'compatibility' => 'compatibility',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'compatibility' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'compatibility' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/BaseModel.php b/Application/Models/BaseModel.php
new file mode 100644
index 0000000..2f3a142
--- /dev/null
+++ b/Application/Models/BaseModel.php
@@ -0,0 +1,43 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class BaseModel extends Model_Tree
+{
+
+ public function updateHistory($type)
+ {
+ $clean['created_by'] = (int)$this->values['created_by'];
+ $clean['last_id'] = (int)$this->lastId();
+
+ $history = new HistoryModel();
+ $history->values = array(
+ 'created_by' => $clean['created_by'],
+ 'type' => sanitizeAll($type),
+ 'action' => "insert",
+ 'id' => $clean['last_id'],
+ 'message' => '',
+ 'gr' => 'registered',
+ );
+ $history->insert();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/BluetoothModel.php b/Application/Models/BluetoothModel.php
new file mode 100644
index 0000000..022c889
--- /dev/null
+++ b/Application/Models/BluetoothModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class BluetoothModel extends GenericModel
+{
+
+ public $type = 'bluetooth'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'bluetooth_works' => 'bluetooth_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'bluetooth_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->createPopupWhere('vendor,bluetooth_works,comm_year,interface');
+
+ $this->setPopupFunctions();
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'bluetooth_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/BoxesModel.php b/Application/Models/BoxesModel.php
new file mode 100644
index 0000000..a6035cb
--- /dev/null
+++ b/Application/Models/BoxesModel.php
@@ -0,0 +1,42 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class BoxesModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'boxes';
+ $this->_idFields = 'id_box';
+
+ parent::__construct();
+ }
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'title' => array(),
+ 'message' => array('type'=>'Textarea'),
+ 'id_box' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+} \ No newline at end of file
diff --git a/Application/Models/DeletionModel.php b/Application/Models/DeletionModel.php
new file mode 100644
index 0000000..9b5dc1a
--- /dev/null
+++ b/Application/Models/DeletionModel.php
@@ -0,0 +1,53 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class DeletionModel extends Model_Tree
+{
+
+ public function __construct()
+ {
+ $this->_tables = 'deletion';
+ $this->_idFields = 'id_del';
+
+// $this->_where=array(
+// 'id_hard' => 'talk'
+// );
+//
+ $this->_popupItemNames = array(
+ 'object' => 'object',
+ );
+
+ $this->_popupLabels = array(
+ 'object' => 'OBJECT',
+ );
+//
+ $this->orderBy = 'deletion.id_del desc';
+
+ $this->strongConditions['insert'] = array(
+ "checkIsStrings|duplication,other" => 'object',
+ "+checkLength|500" => 'message'
+ );
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/DistrosModel.php b/Application/Models/DistrosModel.php
new file mode 100644
index 0000000..58cd435
--- /dev/null
+++ b/Application/Models/DistrosModel.php
@@ -0,0 +1,34 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class DistrosModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'distros';
+ $this->_idFields = 'id_distro';
+
+ $this->_idOrder = 'id_order';
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/EthernetcardsModel.php b/Application/Models/EthernetcardsModel.php
new file mode 100644
index 0000000..08dc997
--- /dev/null
+++ b/Application/Models/EthernetcardsModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class EthernetcardsModel extends GenericModel
+{
+
+ public $type = 'ethernet-card'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'ethernet_card_works' => 'ethernet_card_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'ethernet_card_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,ethernet_card_works,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'ethernet_card_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/FingerprintreadersModel.php b/Application/Models/FingerprintreadersModel.php
new file mode 100644
index 0000000..7a2f3e8
--- /dev/null
+++ b/Application/Models/FingerprintreadersModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class FingerprintreadersModel extends GenericModel
+{
+
+ public $type = 'fingerprint-reader'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'fingerprint_works' => 'fingerprint_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'fingerprint_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,fingerprint_works,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'fingerprint_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/GenericModel.php b/Application/Models/GenericModel.php
new file mode 100644
index 0000000..3a0f8fa
--- /dev/null
+++ b/Application/Models/GenericModel.php
@@ -0,0 +1,103 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class GenericModel extends Model_Tree {
+
+ public $type = ''; //device type
+ public $diffFields = array();
+ public $fieldsWithBreaks = array();
+
+ public function __construct() {
+ $this->_tables = 'hardware';
+ $this->_idFields = 'id_hard';
+
+ $this->_where=array(
+ 'type' => 'hardware',
+ 'vendor' => 'hardware',
+ 'compatibility' => 'hardware',
+ 'comm_year' => 'hardware',
+ );
+
+ $this->orderBy = 'hardware.id_hard desc';
+ parent::__construct();
+ }
+
+ public function checkType($id_hard = 0)
+ {
+ $clean['id_hard'] = (int)$id_hard;
+ $res = $this->db->select('hardware','type','id_hard='.$clean['id_hard']);
+ if (count($res) > 0)
+ {
+ return (strcmp($this->type,$res[0]['hardware']['type']) === 0 ) ? true : false;
+ }
+ return false;
+ }
+
+ public function getDiffArray($oldArray, $newArray)
+ {
+ return getDiffArray($this->diffFields, $oldArray, $newArray);
+ }
+
+ //create the $_popupWhere property
+ public function createPopupWhere($list)
+ {
+ $listArray = explode(',',$list);
+ foreach ($listArray as $field)
+ {
+ $this->_popupWhere[$field] = 'type="'.$this->type.'" and deleted="no" and cleared="no"';
+ }
+ }
+
+ //set the fuction to be applied upon each popup name
+ public function setPopupFunctions()
+ {
+ foreach ($this->_popupItemNames as $name => $field)
+ {
+ $this->_popupFunctions[$name] = getTranslationFunction($name);
+ }
+ }
+
+ //get the HTML of the popup labels
+ public function getPopupLabel($viewArgs)
+ {
+ $html = null;
+ $listArray = array('page','history_page','search_string');
+
+ $count = 0;
+
+ foreach ($viewArgs as $field => $value)
+ {
+ if ($count < 5)
+ {
+ if (!in_array($field,$listArray))
+ {
+ $value = call_user_func(getTranslationFunction($field),$value);
+ $html .= "<div class='viewall_popup_menu_status_item'>".$value."</div>\n";
+
+ $count++;
+ }
+ }
+ }
+ return $html;
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/HardwareModel.php b/Application/Models/HardwareModel.php
new file mode 100644
index 0000000..9c8a5db
--- /dev/null
+++ b/Application/Models/HardwareModel.php
@@ -0,0 +1,348 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HardwareModel extends Model_Map {
+
+ public $id_user = 0;
+ public $type = ''; //device type
+ public $lastId = 0; //the id of the last record inserted
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'deleted'=> array('type'=>'Select','options'=>'no,yes'),
+ 'id_hard' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+ public function __construct() {
+ $this->_tables='hardware,regusers,hardware_users';
+ $this->_idFields='id_hard,id_user';
+ $this->_where=array(
+ 'type' => 'hardware',
+ 'username' => 'regusers',
+ 'id_user' => 'regusers',
+ 'has_confirmed' => 'regusers',
+ 'deleted' => 'regusers',
+ '-deleted' => 'hardware'
+ );
+ $this->orderBy = 'hardware.id_hard desc';
+ $this->printAssError = "no";
+
+ $this->_popupItemNames = array(
+ 'type'=>'type',
+ 'ask_for_del'=>'ask_for_del',
+ '-deleted'=>'deleted',
+ );
+
+ $this->_popupLabels = array(
+ 'type'=>'TYPE',
+ 'ask_for_del'=>'ASK FOR DEL?',
+ '-deleted'=>'DELETED?',
+ );
+
+// $this->databaseConditions['insert'] = array(
+// 'checkUnique' => 'model',
+// );
+//
+// $this->databaseConditions['update'] = array(
+// 'checkUniqueCompl' => 'model',
+// );
+
+ parent::__construct();
+ }
+
+ //set the soft and strong conditions
+ public function setConditions($worksOptions,$worksField,$interfaceOptions)
+ {
+ $this->strongConditions['update'] = array(
+ "checkNotEmpty" => "model|you have to fill the <i>model name</i> entry",
+ "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the <i>model name</i> entry",
+ "+checkMatch|".Hardware::$regExpressions['vendorid_productid'] => "pci_id|<i>VendorID:ProductID</i> has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}",
+ "checkLength|190" => "model",
+ "+checkLength|299" => "distribution",
+ "++checkIsStrings|".Hardware::getCommYears() => "comm_year",
+ "+++checkIsStrings|".$worksOptions => $worksField,
+ "++++checkIsStrings|".$interfaceOptions => "interface",
+ );
+
+ $this->strongConditions['insert'] = $this->strongConditions['update'];
+
+ $this->softConditions['update'] = array(
+ "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the <i>kernel</i> entry",
+ "checkLength|40000" => "description",
+ "+checkLength|99" => "kernel",
+ "++checkLength|49" => "driver",
+ "++checkMatch|".Hardware::$regExpressions['driver'] => "driver|only the following characters are allowed for the <i>driver</i> entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]",
+ "+++checkLength|1000" => "other_names|the <i>other names</i> entry exceeds the value of 1000 characters",
+ );
+
+ $this->softConditions['insert'] = $this->softConditions['update'];
+ }
+
+ public function permanentlyDelete($id)
+ {
+ $clean['id'] = (int)$id;
+
+ $record = $this->selectId($clean['id']);
+
+ $this->values['deleted'] = 'no';
+ $this->values['approved'] = 'yes';
+ $this->values['pci_id'] = '';
+ $this->values['model'] = '[permanently deleted] '.$record['model'];
+
+ return parent::update($clean['id']);
+ }
+
+ public function pUpdate($id)
+ {
+ if (isset($this->values['approved']))
+ {
+ if (strcmp($this->values['approved'],'yes') === 0)
+ {
+ $this->values['deleted'] = 'no';
+ }
+ }
+ else if (isset($this->values['deleted']))
+ {
+ if (strcmp($this->values['deleted'],'no') === 0)
+ {
+ $this->values['approved'] = 'yes';
+ }
+ }
+ return parent::update($id);
+ }
+
+ public function insert()
+ {
+ $this->values['created_by'] = (int)$this->id_user;
+ $this->values['updated_by'] = (int)$this->id_user;
+ $this->values['update_date'] = date('Y-m-d H:i:s');
+
+ if ($this->values['created_by'] === 0)
+ {
+ $this->values['deleted'] = 'yes';
+ $this->values['approved'] = 'no';
+ }
+
+ //random ID
+ $randomId = md5(uniqid(mt_rand(),true));
+ $this->values["type"] = $randomId;
+
+ parent::insert();
+// echo $this->getQuery();
+ //associate the user to the record
+ if ($this->queryResult)
+ {
+ $resId = $this->db->select("hardware","id_hard","type='$randomId'");
+ $clean['id'] = $resId[0]['hardware']['id_hard'];
+ $this->lastId = $clean['id'];
+ $this->db->update('hardware','type',array($this->type),'id_hard='.$clean['id']);
+
+ //update the history table
+ $this->updateHistory('insert');
+
+ if ($this->values['created_by'] !== 0)
+ {
+ $this->associate($clean['id']);
+ }
+ }
+
+ }
+
+ public function update($id = null, $where = null)
+ {
+ $clean['id'] = (int)$id;
+
+ $this->values['updated_by'] = (int)$this->id_user;
+ $this->values['update_date'] = date('Y-m-d H:i:s');
+
+ //save the old fields in the revisions table
+ $this->setWhereQueryClause(array('id_hard' => $clean['id']));
+ $oldStruct = $this->getFields($this->fields.',vendor,created_by,updated_by,update_date,type,id_hard');
+
+ if (count($oldStruct > 0))
+ {
+ if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0)
+ {
+ $oldValues = $oldStruct[0]['hardware'];
+
+ $revisions = new RevisionsModel();
+ $revisions->values = $oldValues;
+ $revisions->sanitize();
+
+ if ($revisions->insert())
+ {
+ parent::update($clean['id']);
+ if ($this->queryResult)
+ {
+ $this->lastId = $clean['id'];
+
+ //update the history table
+ $this->updateHistory('update');
+
+ if (!$this->checkAssociation($clean['id'],(int)$this->id_user))
+ {
+ $this->associate($clean['id']);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public function makeCurrent($id_rev)
+ {
+ $clean['id_rev'] = (int)$id_rev;
+
+ $revisions = new RevisionsModel();
+
+ $clean['id_hard'] = (int)$revisions->getIdHard($clean['id_rev']);
+
+ //save the old fields in the revisions table
+ $this->setWhereQueryClause(array('id_hard'=>$clean['id_hard']));
+ $oldStruct = $this->getFields($this->fields.',vendor,created_by,updated_by,update_date,type,id_hard');
+
+ if (count($oldStruct > 0))
+ {
+ if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0)
+ {
+ //get the values of the revision
+ $revisions->setWhereQueryClause(array('id_rev'=>$clean['id_rev']));
+ $newStruct = $revisions->getFields($this->fields.',vendor,created_by,updated_by,update_date,type');
+
+ if (count($newStruct > 0))
+ {
+ $revisions->values = $oldStruct[0]['hardware'];
+ $revisions->sanitize();
+
+ $this->values = $newStruct[0]['revisions'];
+ $this->values['updated_by'] = (int)$this->id_user;
+ $this->values['update_date'] = date('Y-m-d H:i:s');
+
+ $this->sanitize();
+
+ if ($revisions->insert())
+ {
+ if (parent::update($clean['id_hard']))
+ {
+ $this->lastId = $clean['id_hard'];
+
+ //update the history table
+ $this->updateHistory('update');
+
+ if (!$this->checkAssociation($clean['id_hard'],(int)$this->id_user))
+ {
+ $this->associate($clean['id_hard']);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ $this->notice = "<div class='alert'>Wrong type..</div>\n";
+ }
+ }
+
+ }
+
+ public function associate($id_record = null, $idGroup = null)
+ {
+ return parent::associate((int)$id_record,(int)$this->id_user);
+ }
+
+ //get the model name
+ public function getTheModelName($id)
+ {
+ $clean['id'] = (int)$id;
+ $this->setWhereQueryClause(array('id_hard' => $clean['id']));
+ $res = $this->getFields('model');
+ $name = count($res) > 0 ? $res[0]['hardware']['model'] : '';
+ return $name;
+ }
+
+ //get the model info by the vendorid:productid code
+ public function getModelByCode($code)
+ {
+ $res = $this->clear()->where(array('pci_id'=>sanitizePciid($code)))->send();
+
+ if (count($res) > 0)
+ {
+ return $res[0]['hardware'];
+ }
+ return false;
+ }
+
+ //save in the history all the action carried out by users
+ protected function updateHistory($action)
+ {
+ $translations = array(
+ 'insert' => 'inserted',
+ 'update' => 'updated',
+ );
+
+ $allowedActions = array('insert','update');
+
+ if (in_array($action,$allowedActions))
+ {
+ $users = new UsersModel();
+
+ $clean['user'] = sanitizeAll($users->getUser($this->id_user));
+
+ $history = new HistoryModel();
+ $history->values = array(
+ 'created_by' => $this->id_user,
+ 'type' => 'hardware',
+ 'action' => $action,
+ 'id' => $this->lastId,
+ 'message' => 'The device having id='.$this->lastId.' has been '.$translations[$action].' by the user ' . $clean['user'] . ' (id_user='.$this->id_user.') ',
+ 'gr' => 'registered',
+ );
+ $history->insert();
+ }
+ }
+
+ public function isDeleted($id)
+ {
+ $clean['id'] = (int)$id;
+ $res = $this->select('hardware.deleted')->where(array('id_hard'=>$clean['id']))->send();
+ if ( count($res) > 0 )
+ {
+ return strcmp($res[0]['hardware']['deleted'],'no') === 0 ? false : true;
+ }
+ return false;
+ }
+
+ public function isCleared($id)
+ {
+ $clean['id'] = (int)$id;
+ $res = $this->select('hardware.cleared')->where(array('id_hard'=>$clean['id']))->send();
+ if ( count($res) > 0 )
+ {
+ return strcmp($res[0]['hardware']['cleared'],'no') === 0 ? false : true;
+ }
+ return false;
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/HistoryModel.php b/Application/Models/HistoryModel.php
new file mode 100644
index 0000000..d94f745
--- /dev/null
+++ b/Application/Models/HistoryModel.php
@@ -0,0 +1,56 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HistoryModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'history';
+ $this->_idFields = 'id_history';
+
+ $this->_where=array(
+ 'approved' => 'hardware',
+ 'deleted' => 'hardware',
+ 'cleared' => 'hardware',
+ 'username' => 'regusers',
+ );
+ $this->orderBy = 'history.id_history';
+
+ $this->_popupFunctions = array(
+ 'created_by'=> 'getUserName',
+ );
+
+ $this->_popupItemNames = array(
+ 'type' => 'type',
+ 'action' => 'action',
+ 'created_by'=> 'created_by',
+ );
+
+ $this->_popupLabels = array(
+ 'type' => 'TYPE',
+ 'action' => 'ACTION',
+ 'created_by'=> 'MODERATOR',
+ );
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/HostcontrollersModel.php b/Application/Models/HostcontrollersModel.php
new file mode 100644
index 0000000..8908052
--- /dev/null
+++ b/Application/Models/HostcontrollersModel.php
@@ -0,0 +1,69 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class HostcontrollersModel extends GenericModel
+{
+
+ public $type = 'host-controller'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'compatibility' => 'compatibility',
+ 'subtype' => 'subtype',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'compatibility' => gtext("does it work?"),
+ 'subtype' => gtext("subtype"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,subtype');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'subtype' => gtext('subtype')." (laser, inkjet, ..)",
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'compatibility' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/IssuesModel.php b/Application/Models/IssuesModel.php
new file mode 100644
index 0000000..9d6a4ef
--- /dev/null
+++ b/Application/Models/IssuesModel.php
@@ -0,0 +1,116 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class IssuesModel extends BaseModel {
+
+ public function __construct() {
+ $this->_tables = 'issues';
+ $this->_idFields = 'id_issue';
+
+ $this->_onDelete = 'nocheck';
+
+ $this->_where = array(
+ 'priority' => 'issues',
+ 'status' => 'issues',
+ 'topic' => 'issues',
+ );
+
+ $this->_popupItemNames = array(
+ 'priority' => 'priority',
+ 'status' => 'status',
+ 'topic' => 'topic',
+ 'deleted' => 'deleted',
+ );
+
+ $this->_popupLabels = array(
+ 'priority' => 'PRIORITY',
+ 'status' => 'STATUS',
+ 'topic' => 'TOPIC',
+ 'deleted' => 'DELETED?',
+ );
+
+ $this->orderBy = 'issues.id_issue desc';
+
+ $this->strongConditions['insert'] = array(
+ "checkLength|99" => 'title',
+ "+checkLength|34" => 'topic',
+ "++checkLength|15" => 'priority',
+ "+++checkLength|5000" => 'message',
+ "checkisStrings|low,medium,high" => 'priority',
+ "+checkisStrings|maybe-a-bug,new-categories-of-hardware,add-a-vendor-name,other" => 'topic',
+ );
+
+ $this->formStruct = array(
+ 'entries' => array(
+ 'title' => array('labelString' => gtext("TITLE").':'),
+ 'topic' => array(
+ 'type'=>'Select',
+ 'options'=>array(
+ 'Add a vendor name' => 'add-a-vendor-name',
+ 'Maybe a bug' => 'maybe-a-bug',
+ 'Add new categories of hardware' => 'new-categories-of-hardware',
+ 'Other' => 'other'
+ ),
+ 'labelString' => gtext("TOPIC").':',
+ ),
+ 'deleted'=> array(
+ 'type' => 'Select',
+ 'options' => 'no,yes',
+ ),
+ 'priority' => array(
+ 'type'=>'Select',
+ 'options'=>'low,medium,high',
+ 'labelString' => gtext("PRIORITY").':',
+ ),
+ 'message' => array('type'=>'Textarea','idName'=>'bb_code','labelString' => gtext("MESSAGE").':',),
+ 'status' => array(
+ 'type' => 'Select',
+ 'options' => 'opened,closed'
+ ),
+ 'notice' => array(
+ 'type' => 'Textarea',
+ 'idName' => 'bb_code_notice',
+ ),
+ 'id_issue' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+ parent::__construct();
+ }
+
+ public function pUpdate($id)
+ {
+ return parent::update($id);
+ }
+
+ public function insert()
+ {
+ if (parent::insert())
+ {
+ //update the history
+ $this->updateHistory('issue_ins');
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/MessagesModel.php b/Application/Models/MessagesModel.php
new file mode 100644
index 0000000..b36e76e
--- /dev/null
+++ b/Application/Models/MessagesModel.php
@@ -0,0 +1,73 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class MessagesModel extends BaseModel {
+
+ public function __construct() {
+ $this->_tables = 'messages';
+ $this->_idFields = 'id_mes';
+
+ $this->orderBy = 'messages.id_mes';
+
+ $this->_popupItemNames = array(
+ 'deleted' => 'deleted',
+ 'has_read' => 'has_read',
+ );
+
+ $this->_popupLabels = array(
+ 'deleted' => 'DELETED?',
+ 'has_read' => 'ALREADY READ?',
+ );
+
+ $this->strongConditions['insert'] = array(
+ "checkLength|5000" => 'message',
+ );
+
+ parent::__construct();
+ }
+
+ public function pUpdate($id)
+ {
+ return parent::update($id);
+ }
+
+ public function insert()
+ {
+ if (parent::insert())
+ {
+ //update the history
+ $this->updateHistory('message_ins');
+ }
+ }
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'deleted' => array('type'=>'Select','options'=>'no,yes'),
+ 'has_read' => array('type'=>'Select','options'=>'no,yes'),
+ 'message' => array('type'=>'Textarea','idName'=>'bb_code'),
+ 'id_mes' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+} \ No newline at end of file
diff --git a/Application/Models/ModemsModel.php b/Application/Models/ModemsModel.php
new file mode 100644
index 0000000..92571d2
--- /dev/null
+++ b/Application/Models/ModemsModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ModemsModel extends GenericModel
+{
+
+ public $type = 'modem'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'compatibility' => 'compatibility',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'compatibility' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'compatibility' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/NewsModel.php b/Application/Models/NewsModel.php
new file mode 100644
index 0000000..cab1641
--- /dev/null
+++ b/Application/Models/NewsModel.php
@@ -0,0 +1,44 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class NewsModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'news';
+ $this->_idFields = 'id_news';
+
+ $this->orderBy = 'news.id_news desc';
+
+ parent::__construct();
+ }
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'title' => array(),
+ 'message' => array('type'=>'Textarea','idName'=>'bb_code'),
+ 'id_news' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+} \ No newline at end of file
diff --git a/Application/Models/NotebooksModel.php b/Application/Models/NotebooksModel.php
new file mode 100644
index 0000000..d9b9008
--- /dev/null
+++ b/Application/Models/NotebooksModel.php
@@ -0,0 +1,94 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class NotebooksModel extends GenericModel {
+
+ public $type = 'notebook'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'compatibility' => 'compatibility',
+ 'comm_year' => 'comm_year',
+ 'subtype' => 'subtype',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'compatibility' => gtext("compatibility"),
+ 'comm_year' => gtext("year"),
+ 'subtype' => gtext("subtype"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,subtype');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'subtype' => gtext('subtype (notebook or netbook)'),
+ 'architecture' => gtext('architecture'),
+ 'bios' => gtext('does it have a free bios?'),
+ 'can_free_systems_be_installed' => gtext('can free operating systems be installed?'),
+ 'prevent_wifi' => gtext('does the device prevent the installation of wifi cards not-approved by the vendor?'),
+ 'comm_year' => gtext('year of commercialization'),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'compatibility' => gtext('compatibility with free software'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'video_card_type' => gtext('video card model'),
+ 'video_card_works' => gtext('does the video card work?'),
+ 'wifi_type' => gtext('wifi model'),
+ 'wifi_works' => gtext('does the wifi card work?'),
+ 'webcam_type' => gtext('webcam model'),
+ 'webcam_works' => gtext('does the webcam work?'),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'));
+
+ parent::__construct();
+ }
+
+ public function morePopups()
+ {
+ $this->_popupItemNames = array(
+ 'bios' => 'bios',
+ 'architecture' => 'architecture',
+ );
+
+ $this->_popupLabels = array(
+ 'bios' => gtext("free boot firmware?"),
+ 'architecture' => gtext("architecture"),
+ );
+
+ $this->_popupFunctions = array(
+ 'architecture' => 'translate_and_gtext',
+ 'bios' => 'translate_and_gtext',
+ );
+
+ $this->createPopupWhere('bios,architecture');
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/ParamsModel.php b/Application/Models/ParamsModel.php
new file mode 100644
index 0000000..cea99a1
--- /dev/null
+++ b/Application/Models/ParamsModel.php
@@ -0,0 +1,43 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ParamsModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'params';
+ $this->_idFields = 'id_par';
+
+ parent::__construct();
+ }
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'updating' => array(
+ 'type'=>'Select',
+ 'options'=>'no,yes',
+ ),
+ 'id_par' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+} \ No newline at end of file
diff --git a/Application/Models/PrintersModel.php b/Application/Models/PrintersModel.php
new file mode 100644
index 0000000..355bb67
--- /dev/null
+++ b/Application/Models/PrintersModel.php
@@ -0,0 +1,70 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class PrintersModel extends GenericModel
+{
+
+ public $type = 'printer'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'compatibility' => 'compatibility',
+ 'comm_year' => 'comm_year',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'compatibility' => gtext("compatibility"),
+ 'comm_year' => gtext("year"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'subtype' => gtext('subtype')." (laser, inkjet, ..)",
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'compatibility' => gtext('compatibility with free software'),
+ 'it_tracks_users' => gtext('does it adopt any techniques to track users?'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/ProfileModel.php b/Application/Models/ProfileModel.php
new file mode 100644
index 0000000..c8818b4
--- /dev/null
+++ b/Application/Models/ProfileModel.php
@@ -0,0 +1,78 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ProfileModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'profile';
+ $this->_idFields = 'id_prof';
+
+ $this->_where=array(
+ 'username' => 'regusers',
+ 'has_confirmed' => 'regusers',
+ 'deleted' => 'regusers'
+ );
+
+ $this->softConditions['update'] = array(
+ "checkLength|90" => "real_name,where_you_are,fav_distro,birth_date,website|the fields 'real name', 'where_you_are', 'favorite distro', 'website' and 'birthdate' don't have to have more than 90 characters",
+ "checkLength|1000" => "projects,description|the fields 'projects' and 'description' don't have to have more than 1000 characters",
+ "checkIsStrings|no,yes" => "publish_mail",
+ "+checkIsStrings|no,yes" => "send_notification"
+ );
+
+ parent::__construct();
+ }
+
+ public $formStruct = array(
+
+ 'entries' => array(
+ 'real_name' => array('labelString'=>'Your real name'),
+ 'website' => array('labelString'=>'Your website address (add http://)'),
+ 'where_you_are' => array('labelString'=>'I\'m from...'),
+ 'birth_date' => array('labelString'=>'My birthdate'),
+ 'fav_distro' => array('labelString'=>'My favourite distribution'),
+ 'projects' => array(
+ 'type' => 'Textarea',
+ 'labelString'=>'Free software projects I\'m working on'
+ ),
+ 'publish_mail' => array(
+ 'type' => 'Select',
+ 'options' => 'no,yes',
+ 'labelString'=> 'Would you like to publish your e-mail address?'
+ ),
+ 'send_notification' => array(
+ 'type' => 'Select',
+ 'options' => 'yes,no',
+ 'labelString'=> 'Would you like to receive mail notifications?'
+ ),
+ 'description' => array(
+ 'type' => 'Textarea',
+ 'labelString'=> 'Your description'
+ ),
+ 'id_prof' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+
+ );
+
+} \ No newline at end of file
diff --git a/Application/Models/RaidadaptersModel.php b/Application/Models/RaidadaptersModel.php
new file mode 100644
index 0000000..2e140e8
--- /dev/null
+++ b/Application/Models/RaidadaptersModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class RaidadaptersModel extends GenericModel
+{
+
+ public $type = 'RAID-adapter'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'compatibility' => 'compatibility',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'compatibility' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'compatibility' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/RevisionsModel.php b/Application/Models/RevisionsModel.php
new file mode 100644
index 0000000..fd56db7
--- /dev/null
+++ b/Application/Models/RevisionsModel.php
@@ -0,0 +1,50 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class RevisionsModel extends Model_Tree {
+
+ public $id_user = 0;
+ public $type = ''; //device type
+
+ public function __construct() {
+ $this->_tables='revisions';
+ $this->_idFields='id_rev';
+
+ $this->_where=array(
+ 'id_hard'=>'revisions'
+ );
+
+ $this->orderBy = 'id_rev desc';
+
+ parent::__construct();
+ }
+
+ public function getIdHard($id_rev = 0)
+ {
+ $clean['id_rev'] = (int)$id_rev;
+
+ $res = $this->db->select('revisions','id_hard','id_rev='.$clean['id_rev']);
+
+ return (count($res) > 0) ? $res[0]['revisions']['id_hard'] : 0;
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/ScannersModel.php b/Application/Models/ScannersModel.php
new file mode 100644
index 0000000..4710503
--- /dev/null
+++ b/Application/Models/ScannersModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ScannersModel extends GenericModel
+{
+
+ public $type = 'scanner'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'compatibility' => 'compatibility',
+ 'comm_year' => 'comm_year',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'compatibility' => gtext("compatibility"),
+ 'comm_year' => gtext("year"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->createPopupWhere('vendor,compatibility,comm_year,interface');
+
+ $this->setPopupFunctions();
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'compatibility' => gtext('compatibility with free software'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/SdcardreadersModel.php b/Application/Models/SdcardreadersModel.php
new file mode 100644
index 0000000..85950a5
--- /dev/null
+++ b/Application/Models/SdcardreadersModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class SdcardreadersModel extends GenericModel
+{
+
+ public $type = 'sd-card-reader'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'sd_card_works' => 'sd_card_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'sd_card_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,sd_card_works,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'sd_card_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/SoundcardsModel.php b/Application/Models/SoundcardsModel.php
new file mode 100644
index 0000000..7137d79
--- /dev/null
+++ b/Application/Models/SoundcardsModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class SoundcardsModel extends GenericModel
+{
+
+ public $type = 'soundcard'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'sound_card_works' => 'sound_card_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'sound_card_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,sound_card_works,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'sound_card_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/TalkModel.php b/Application/Models/TalkModel.php
new file mode 100644
index 0000000..1d15ab7
--- /dev/null
+++ b/Application/Models/TalkModel.php
@@ -0,0 +1,116 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class TalkModel extends BaseModel {
+
+ public function __construct() {
+ $this->_tables = 'talk';
+ $this->_idFields = 'id_talk';
+
+ $this->_where=array(
+ 'id_hard' => 'talk',
+ 'has_confirmed' => 'regusers',
+ '-deleted' => 'regusers',
+ );
+
+ $this->orderBy = 'talk.id_talk desc';
+
+ $this->strongConditions['insert'] = array(
+ "checkLength|99" => 'title',
+ "+checkNotEmpty" => 'message',
+ "++checkLength|5000" => 'message',
+ );
+
+ parent::__construct();
+ }
+
+ public function pUpdate($id)
+ {
+ return parent::update($id);
+ }
+
+ public function insert()
+ {
+ if (parent::insert())
+ {
+ //update the history
+ $this->updateHistory('talk_ins');
+
+ if (strcmp($this->values['id_hard'],0) !== 0)
+ {
+ $clean['id_hard'] = (int)$this->values['id_hard'];
+ $clean['created_by'] = (int)$this->values['created_by'];
+
+ $hard = new HardwareModel();
+ $users = $hard->select('username,e_mail')
+ ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'deleted'=>'no'))
+ ->toList('regusers.username','regusers.e_mail')
+ ->send('Boxes');
+
+ $talkUsers = $this->select('username,e_mail')
+ ->from('talk inner join regusers')
+ ->on('talk.created_by = regusers.id_user')
+ ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'-deleted'=>'no'))
+ ->toList('regusers.username','regusers.e_mail')
+ ->send();
+
+ $allUsers = array_merge($users,$talkUsers);
+
+ $userObj = new UsersModel();
+ $myName = $userObj->getUser($clean['created_by']);
+
+ $arrayE = new ArrayExt();
+ $fusers = $arrayE->subsetComplementary($allUsers,$myName);
+
+ //remove users that do not want the email notification
+ $inString = "'".implode("','",array_keys($fusers))."'";
+ $profile = new ProfileModel();
+ $ffusers = $profile->select('username,e_mail')
+ ->from('regusers inner join profile')
+ ->on('regusers.id_user = profile.created_by')
+ ->where(array('send_notification'=>'yes','username'=>"in($inString)"))
+ ->toList('regusers.username','regusers.e_mail')
+ ->send();
+
+ $ffusers = array_flip($ffusers);
+
+ //send the notice
+ Account::sendTalkNotice($myName,$ffusers,$clean['id_hard']);
+
+ $domainName = rtrim(Url::getRoot(),"/");
+ header('Refresh: 0;url='.$domainName.$_SERVER['REQUEST_URI']);
+ exit;
+ }
+ }
+ }
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'title' => array(),
+ 'message' => array('type'=>'Textarea'),
+ 'id_talk' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+} \ No newline at end of file
diff --git a/Application/Models/ThreegcardsModel.php b/Application/Models/ThreegcardsModel.php
new file mode 100644
index 0000000..88ae580
--- /dev/null
+++ b/Application/Models/ThreegcardsModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class ThreegcardsModel extends GenericModel
+{
+
+ public $type = '3G-card'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'wifi_works' => 'wifi_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'wifi_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,wifi_works,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'wifi_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/UsersModel.php b/Application/Models/UsersModel.php
new file mode 100755
index 0000000..e666e36
--- /dev/null
+++ b/Application/Models/UsersModel.php
@@ -0,0 +1,295 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class UsersModel extends Model_Map
+{
+
+ public static $usersList = array();
+
+ public function __construct()
+ {
+ $this->_tables='regusers,reggroups,regusers_groups';
+ $this->_idFields='id_user,id_group';
+
+ $this->_where=array(
+ 'id_group' => 'reggroups',
+ 'id_user' => 'regusers',
+ 'name' => 'reggroups',
+ 'confirmation_token'=> 'regusers',
+ 'has_confirmed' => 'regusers',
+ 'deleted' => 'regusers',
+ 'forgot_token' => 'regusers'
+ );
+
+ $this->_popupItemNames = array(
+ 'has_confirmed'=>'has_confirmed',
+ 'deleted'=>'deleted',
+ 'id_group'=>'name',
+ );
+
+ $this->_popupLabels = array(
+ 'has_confirmed'=>'HAS CONFIRMED?',
+ 'deleted'=>'DELETED?',
+ 'id_group'=>'GROUP'
+ );
+
+ $this->orderBy = 'regusers.id_user desc';
+
+ parent::__construct();
+
+ $this->deleteNotRegistered();
+ }
+
+ public function pUpdate($id)
+ {
+ return parent::update($id);
+ }
+
+ public function deleteNotRegistered()
+ {
+ $limit = time() - Account::$confirmTime;
+ $this->db->del('regusers','has_confirmed = 1 and deleted = "no" and creation_time < '.$limit);
+ }
+
+ public function getUser($id_user = 0)
+ {
+ $clean['id_user'] = (int)$id_user;
+ if (array_key_exists($clean['id_user'],self::$usersList))
+ {
+ return self::$usersList[$clean['id_user']];
+ }
+ else
+ {
+ $user = $this->db->select('regusers','username,has_confirmed','id_user='.$clean['id_user']);
+ if (count($user) > 0)
+ {
+ $fuser = (strcmp($user[0]['regusers']['has_confirmed'],0) === 0) ? $user[0]['regusers']['username'] : "__".$user[0]['regusers']['username'];
+ self::$usersList[$clean['id_user']] = $fuser;
+ return $fuser;
+ }
+ else
+ {
+ return "<i>__anonymous__</i>";
+ }
+ }
+ }
+
+ public function getLinkToUser($user)
+ {
+ if (strstr($user,'__'))
+ {
+ return $user;
+// return str_replace('__',null,$user);
+ }
+ else
+ {
+ return "<a href='".Url::getRoot()."meet/user/".Lang::$current."/$user'>$user</a>";
+ }
+ }
+
+ public function getLinkToUserFromId($id_user = 0)
+ {
+ $clean['id_user'] = (int)$id_user;
+ return $this->getLinkToUser($this->getUser($clean['id_user']));
+ }
+
+ //check if the user exists
+ public function userExists($user)
+ {
+ $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : '';
+
+ if (strcmp($clean['user'],'') !== 0)
+ {
+ $res = $this->where(array("username"=>$clean['user'],"has_confirmed"=>"0","deleted"=>"no"))->send();
+// $res = $this->db->select('regusers','has_confirmed','username="'.$clean['user'].'" and has_confirmed=0 and deleted="no"');
+
+ if (count($res) > 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ //get the user id from the username
+ public function getUserId($username = '')
+ {
+ $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : '';
+
+ $users = $this->select('id_user')->where(array('username'=>$clean['username'],'has_confirmed'=>0,'deleted'=>'no'))->send();
+ if (count($users) > 0)
+ {
+ return $users[0]['regusers']['id_user'];
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public function isBlocked($idUser)
+ {
+ $clean['id_user'] = (int)$idUser;
+
+ $res = $this->select('blocked')->where(array('id_user'=>$clean['id_user'],'has_confirmed'=>0,'deleted'=>'no'))->toList('blocked')->send();
+
+ if (count($res) > 0)
+ {
+ return strcmp($res[0],'yes') === 0 ? true : false;
+ }
+
+ return true;
+ }
+
+ public function insert()
+ {
+ //create the token
+ $confirmation_token = md5(randString(20));
+ $this->values['confirmation_token'] = $confirmation_token;
+ //has_confirmed flag
+ $this->values['has_confirmed'] = 1;
+ $this->values['creation_time'] = time();
+
+ //random ID
+ $randomId = md5(randString(5).uniqid(mt_rand(),true));
+ $this->values["temp_field"] = $randomId;
+
+ if (isset($_POST['captcha']))
+ {
+ if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 )
+ {
+
+ parent::insert();
+
+ if ($this->queryResult)
+ {
+ $resId = $this->db->select("regusers","id_user","temp_field='$randomId'");
+ $clean['id_user'] = $resId[0]['regusers']['id_user'];
+ $this->db->update("regusers",'temp_field',array(''),'id_user='.$clean['id_user']);
+
+ $result = Account::confirm($this->values['username'],$this->values['e_mail'],$clean['id_user'],$confirmation_token);
+
+ if ($result)
+ {
+ $_SESSION['status'] = 'sent';
+ }
+ else
+ {
+ $_SESSION['status'] = 'regerror';
+ }
+
+ $hed = new HeaderObj(DOMAIN_NAME);
+ $hed->redirect('users/notice/'.Lang::$current);
+ }
+
+ }
+ else
+ {
+ $this->result = false;
+ $this->queryResult = false;
+ $this->notice = "<div class='alert'>Wrong captcha code...</div>\n";
+ }
+ }
+ }
+
+ public function close($id_user)
+ {
+ $clean['id_user'] = (int)$id_user;
+
+ $this->values = array(
+ 'has_confirmed' => 1,
+ 'deleted' => 'yes',
+ 'e_mail' => ''
+ );
+
+ if ($this->update($clean['id_user']))
+ {
+ $_SESSION['status'] = 'deleted';
+
+ $profile = new ProfileModel();
+ $res = $profile->db->select('profile','id_prof','created_by='.$clean['id_user']);
+
+ if (count($res) > 0)
+ {
+ $clean['id_prof'] = (int)$res[0]['profile']['id_prof'];
+ $profile->values = array(
+ 'real_name' => '',
+ 'where_you_are' => '',
+ 'birth_date' => '',
+ 'fav_distro' => '',
+ 'projects' => '',
+ 'description' => ''
+ );
+ $profile->update($clean['id_prof']);
+ }
+ }
+
+ }
+
+ public function forgot($username)
+ {
+ $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : '';
+
+ if (isset($_POST['captcha']))
+ {
+ if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 )
+ {
+ $res = $this->db->select('regusers','e_mail,id_user','username="'.$clean['username'].'" and has_confirmed = 0 and deleted = "no"');
+ if (count($res) > 0)
+ {
+ $e_mail = $res[0]['regusers']['e_mail'];
+ $id_user = (int)$res[0]['regusers']['id_user'];
+ $forgot_token = md5(randString(20));
+ $forgot_time = time();
+ $updateArray = array($forgot_token, $forgot_time);
+ $this->db->update('regusers','forgot_token,forgot_time',$updateArray,'username="'.$clean['username'].'"');
+
+ $result = Account::sendnew($clean['username'],$e_mail,$id_user,$forgot_token);
+
+ if ($result)
+ {
+ $_SESSION['status'] = 'sent_new';
+ }
+ else
+ {
+ $_SESSION['status'] = 'sent_new_error';
+ }
+
+ $hed = new HeaderObj(DOMAIN_NAME);
+ $hed->redirect('users/notice/'.Lang::$current,1);
+
+ }
+ else
+ {
+ $this->notice = "<div class='alert'>the user does not exist</div>\n";
+ }
+ }
+ else
+ {
+ $this->result = false;
+ $this->queryResult = false;
+ $this->notice = "<div class='alert'>Wrong captcha code...</div>\n";
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/VendorsModel.php b/Application/Models/VendorsModel.php
new file mode 100644
index 0000000..0b06d52
--- /dev/null
+++ b/Application/Models/VendorsModel.php
@@ -0,0 +1,82 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class VendorsModel extends Model_Tree {
+
+ public function __construct() {
+ $this->_tables = 'vendors';
+ $this->_idFields = 'id_vendor';
+
+ parent::__construct();
+ }
+
+ public function check($id,$interface = 'USB')
+ {
+ if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$id))
+ {
+ $clean['bus'] = strcmp($interface,'USB') === 0 ? "USB" : "PCI";
+
+ $temp = explode(':',$id);
+ $clean['vendorId'] = sanitizeAlphanum($temp[0]);
+
+ $number = $this->clear()->where(array("vendorid" => $clean['vendorId'], "bus" => $clean['bus']))->rowNumber();
+
+ if ($number > 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public function getName($id,$interface)
+ {
+ if ($this->check($id,$interface))
+ {
+ $clean['bus'] = strcmp($interface,'USB') === 0 ? "USB" : "PCI";
+
+ $temp = explode(':',$id);
+ $clean['vendorId'] = sanitizeAlphanum($temp[0]);
+
+ $res = $this->clear()->where(array("vendorid" => $clean['vendorId'], "bus" => $clean['bus']))->send();
+
+ if (count($res) > 0)
+ {
+ return $res[0]['vendors']['clean_name'];
+ }
+ }
+ return 'not-known';
+ }
+
+ public function getFullName($name)
+ {
+ $clean['name'] = sanitizeAll($name);
+
+ $res = $this->clear()->where(array("clean_name" => $clean['name']))->send();
+
+ if (count($res) > 0)
+ {
+ return $res[0]['vendors']['full_name'];
+ }
+ return $clean['name'];
+ }
+} \ No newline at end of file
diff --git a/Application/Models/VideocardsModel.php b/Application/Models/VideocardsModel.php
new file mode 100644
index 0000000..961340e
--- /dev/null
+++ b/Application/Models/VideocardsModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class VideocardsModel extends GenericModel
+{
+
+ public $type = 'videocard'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'video_card_works' => 'video_card_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'video_card_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->createPopupWhere('vendor,video_card_works,comm_year,interface');
+
+ $this->setPopupFunctions();
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'video_card_works' => gtext("how does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/WebcamsModel.php b/Application/Models/WebcamsModel.php
new file mode 100644
index 0000000..0942bcb
--- /dev/null
+++ b/Application/Models/WebcamsModel.php
@@ -0,0 +1,72 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WebcamsModel extends GenericModel
+{
+
+ public $type = 'webcam'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'webcam_works' => 'webcam_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'webcam_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->_popupFunctions = array(
+ 'vendor' => 'betterVendor',
+ );
+
+ $this->createPopupWhere('vendor,webcam_works,comm_year,interface');
+
+ $this->setPopupFunctions();
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'webcam_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/WifiModel.php b/Application/Models/WifiModel.php
new file mode 100644
index 0000000..0b6d6c2
--- /dev/null
+++ b/Application/Models/WifiModel.php
@@ -0,0 +1,68 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WifiModel extends GenericModel
+{
+
+ public $type = 'wifi'; //device type
+
+ public function __construct()
+ {
+
+ $this->_popupItemNames = array(
+ 'vendor' => 'vendor',
+ 'comm_year' => 'comm_year',
+ 'wifi_works' => 'wifi_works',
+ 'interface' => 'interface',
+ );
+
+ $this->_popupLabels = array(
+ 'vendor' => gtext("vendor"),
+ 'comm_year' => gtext("year"),
+ 'wifi_works' => gtext("does it work?"),
+ 'interface' => gtext("interface"),
+ );
+
+ $this->setPopupFunctions();
+
+ $this->createPopupWhere('vendor,wifi_works,comm_year,interface');
+
+ $this->diffFields = array(
+ 'vendor' => gtext("vendor"),
+ 'model' => gtext('model name'),
+ 'other_names' => gtext('possible other names of the device'),
+ 'pci_id' => gtext("VendorID:ProductID code of the device"),
+ 'comm_year' => gtext('year of commercialization'),
+ 'interface' => gtext("interface"),
+ 'distribution' => gtext('GNU/Linux distribution used for the test'),
+ 'kernel' => gtext('tested with the following kernel libre'),
+ 'wifi_works' => gtext("does it work with free software?"),
+ 'driver' => gtext("free driver used"),
+ 'description' => gtext('Description'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device'));
+
+ parent::__construct();
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/WikiModel.php b/Application/Models/WikiModel.php
new file mode 100644
index 0000000..bb60b66
--- /dev/null
+++ b/Application/Models/WikiModel.php
@@ -0,0 +1,319 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WikiModel extends Model_Map {
+
+ public $id_user = 0;
+ public $lastId = 0; //the id of the last record inserted
+ public $lastTitle = null; //the title of the last page inserted
+ public $lastTitleClean = null; //the cleaned title of the last page inserted
+
+ public $diffFields = array();
+ public $fieldsWithBreaks = array();
+
+ public function __construct() {
+ $this->_tables='wiki,regusers,wiki_users';
+ $this->_idFields='id_wiki,id_user';
+ $this->_where=array(
+ 'username' => 'regusers',
+ 'id_user' => 'regusers',
+ 'has_confirmed' => 'regusers',
+ 'deleted' => 'regusers',
+ '-deleted' => 'wiki',
+ '-blocked' => 'wiki',
+ );
+
+ $this->printAssError = "no";
+
+ $this->diffFields = array(
+ 'title' => gtext("the title"),
+ 'page' => gtext('the text of the wiki page'),
+ );
+
+ $this->fieldsWithBreaks = array(gtext('the text of the wiki page'));
+
+ $this->strongConditions['insert'] = array(
+ "checkNotEmpty" => 'title',
+ "checkLength|99" => 'title|'.gtext('title is too long'),
+ "+checkNotEmpty" => 'page',
+ "+checkLength|49900" => 'page|'.gtext('the page text is too long'),
+ );
+
+ $this->strongConditions['update'] = array(
+ "checkNotEmpty" => 'title',
+ "checkLength|99" => 'title|'.gtext('title is too long'),
+ "+checkNotEmpty" => 'page',
+ "+checkLength|49900" => 'page|'.gtext('the page text is too long'),
+ );
+
+ $this->databaseConditions['insert'] = array(
+ "checkUnique" => 'title|'.gtext('a page with the same title already exists'),
+ );
+
+ $this->databaseConditions['update'] = array(
+ "checkUniqueCompl" => 'title|'.gtext('a page with the same title already exists'),
+ );
+
+ parent::__construct();
+ }
+
+ public function pUpdate($id)
+ {
+ return parent::update($id);
+ }
+
+ public function insert()
+ {
+ $this->values['created_by'] = (int)$this->id_user;
+ $this->values['update_date'] = date('Y-m-d H:i:s');
+
+ //random ID
+ $randomId = md5(uniqid(mt_rand(),true));
+ $this->values["title_clean"] = $randomId;
+
+ parent::insert();
+
+ //associate the user to the record
+ if ($this->queryResult)
+ {
+ $resId = $this->select()->where(array('title_clean'=>$randomId))->send();
+ $clean['id'] = $resId[0]['wiki']['id_wiki'];
+ $this->lastId = $clean['id'];
+ $this->lastTitle = $resId[0]['wiki']['title'];
+ $this->lastTitleClean = titleForRedirect($resId[0]['wiki']['title']);
+ $this->db->update('wiki','title_clean',array(encodeUrl(sanitizeDb($resId[0]['wiki']['title']))),'id_wiki='.$clean['id']);
+
+ //update the history table
+ $this->updateHistory('insert');
+
+ $this->associate($clean['id']);
+ }
+
+ }
+
+ public function update($id = null, $where = null)
+ {
+ $clean['id'] = (int)$id;
+
+ $this->values['created_by'] = (int)$this->id_user;
+ $this->values['update_date'] = date('Y-m-d H:i:s');
+ $this->values['title_clean'] = encodeUrl($this->values['title']);
+
+ //save the old fields in the revisions table
+ $this->setWhereQueryClause(array('id_wiki' => $clean['id']));
+ $oldStruct = $this->getFields($this->fields.',title_clean,created_by,update_date,id_wiki');
+
+ if (count($oldStruct > 0))
+ {
+ $oldValues = $oldStruct[0]['wiki'];
+
+ $revisions = new WikirevisionsModel();
+ $revisions->values = $oldValues;
+
+ $revisions->sanitize();
+
+ if ($revisions->insert())
+ {
+
+ if ($this->isMain($clean['id']))
+ {
+ $this->values['title'] = 'Main Page';
+ $this->values['title_clean'] = 'Main-Page';
+ }
+
+ parent::update($clean['id']);
+ if ($this->queryResult)
+ {
+ $this->lastId = $clean['id'];
+ $this->lastTitle = $this->values['title'];
+ $this->lastTitleClean = html_entity_decode($this->values['title_clean'],ENT_QUOTES,DEFAULT_CHARSET);
+
+ //update the history table
+ $this->updateHistory('update');
+
+ if (!$this->checkAssociation($clean['id'],(int)$this->id_user))
+ {
+ $this->associate($clean['id']);
+ }
+ }
+ }
+ }
+ }
+
+ public function makeCurrent($id_rev)
+ {
+
+ $clean['id_rev'] = (int)$id_rev;
+
+ $revisions = new WikirevisionsModel();
+
+ $clean['id_wiki'] = (int)$revisions->getIdPage($clean['id_rev']);
+
+ //save the old fields in the revisions table
+ $this->where(array('id_wiki'=>$clean['id_wiki']));
+ $oldStruct = $this->getFields($this->fields.',title_clean,created_by,update_date,id_wiki');
+
+ if (count($oldStruct > 0))
+ {
+ //get the values of the revision
+ $revisions->where(array('id_rev'=>$clean['id_rev']));
+ $newStruct = $revisions->getFields($this->fields.',title_clean,created_by,update_date');
+
+ if (count($newStruct > 0))
+ {
+ $revisions->values = $oldStruct[0]['wiki'];
+ $revisions->sanitize();
+
+ $this->values = $newStruct[0]['wiki_revisions'];
+ $this->values['created_by'] = (int)$this->id_user;
+ $this->values['update_date'] = date('Y-m-d H:i:s');
+
+ $this->sanitize();
+
+ if ($this->isMain($clean['id_wiki']))
+ {
+ $this->values['title'] = 'Main Page';
+ $this->values['title_clean'] = 'Main-Page';
+ }
+
+ if ($revisions->insert())
+ {
+ if (parent::update($clean['id_wiki']))
+ {
+ $this->lastId = $clean['id_wiki'];
+ $this->lastTitle = $this->values['title'];
+ $this->lastTitleClean = html_entity_decode($this->values['title_clean'],ENT_QUOTES,DEFAULT_CHARSET);
+
+ //update the history table
+ $this->updateHistory('update');
+
+ if (!$this->checkAssociation($clean['id_wiki'],(int)$this->id_user))
+ {
+ $this->associate($clean['id_wiki']);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ public function associate($id_record = null, $idGroup = null)
+ {
+ return parent::associate((int)$id_record,(int)$this->id_user);
+ }
+
+ //get the model name
+ public function getTheModelName($id, $cleaned = false)
+ {
+ $clean['id'] = (int)$id;
+ $this->setWhereQueryClause(array('id_wiki' => $clean['id']));
+ $res = $this->getFields('title,title_clean');
+ $name = '';
+ if (count($res) > 0)
+ {
+ if ($cleaned)
+ {
+ $name = $res[0]['wiki']['title_clean'];
+ }
+ else
+ {
+ $name = $res[0]['wiki']['title'];
+ }
+ }
+ return $name;
+ }
+
+ //save in the history all the action carried out by users
+ protected function updateHistory($action)
+ {
+ $translations = array(
+ 'insert' => 'inserted',
+ 'update' => 'updated',
+ );
+
+ $allowedActions = array('insert','update');
+
+ if (in_array($action,$allowedActions))
+ {
+ $users = new UsersModel();
+
+ $clean['user'] = sanitizeAll($users->getUser($this->id_user));
+
+ $history = new HistoryModel();
+ $history->values = array(
+ 'created_by' => $this->id_user,
+ 'type' => 'wiki',
+ 'action' => $action,
+ 'id' => $this->lastId,
+ 'message' => 'The wiki page having id='.$this->lastId.' has been '.$translations[$action].' by the user ' . $clean['user'] . ' (id_user='.$this->id_user.') ',
+ 'gr' => 'registered',
+ );
+ $history->insert();
+ }
+ }
+
+ public function isMain($id)
+ {
+ $clean['id'] = (int)$id;
+ $res = $this->select('is_main')->where(array('id_wiki'=>$clean['id']))->send();
+ if ( count($res) > 0 )
+ {
+ return strcmp($res[0]['wiki']['is_main'],'no') === 0 ? false : true;
+ }
+ return false;
+ }
+
+ public function isDeleted($id)
+ {
+ $clean['id'] = (int)$id;
+ $res = $this->select('wiki.deleted')->where(array('id_wiki'=>$clean['id']))->send();
+ if ( count($res) > 0 )
+ {
+ return strcmp($res[0]['wiki']['deleted'],'no') === 0 ? false : true;
+ }
+ return false;
+ }
+
+ public function isBlocked($id)
+ {
+ $clean['id'] = (int)$id;
+ $res = $this->select('blocked')->where(array('id_wiki'=>$clean['id']))->send();
+ if ( count($res) > 0 )
+ {
+ return strcmp($res[0]['wiki']['blocked'],'no') === 0 ? false : true;
+ }
+ return false;
+ }
+
+ public function toWikiPage($id)
+ {
+ $clean['id'] = (int)$id;
+ $title = $this->getTheModelName($clean['id'], true);
+ return Url::getRoot()."wiki/page/".Lang::$current."/".$title;
+ }
+
+ public function getDiffArray($oldArray, $newArray)
+ {
+ return getDiffArray($this->diffFields, $oldArray, $newArray);
+ }
+} \ No newline at end of file
diff --git a/Application/Models/WikirevisionsModel.php b/Application/Models/WikirevisionsModel.php
new file mode 100644
index 0000000..fdf5558
--- /dev/null
+++ b/Application/Models/WikirevisionsModel.php
@@ -0,0 +1,45 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WikirevisionsModel extends Model_Tree {
+
+ public $id_user = 0;
+
+ public function __construct() {
+ $this->_tables='wiki_revisions';
+ $this->_idFields='id_rev';
+
+ $this->orderBy = 'id_rev desc';
+
+ parent::__construct();
+ }
+
+ public function getIdPage($id_rev = 0)
+ {
+ $clean['id_rev'] = (int)$id_rev;
+
+ $res = $this->db->select('wiki_revisions','id_wiki','id_rev='.$clean['id_rev']);
+
+ return (count($res) > 0) ? $res[0]['wiki_revisions']['id_wiki'] : 0;
+ }
+
+} \ No newline at end of file
diff --git a/Application/Models/WikitalkModel.php b/Application/Models/WikitalkModel.php
new file mode 100644
index 0000000..7dee896
--- /dev/null
+++ b/Application/Models/WikitalkModel.php
@@ -0,0 +1,112 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class WikitalkModel extends BaseModel
+{
+
+ public function __construct() {
+ $this->_tables = 'wiki_talk';
+ $this->_idFields = 'id_talk';
+
+ $this->_where=array(
+ 'id_wiki' => 'wiki_talk',
+ 'has_confirmed' => 'regusers',
+ '-deleted' => 'regusers',
+ );
+
+ $this->orderBy = 'wiki_talk.id_talk';
+
+ $this->strongConditions['insert'] = array(
+ "checkLength|99" => 'title',
+ "+checkLength|5000" => 'message',
+ );
+
+ parent::__construct();
+ }
+
+ public function pUpdate($id)
+ {
+ return parent::update($id);
+ }
+
+ public function insert()
+ {
+ if (parent::insert())
+ {
+ //update the history
+ $this->updateHistory('wiki_talk_ins');
+
+ $clean['id_wiki'] = (int)$this->values['id_wiki'];
+ $clean['created_by'] = (int)$this->values['created_by'];
+
+ $hard = new WikiModel();
+ $users = $hard->select('username,e_mail')
+ ->where(array('id_wiki'=>$clean['id_wiki'],'has_confirmed'=>0,'deleted'=>'no'))
+ ->toList('regusers.username','regusers.e_mail')
+ ->send('Boxes');
+
+ $talkUsers = $this->select('username,e_mail')
+ ->inner('regusers')
+ ->on('wiki_talk.created_by = regusers.id_user')
+ ->where(array('id_wiki'=>$clean['id_wiki'],'has_confirmed'=>0,'-deleted'=>'no'))
+ ->toList('regusers.username','regusers.e_mail')
+ ->send();
+
+ $allUsers = array_merge($users,$talkUsers);
+
+ $userObj = new UsersModel();
+ $myName = $userObj->getUser($clean['created_by']);
+
+ $arrayE = new ArrayExt();
+ $fusers = $arrayE->subsetComplementary($allUsers,$myName);
+
+ //remove users that do not want the email notification
+ $inString = "'".implode("','",array_keys($fusers))."'";
+ $profile = new ProfileModel();
+ $ffusers = $profile->select('username,e_mail')
+ ->from('regusers inner join profile')
+ ->on('regusers.id_user = profile.created_by')
+ ->where(array('send_notification'=>'yes','username'=>"in($inString)"))
+ ->toList('regusers.username','regusers.e_mail')
+ ->send();
+
+ $ffusers = array_flip($ffusers);
+
+ //send the notice
+ Account::sendWikiTalkNotice($myName,$ffusers,$clean['id_wiki']);
+
+ header('Refresh: 0;url='.Url::getRoot()."wiki/talk/".Lang::$current."/".$clean['id_wiki']);
+ exit;
+ }
+ }
+
+ public $formStruct = array(
+ 'entries' => array(
+ 'title' => array(),
+ 'message' => array('type'=>'Textarea'),
+ 'id_talk' => array(
+ 'type' => 'Hidden'
+ )
+ ),
+ );
+
+} \ No newline at end of file
diff --git a/Application/Modules/ModBase.php b/Application/Modules/ModBase.php
new file mode 100644
index 0000000..44d25a2
--- /dev/null
+++ b/Application/Modules/ModBase.php
@@ -0,0 +1,41 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//module to print an HTML link
+//extends the ModAbstract class inside the Library folder
+class ModBase extends ModAbstract {
+
+ public function render()
+ {
+ return null;
+ }
+
+ public function getHtmlClass()
+ {
+ if (isset($this->simpleXmlObj->classname))
+ {
+ return " class='".$this->simpleXmlObj->classname[0]."' ";
+ }
+ return null;
+ }
+
+ //wrap the html with a <div>
+ //look for the <div> tag in the xml in order to set the class of the div
+ public function wrapDiv($string)
+ {
+ $divOpen = "<div class='box_module'>";
+ $divClose = "</div>";
+
+ if (isset($this->simpleXmlObj->div))
+ {
+ $divOpen = "<div class='".$this->simpleXmlObj->div."'>";
+ }
+
+ return $divOpen . $string . $divClose;
+ }
+
+} \ No newline at end of file
diff --git a/Application/Modules/ModImage.php b/Application/Modules/ModImage.php
new file mode 100644
index 0000000..5a116b1
--- /dev/null
+++ b/Application/Modules/ModImage.php
@@ -0,0 +1,45 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//module to print an HTML image
+//extends the ModBase class
+class ModImage extends ModBase {
+
+ public function widthPropertyString()
+ {
+ if (isset($this->simpleXmlObj->width))
+ {
+ return " width = '" . $this->simpleXmlObj->width ."' ";
+ }
+ return null;
+ }
+
+ public function heightPropertyString()
+ {
+ if (isset($this->simpleXmlObj->height))
+ {
+ return " height = '" . $this->simpleXmlObj->height ."' ";
+ }
+ return null;
+ }
+
+ public function titlePropertyString()
+ {
+ if (isset($this->simpleXmlObj->title))
+ {
+ return " title = '" . $this->simpleXmlObj->title ."' ";
+ }
+ return null;
+ }
+
+ public function render()
+ {
+ $link = "<img ".$this->getHtmlClass().$this->widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>";
+ return $this->wrapDiv($link)."\n";
+ }
+
+} \ No newline at end of file
diff --git a/Application/Modules/ModLink.php b/Application/Modules/ModLink.php
new file mode 100644
index 0000000..011bc78
--- /dev/null
+++ b/Application/Modules/ModLink.php
@@ -0,0 +1,18 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//module to print an HTML link
+//extends the ModBase class
+class ModLink extends ModBase {
+
+ public function render()
+ {
+ $link = "<a ".$this->getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0]."</a>";
+ return $this->wrapDiv($link)."\n";
+ }
+
+} \ No newline at end of file
diff --git a/Application/Modules/ModLinkimage.php b/Application/Modules/ModLinkimage.php
new file mode 100644
index 0000000..8e49bbf
--- /dev/null
+++ b/Application/Modules/ModLinkimage.php
@@ -0,0 +1,18 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//module to print an HTML image linking to something
+//extends the ModBase class
+class ModLinkimage extends ModImage {
+
+ public function render()
+ {
+ $link = "<a ".$this->getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'><img ".$this->widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'></a>";
+ return $this->wrapDiv($link)."\n";
+ }
+
+} \ No newline at end of file
diff --git a/Application/Modules/ModRaw.php b/Application/Modules/ModRaw.php
new file mode 100644
index 0000000..4ed3226
--- /dev/null
+++ b/Application/Modules/ModRaw.php
@@ -0,0 +1,18 @@
+<?php
+
+// All EasyGiant code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+// See COPYRIGHT.txt and LICENSE.txt.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//module to print some raw HTML
+//extends the ModBase class
+class ModRaw extends ModBase {
+
+ public function render()
+ {
+ $link = $this->simpleXmlObj->text[0];
+ return $this->wrapDiv($link)."\n";
+ }
+
+} \ No newline at end of file
diff --git a/Application/Modules/ModTopLink.php b/Application/Modules/ModTopLink.php
new file mode 100644
index 0000000..6407c3e
--- /dev/null
+++ b/Application/Modules/ModTopLink.php
@@ -0,0 +1,32 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//module to print an HTML link
+//extends the ModBase class
+class ModTopLink extends ModBase {
+
+ public function render($liclass = null)
+ {
+ return "<li $liclass><a ".$this->getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0]."</a></li>";
+ }
+
+} \ No newline at end of file
diff --git a/Application/Modules/index.html b/Application/Modules/index.html
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/Application/Modules/index.html
@@ -0,0 +1 @@
+
diff --git a/Application/Strings/Lang/It/DbCondStrings.php b/Application/Strings/Lang/It/DbCondStrings.php
new file mode 100644
index 0000000..41b57ac
--- /dev/null
+++ b/Application/Strings/Lang/It/DbCondStrings.php
@@ -0,0 +1,34 @@
+<?php
+
+// EasyGiant is a PHP framework for creating and managing dynamic content
+//
+// Copyright (C) 2009 - 2011 Antonio Gallo
+// See COPYRIGHT.txt and LICENSE.txt.
+//
+// This file is part of EasyGiant
+//
+// EasyGiant is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// EasyGiant 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with EasyGiant. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+//error strings in the case database conditions are not satisfied
+class Lang_It_DbCondStrings extends Lang_En_DbCondStrings {
+
+ //get the error string in the case that the value of the field $field is already present in the table $table
+ public function getNotUniqueString($field)
+ {
+ return "<div class='alert'>Il valore del campo <i>". $field ."</i> &egrave gi&agrave presente. Per favore scegline un altro.</div>\n";
+ }
+
+}
diff --git a/Application/Strings/Lang/It/ModelStrings.php b/Application/Strings/Lang/It/ModelStrings.php
new file mode 100644
index 0000000..7af1ca7
--- /dev/null
+++ b/Application/Strings/Lang/It/ModelStrings.php
@@ -0,0 +1,36 @@
+<?php
+
+// EasyGiant is a PHP framework for creating and managing dynamic content
+//
+// Copyright (C) 2009 - 2011 Antonio Gallo
+// See COPYRIGHT.txt and LICENSE.txt.
+//
+// This file is part of EasyGiant
+//
+// EasyGiant is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// EasyGiant 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with EasyGiant. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Lang_It_ModelStrings extends Lang_ResultStrings {
+
+ public $string = array(
+ "error" => "<div class='alert'>Errore nella query: contatta l'amministratore!</div>\n",
+ "executed" => "<div class='executed'>operazione eseguita!</div>\n",
+ "associate" => "<div class='alert'>Problema di integrit&agrave referenziale: il record &egrave associato ad un record di una tabella figlia. Devi prima rompere l'associazione.</div>\n",
+ "no-id" => "<div class='alert'>Non &egrave definito alcun id della query</div>\n",
+ "not-linked" => "<div class='alert'>Il record non &egrave associato, non puoi dissociarlo</div>",
+ "linked" => "<div class='alert'>Il record &egrave gi&agrave associato, non puoi associarlo un'altra volta</div>"
+ );
+
+}
diff --git a/Application/Strings/Lang/It/UploadStrings.php b/Application/Strings/Lang/It/UploadStrings.php
new file mode 100644
index 0000000..fe77929
--- /dev/null
+++ b/Application/Strings/Lang/It/UploadStrings.php
@@ -0,0 +1,44 @@
+<?php
+
+// EasyGiant is a PHP framework for creating and managing dynamic content
+//
+// Copyright (C) 2009 - 2011 Antonio Gallo
+// See COPYRIGHT.txt and LICENSE.txt.
+//
+// This file is part of EasyGiant
+//
+// EasyGiant is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// EasyGiant 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with EasyGiant. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Lang_It_UploadStrings extends Lang_ResultStrings {
+
+ public $string = array(
+ "error" => "<div class='alert'>Errore: verificare i permessi del file/directory</div>\n",
+ "executed" => "<div class='executed'>Operazione eseguita!</div>\n",
+ "not-child" => "<div class='alert'>La cartella selezionata non &egrave una sotto directory della directory base</div>\n",
+ "not-dir" => "<div class='alert'>La cartella selezionata non &egrave una directory</div>\n",
+ "not-empty" => "<div class='alert'>La cartella selezionata non &egrave vuota</div>\n",
+ "no-folder-specified" => "<div class='alert'>Non &egrave stata specificata alcuna cartella</div>\n",
+ "no-file-specified" => "<div class='alert'>Non &egrave stato specificato alcun file</div>\n",
+ "not-writable" => "<div class='alert'>La cartella non &egrave scrivibile</div>\n",
+ "not-writable-file" => "<div class='alert'>Il file non &egrave scrivibile</div>\n",
+ "dir-exists" => "<div class='alert'>Esiste gi&agrave una directory con lo stesso nome</div>\n",
+ "no-upload-file" => "<div class='alert'>Non c'&egrave alcun file di cui fare l'upload</div>\n",
+ "size-over" => "<div class='alert'>La dimensione del file &egrave troppo grande</div>\n",
+ "not-allowed-ext" => "<div class='alert'>L'estensione del file che vuoi caricare non &egrave consentita</div>\n",
+ "file-exists" => "<div class='alert'>Esiste gi&agrave un file con lo stesso nome</div>\n",
+ );
+
+}
diff --git a/Application/Strings/Lang/It/ValCondStrings.php b/Application/Strings/Lang/It/ValCondStrings.php
new file mode 100644
index 0000000..2fe6898
--- /dev/null
+++ b/Application/Strings/Lang/It/ValCondStrings.php
@@ -0,0 +1,92 @@
+<?php
+
+// EasyGiant is a PHP framework for creating and managing dynamic content
+//
+// Copyright (C) 2009 - 2011 Antonio Gallo
+// See COPYRIGHT.txt and LICENSE.txt.
+//
+// This file is part of EasyGiant
+//
+// EasyGiant is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// EasyGiant 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with EasyGiant. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class Lang_It_ValCondStrings extends Lang_En_ValCondStrings {
+
+ //if the element is not defined
+ public function getNotDefinedResultString($element)
+ {
+ return "<div class='alert'>". $element ." non &egrave stato definito</div>\n";
+ }
+
+ //if the elements are not equal
+ public function getNotEqualResultString($element)
+ {
+ return "<div class='alert'>Differenti valori: $element</div>\n";
+ }
+
+ //if the element is not alphabetic
+ public function getNotAlphabeticResultString($element)
+ {
+ return "<div class='alert'>".$element." deve essere una stringa di soli caratteri alfabetici</div>\n";
+ }
+
+ //if the element is not alphanumeric
+ public function getNotAlphanumericResultString($element)
+ {
+ return "<div class='alert'>".$element." deve essere una stringa di soli caratteri alfanumerici</div>\n";
+ }
+
+ //if the element is not a decimal digit
+ public function getNotDecimalDigitResultString($element)
+ {
+ return "<div class='alert'>".$element." deve essere una stringa di soli numeri decimali</div>\n";
+ }
+
+ //if the element has the mail format
+ public function getNotMailFormatResultString($element)
+ {
+ return "<div class='alert'>".$element." non sembra un indirizzo e-mail</div>\n";
+ }
+
+ //if the element is numeric
+ public function getNotNumericResultString($element)
+ {
+ return "<div class='alert'>".$element." deve essere un numero</div>\n";
+ }
+
+ //if the element (string) length exceeds the value of characters (defined by $maxLength)
+ public function getLengthExceedsResultString($element,$maxLength)
+ {
+ return "<div class='alert'>".$element." non deve essere composto da pi&ugrave di $maxLength caratteri</div>\n";
+ }
+
+ //if the element is one of the strings indicated by $stringList (a comma-separated list of strings)
+ public function getIsForbiddenStringResultString($element,$stringList)
+ {
+ return "<div class='alert'>".$element." non pu&ograve assumere uno dei seguenti valori: $stringList</div>\n";
+ }
+
+ //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings)
+ public function getIsNotStringResultString($element,$stringList)
+ {
+ return "<div class='alert'>".$element." deve assumere uno dei seguenti valori: $stringList</div>\n";
+ }
+
+ //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings)
+ public function getDoesntMatchResultString($element,$regExp)
+ {
+ return "<div class='alert'>".$element." deve soddisfare la seguente espressione regolare: $regExp</div>\n";
+ }
+}
diff --git a/Application/Strings/Lang/It/index.html b/Application/Strings/Lang/It/index.html
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/Application/Strings/Lang/It/index.html
@@ -0,0 +1 @@
+
diff --git a/Application/Strings/Lang/index.html b/Application/Strings/Lang/index.html
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/Application/Strings/Lang/index.html
@@ -0,0 +1 @@
+
diff --git a/Application/Strings/index.html b/Application/Strings/index.html
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/Application/Strings/index.html
@@ -0,0 +1 @@
+
diff --git a/Application/Views/Desktop/Client/info.php b/Application/Views/Desktop/Client/info.php
new file mode 100644
index 0000000..00d2927
--- /dev/null
+++ b/Application/Views/Desktop/Client/info.php
@@ -0,0 +1,30 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php echo "<?xml version='1.0' encoding='UTF-8'?>\n";?>
+<user_info>
+ <status><?php echo $user_status;?></status>
+ <info>
+ <username><?php echo $username;?></username>
+ <token><?php echo $token;?></token>
+ <groups><?php echo $user_groups;?></groups>
+ </info>
+</user_info>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Client/license.php b/Application/Views/Desktop/Client/license.php
new file mode 100644
index 0000000..c38d615
--- /dev/null
+++ b/Application/Views/Desktop/Client/license.php
@@ -0,0 +1,25 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php echo $xml; ?>
+<xml>
+ <license_info><![CDATA[<?php echo License::getClientNotice();?>]]></license_info>
+</xml>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Contact/index.php b/Application/Views/Desktop/Contact/index.php
new file mode 100644
index 0000000..ac6e7d5
--- /dev/null
+++ b/Application/Views/Desktop/Contact/index.php
@@ -0,0 +1,39 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ You can suggest to implement new features or add new types of hardware in the <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">issues</a> page
+ </div>
+
+ <div class="contact_div">
+ Discussions about <b><?php echo Website::$generalName;?></b> also take place on the <a href="https://lists.nongnu.org/mailman/listinfo/h-source-users">h-source-users mailing list</a> and <a href="irc://libera.chat/h-node">#h-node libera.chat IRC channel</a>.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Contact/index_de.php b/Application/Views/Desktop/Contact/index_de.php
new file mode 100644
index 0000000..ab8710a
--- /dev/null
+++ b/Application/Views/Desktop/Contact/index_de.php
@@ -0,0 +1,39 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Sie können neu zu implementierende Funktionen vorschlagen oder neue Hardware-Typen in der Seite <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">Web-Log</a> hinzufügen
+ </div>
+
+ <div class="contact_div">
+ Wenn Sie das <b>h-node-Team</b> direkt kontaktieren möchten: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Contact/index_es.php b/Application/Views/Desktop/Contact/index_es.php
new file mode 100644
index 0000000..af5c022
--- /dev/null
+++ b/Application/Views/Desktop/Contact/index_es.php
@@ -0,0 +1,39 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Puede sugerir el implementar nuevas caracteriticas o agregar nuevo hardware en la página de <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">incidencias</a>
+ </div>
+
+ <div class="contact_div">
+ Si desea contactar directamente al equipo de <b><?php echo Website::$generalName;?></b> use esta dirección de correo electronico: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Contact/index_fr.php b/Application/Views/Desktop/Contact/index_fr.php
new file mode 100644
index 0000000..2255258
--- /dev/null
+++ b/Application/Views/Desktop/Contact/index_fr.php
@@ -0,0 +1,39 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Vous pouvez suggérez l’implémentation de nouvelles fonctionnalitée ou l’ajout d’un nouveau type de matériel dans la page <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">problème</a>.
+ </div>
+
+ <div class="contact_div">
+ Si vous voulez contatez directement l’équipe <b><?php echo Website::$generalName;?></b>, utilisez cette adresse mail : <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Contact/index_gr.php b/Application/Views/Desktop/Contact/index_gr.php
new file mode 100644
index 0000000..2b6a1bb
--- /dev/null
+++ b/Application/Views/Desktop/Contact/index_gr.php
@@ -0,0 +1,39 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Μπορείτε να εισηγηθείτε την υλοποίηση νέων χαρακτηριστικών ή την προσθήκη νέων τύπων υλικού (hardware) στην ιστοσελίδα <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">issues</a>
+ </div>
+
+ <div class="contact_div">
+ Αν θέλετε να έρθετε σε άμεση επαφή με την ομάδα του <b><?php echo Website::$generalName;?></b>, χρησιμοποιείστε αυτή την ηλεκτρονική διεύθυνση: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Contact/index_it.php b/Application/Views/Desktop/Contact/index_it.php
new file mode 100644
index 0000000..48355d7
--- /dev/null
+++ b/Application/Views/Desktop/Contact/index_it.php
@@ -0,0 +1,39 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Potete suggerire nuove caratteristiche da implementare o aggiungere nuovi tipi di hardware nella pagina <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">issues</a>
+ </div>
+
+ <div class="contact_div">
+ Se volete direttamente contattare il team di <b><?php echo Website::$generalName;?></b> potete farlo a questo indirizzo e-mail: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Credits/index.php b/Application/Views/Desktop/Credits/index.php
new file mode 100644
index 0000000..250fb7a
--- /dev/null
+++ b/Application/Views/Desktop/Credits/index.php
@@ -0,0 +1,65 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Icons:
+ </div>
+
+ <div class="credits_item_description">
+ The icons used inside <?php echo Website::$generalName;?> are taken from the <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> icon theme and from the <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, both licensed under the GNU GPL license, from the <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a> icons, licensed under the LGPL, from the <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL) and from the <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). The flag icons are taken from the <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM flag icons set</a> (Public Domain).
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ The <a href="http://jquery.com/">jQuery</a>, the <a href="http://jqueryui.com/home">jQuery UI</a> and the <a href="http://jquerymobile.com/">jQuery Mobile</a> javascript libraries (licensed under MIT/GPL) have been used through the website
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ The <a href="http://markitup.jaysalvat.com/home/">markitup</a> jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags
+ </div>
+
+ <div class="credits_item_title">
+ php diff algorithm:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">This</a> algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hardware model.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Credits/index_es.php b/Application/Views/Desktop/Credits/index_es.php
new file mode 100644
index 0000000..d3d349e
--- /dev/null
+++ b/Application/Views/Desktop/Credits/index_es.php
@@ -0,0 +1,65 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Iconos:
+ </div>
+
+ <div class="credits_item_description">
+ Los iconos usados dentro de <?php echo Website::$generalName;?> son tomados de el tema de iconos <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> y de <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, ambos licenciados bajo la licencia GNU GPL, de <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a>, licenciado bajo la LGPL, de <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL) y de <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). Los iconos de las banderas son tomados la colección de iconos de banderas <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM</a> (Dominio Público)
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ Las bibliotecas javascript <a href="http://jquery.com/">jQuery</a>, <a href="http://jqueryui.com/home">jQuery UI</a> y <a href="http://jquerymobile.com/">jQuery Mobile</a> (licenciadas bajo MIT/GPL) han sido usadas en el sitio
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ El complemento <a href="http://markitup.jaysalvat.com/home/">markitup</a> jQuery (licenciado bajo MIT/GPL) ha sido usado en orden de ayudar al usuario a insertar etiquetas wiki
+ </div>
+
+ <div class="credits_item_title">
+ php diff algorithm:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">Este</a> algoritmo (licenciado bajo la licencia libre de zlib) ha sido usado en orden de remarcar las diferencias entre dos diferentes revisiones del mismo modelo de hardware.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Credits/index_fr.php b/Application/Views/Desktop/Credits/index_fr.php
new file mode 100644
index 0000000..d3276d2
--- /dev/null
+++ b/Application/Views/Desktop/Credits/index_fr.php
@@ -0,0 +1,63 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Icons:
+ </div>
+
+ <div class="credits_item_description">
+ Les icones utilisées sur <?php echo Website::$generalName;?> sont tirées du thème <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> et du thème <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, les deux sont licensée sous license GPL, d’autres sont aussi tirée des thèmes <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a> (LGPL), <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL), <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). Les icones de drapeau sont tirés du thème <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM flag icons set</a> distribué dans le domaine publique.
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://jquery.com/">jQuery</a> , <a href="http://jqueryui.com/home">jQuery UI</a> et la librairie javascript <a href="http://jquerymobile.com/">jQuery Mobile</a> (licensé sous MIT/GPL) sont utilisés sur le site.
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ Le plugin jQuery <a href="http://markitup.jaysalvat.com/home/">markitup</a> (licensé sous MIT/GPL) a été utilisé afin d’aider les utilisateurs à insérer des tags wiki.
+ </div>
+
+ <div class="credits_item_title">
+ Algorithme diff php:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">Cet</a> algorithme (Licensé sous license libre zlib) a été utiliser afin de souligner les différences entre deux révisions d’un même modèle matériel.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Credits/index_gr.php b/Application/Views/Desktop/Credits/index_gr.php
new file mode 100644
index 0000000..077d337
--- /dev/null
+++ b/Application/Views/Desktop/Credits/index_gr.php
@@ -0,0 +1,65 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Εικόνες:
+ </div>
+
+ <div class="credits_item_description">
+ Οι εικόνες που χρησιμοποιούνται μέσα στο <?php echo Website::$generalName;?> πάρθηκαν από το θέμα εικόνας <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> και από το <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, που είναι αδειοδοτημένα και τα δύο υπό την Άδεια GNU GPL, από τις εικόνες <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a>, που είναι αδειοδοτημένες υπό την LGPL, από το <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL) και από το <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). Οι εικόνες flag πάρθηκαν από το <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM flag icons set</a> (Public Domain).
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ Σε όλο τον ιστότοπο χρησιμοποιήθηκαν οι βιβλιοθήκες javascript <a href="http://jquery.com/">jQuery</a> και η <a href="http://jqueryui.com/home">jQuery UI</a> (που αδειοδοτούνται υπό την MIT/GPL).
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ Χρησιμοποιήθηκε το <a href="http://markitup.jaysalvat.com/home/">markitup</a> jQuery plugin (που αδειοδοτείται υπό την MIT/GPL), για να βοηθηθεί ο χρήστης να εισαγάγει wiki tags
+ </div>
+
+ <div class="credits_item_title">
+ php diff algorithm:
+ </div>
+
+ <div class="credits_item_description">
+ Χρησιμοποιήθηκε ο αλγόριθμος <a href="http://compsci.ca/v3/viewtopic.php?p=142539">This</a> algorithm (που αδειοδοτείται υπό την ελεύθερη άδεια zlib), για να αναδειχθούν οι διαφορές ανάμεσα στις δύο διαφορετικές αναθεωρήσεις του ίδιου μοντέλου υλικού (hadrware).
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Credits/index_it.php b/Application/Views/Desktop/Credits/index_it.php
new file mode 100644
index 0000000..dcdb2c2
--- /dev/null
+++ b/Application/Views/Desktop/Credits/index_it.php
@@ -0,0 +1,66 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Icone:
+ </div>
+
+ <div class="credits_item_description">
+ Le icone utilizzate nel sito h-node.com appartengono ai temi di icone <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> e <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, entrambi sotto licenza GNU GPL, e al tema <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a>, sotto licenza LGPL, al <a href="http://www.notmart.org/index.php/Graphics">set di icone glaze</a> (LGPL) e al tema <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked</a> (GPL). Le icone bandiere derivano dal set di icone <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM</a> (Public Domain).
+ </div>
+
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ Le librerie javascript <a href="http://jquery.com/">jQuery</a> , <a href="http://jqueryui.com/home">jQuery UI</a> e <a href="http://jquerymobile.com/">jQuery Mobile</a> (sotto licenza MIT/GPL) sono state usate nel sito
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ Il plugin jQuery <a href="http://markitup.jaysalvat.com/home/">markitup</a> (sotto licenza MIT/GPL) è stato usato per aiutare gli utenti a inserire i tag della wiki </div>
+
+ <div class="credits_item_title">
+ Algoritmo php diff:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">Questo</a> algoritmo (sotto licenza libera zlib) è stato usato per sottolineare la differenza tra due diverse revisioni dello stesso modello di hardware.
+ </div>
+
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Download/index.php b/Application/Views/Desktop/Download/index.php
new file mode 100644
index 0000000..2f37f81
--- /dev/null
+++ b/Application/Views/Desktop/Download/index.php
@@ -0,0 +1,114 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("Download");?>
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ <?php echo gtext("Download the h-node hardware database in xml format");?>:
+ </div>
+
+ <div class="credits_item_description">
+ <?php echo gtext("You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)");?>
+
+ <div class="download_table">
+ <table width="95%">
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/all/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>notebooks</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/notebooks/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>wifi cards</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/wifi/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>video cards</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/videocards/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>printers</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/printers/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>scanners</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/scanners/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>3G cards</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/threegcards/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>sound cards</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/soundcards/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>webcams</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/webcams/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>bluetooth devices</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/bluetooth/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>acquisition cards</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/acquisitioncards/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>fingerprint readers</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/fingerprintreaders/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>ethernet cards</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/ethernetcards/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>SD card readers</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/sdcardreaders/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>modems</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/modems/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>RAID adapters</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/raidadapters/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("Download the xml file of all the <b>Host Controllers</b> in the database");?></td>
+ <td><a href="<?php echo $this->baseUrl."/download/hostcontrollers/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Download/xml.php b/Application/Views/Desktop/Download/xml.php
new file mode 100644
index 0000000..67bc38e
--- /dev/null
+++ b/Application/Views/Desktop/Download/xml.php
@@ -0,0 +1,22 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php echo $xml; ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Hardware/left.php b/Application/Views/Desktop/Hardware/left.php
new file mode 100644
index 0000000..03068f5
--- /dev/null
+++ b/Application/Views/Desktop/Hardware/left.php
@@ -0,0 +1,92 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; Hardware
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/computer-laptop.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/notebooks/catalogue/<?php echo $lang;?>"><?php echo gtext("Notebooks");?>, <?php echo gtext("netbooks");?>, <?php echo gtext("tablet PC");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/network-wireless.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/wifi/catalogue/<?php echo $lang;?>"><?php echo gtext("Wifi cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/1282042718_hardware.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/videocards/catalogue/<?php echo $lang;?>"><?php echo gtext("Video cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/printer.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/printers/catalogue/<?php echo $lang;?>"><?php echo gtext("Printers and multifunction");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/scanner.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/scanners/catalogue/<?php echo $lang;?>"><?php echo gtext("Scanners");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/usb.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/threegcards/catalogue/<?php echo $lang;?>"><?php echo gtext("3G cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/audio-card.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/soundcards/catalogue/<?php echo $lang;?>"><?php echo gtext("Sound cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/camera-web.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/webcams/catalogue/<?php echo $lang;?>"><?php echo gtext("Webcams");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/preferences-system-bluetooth.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/bluetooth/catalogue/<?php echo $lang;?>"><?php echo gtext("Bluetooth devices");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/cam_mount.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/acquisitioncards/catalogue/<?php echo $lang;?>"><?php echo gtext("TV/Video/FM acquisition cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/fingerprint_icon.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/fingerprintreaders/catalogue/<?php echo $lang;?>"><?php echo gtext("Fingerprint readers");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/network-wired.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/ethernetcards/catalogue/<?php echo $lang;?>"><?php echo gtext("Ethernet cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/media-flash-sd-mmc.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/sdcardreaders/catalogue/<?php echo $lang;?>"><?php echo gtext("SD card readers");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/modem.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/modems/catalogue/<?php echo $lang;?>"><?php echo gtext("Modems and ADSL cards");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/1282042718_hardware.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/raidadapters/catalogue/<?php echo $lang;?>"><?php echo gtext("RAID adapters");?></a>
+ </div>
+
+ <div class="hardware_element">
+ <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/1282042718_hardware.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/hostcontrollers/catalogue/<?php echo $lang;?>"><?php echo gtext("Host Controllers");?></a>
+ </div>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Help/index.php b/Application/Views/Desktop/Help/index.php
new file mode 100644
index 0000000..c4fcee7
--- /dev/null
+++ b/Application/Views/Desktop/Help/index.php
@@ -0,0 +1,447 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010, 2011 Antonio Gallo (h-source-copyright.txt)
+// Copyright (C) 2011 Joerg Kohne
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<div class="help_external_box">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("Help");?>
+ </div>
+
+ <div class="help_tables_of_contents">
+ Table of contents
+ <ul>
+ <li><a href="<?php echo $this->currPage."/$lang#wiki-syntax";?>">Wiki syntax</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#compatibility";?>">Compatibility classes</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#discover-hardware";?>">Discover your hardware</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#fully-free";?>">List of fully free GNU/Linux distributions</a></li>
+ </ul>
+ </div>
+
+ <a name="wiki-syntax"></a><h2>Wiki Syntax</h2>
+
+ <h3>List of <?php echo Website::$generalName;?>
+ Wiki Tags</h3>
+
+ <table class="wiki">
+ <thead>
+ <tr>
+ <th>Name</th>
+ <th>Tag</th>
+ <th>Result</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>bold</td>
+ <td>text [b]bold[/b]</td>
+ <td>text <b>bold</b></td>
+ <td>text bold</td>
+ </tr>
+ <tr>
+ <td>italic</td>
+ <td>text [i]italic[/i]</td>
+ <td>text <i>italic</i></td>
+ <td>text italic</td>
+ </tr>
+ <tr>
+ <td>del</td>
+ <td>text [del]deleted[/del]</td>
+ <td>text <del>deleted</del></td>
+ <td>text deleted</td>
+ </tr>
+ <tr>
+ <td>underline</td>
+ <td>text [u]underlined[/u]</td>
+ <td>text <u>underlined</u></td>
+ <td>text underlined</td>
+ </tr>
+ <tr>
+ <td>head 1</td>
+ <td>[h1]heading[/h1]</td>
+ <td>
+ <div class="div_h1">
+ heading</div>
+ </td>
+ <td>head 1</td>
+ </tr>
+ <tr>
+ <td>head 2</td>
+ <td>[h2]heading[/h2]</td>
+ <td>
+ <div class="div_h2">
+ heading</div>
+ </td>
+ <td>head 2</td>
+ </tr>
+ <tr>
+ <td>head 3</td>
+ <td>[h3]heading[/h3]</td>
+ <td>
+ <div class="div_h3">
+ heading</div>
+ </td>
+ <td>head 3</td>
+ </tr>
+ <tr>
+ <td>paragraph</td>
+ <td>…[p]new paragraph[/p]</td>
+ <td>…
+
+ <p>new paragraph</p>
+ </td>
+ <td>new paragraph</td>
+ </tr>
+ <tr>
+ <td>Ordered Lists </td>
+ <td><ul style="list-style-type:none;">
+ <li>[list]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]first item[/*]</li>
+ <li>[*]second item[/*]</li>
+ </ul>
+ </li>
+ <li>[/list]</li>
+ </ul>
+ </td>
+ <td><ul>
+ <li>first item</li>
+ <li>second item</li>
+ </ul>
+ </td>
+ <td>make a list of items</td>
+ </tr>
+ <tr>
+ <td>Numbered List </td>
+ <td><ul style="list-style-type:none;">
+ <li>[enum]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]first item[/*]</li>
+ <li>[*]second item[/*]</li>
+ </ul>
+ </li>
+ <li>[/enum]</li>
+ </ul>
+ </td>
+ <td><ol>
+ <li>first item</li>
+ <li>second item</li>
+ </ol>
+ </td>
+ <td>make a numbered list of items</td>
+ </tr>
+ <tr>
+ <td>list item</td>
+ <td>[*]item[/*]</td>
+ <td><ul>
+ <li>item</li>
+ </ul>
+ </td>
+ <td>add an item to a list</td>
+ </tr>
+ <tr>
+ <td>code</td>
+ <td>[code]some code[/code]</td>
+ <td><pre class="code_pre">some code</pre>
+ </td>
+ <td>some code</td>
+ </tr>
+ <tr>
+ <td>simple link</td>
+ <td>[a]url[/a]</td>
+ <td><a href="url">url</a></td>
+ <td>simple link</td>
+ </tr>
+ <tr>
+ <td>link with text</td>
+ <td>[a]url|text[/a]</td>
+ <td><a href="url">text</a></td>
+ <td>link with text</td>
+ </tr>
+ <tr>
+ <td>notebook</td>
+ <td>[notebook]id[/notebook]</td>
+ <td><samp>id</samp></td>
+ <td>link to the notebook with the identifier equal to id (the identifier of each device model is written in the
+ page of the device itself, next to the model name)</td>
+ </tr>
+ <tr>
+ <td>wifi</td>
+ <td>[wifi]id[/wifi]</td>
+ <td><samp>id</samp></td>
+ <td>link to the wifi with the identifier equal to id (the identifier of each device model is written in the page
+ of the device itself, next to the model name)</td>
+ </tr>
+ <tr>
+ <td>videocard</td>
+ <td>[videocard]id[/videocard]</td>
+ <td class="sample"><samp>id</samp></td>
+ <td>link to the videocard with the identifier equal to id (the identifier of each device model is written in the
+ page of the device itself, next to the model name)</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p> </p>
+
+ <a name="compatibility"></a><h2>Compatibility classes</h2>
+
+ <a name="notebook-compatibility"></a><h3>Notebooks</h3>
+ <dl>
+ <dt>Class A (Platinum)</dt>
+ <dd>All the notebook devices work with a very good performance. </dd>
+ <dd class="example">Example: all the devices work, the 3D acceleration is supported</dd>
+ <dt>Class B (Gold)</dt>
+ <dd>All the notebook devices work but not at full performance. </dd>
+ <dd class="example">A typical example: all the devices work, but the 3D acceleration is not supported</dd>
+ <dt>Class C (Silver)</dt>
+ <dd>One main device is not supported. </dd>
+ <dd class="example">Example: the internal wifi card does not work. You need an external USB card</dd>
+ <dt>Class D (Bronze)</dt>
+ <dd>More than one device is not supported</dd>
+ <dt>Class E (Garbage)</dt>
+ <dd>The notebook does not work with free software</dd>
+ </dl>
+
+ <a name="printer-compatibility"></a><h3>Printers</h3>
+ <dl>
+ <dt>Class A (Full)</dt>
+ <dd>All device functions and features are supported</dd>
+ <dt>Class B (Partial)</dt>
+ <dd>Printing supported but possibly at limited speed or print quality; scanning and/or faxing on some multifunction
+ devices may not be supported</dd>
+ <dt>Class C (None)</dt>
+ <dd>The printer does not work with free software</dd>
+ </dl>
+
+ <a name="scanner-compatibility"></a><h3>Scanners</h3>
+ <dl>
+ <dt>Class A (Full)</dt>
+ <dd>All device functions and features are supported</dd>
+ <dt>Class B (Partial)</dt>
+ <dd>Scanning supported but possibly at limited speed or quality; some other features may not be supported</dd>
+ <dt>Class C (None)</dt>
+ <dd>The scanner does not work with free software</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="discover-hardware"></a><h2>Discover your hardware</h2>
+
+ <p><cite>(Thanks <a href="<?php echo $this->baseUrl;?>/issues/view/en/3/1/token">lluvia</a>)</cite></p>
+
+ <p>In order to know the details of your hardware you can carry out the following actions:</p>
+ <dl>
+ <dt>How to discover the model name of your notebook</dt>
+ <dd>See below your notebook or netbook<dd>
+ <a name="model-name"></a><dt>How to discover the model name of your device (if it is not a notebook)</dt>
+ <dd class="opt"><strong>If the device is integrated (example: a video card)</strong></dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">lspci</pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lspci &gt; FILENAME # output to a file</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file</dd -->
+ <dd>You will obtain the list of your PCI devices, similar to the one written below</dd>
+ <dd><pre class="terminal">
+00:18.3 Host bridge: <b>Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control</b>
+03:00.0 Network controller: <b>Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)</b>
+05:00.0 VGA compatible controller: <b>nVidia Corporation G86 [GeForce 8400M GS] (rev a1)</b>
+ </pre>
+ </dd>
+ <dd class="note"><b>Note:</b> The name of each device is written after the colon (see the text
+ in bold in the above list)</dd>
+ <dd>If the device is an USB device (example: an external USB wifi card)</dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">lsusb -v</pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lsusb -v &gt; FILENAME # output to a file</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file</dd -->
+ <dd>You will obtain the list of your USB devices, similar to the one written below</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 2.00
+ bDeviceClass 0 (Defined at Interface level)
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x0846 NetGear, Inc.
+ idProduct 0x4260 <b>WG111v3 54 Mbps Wireless [realtek RTL8187B]</b>
+ bcdDevice 2.00
+ iManufacturer 1
+ iProduct 2
+ iSerial 3
+ ...
+ ...
+
+Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 1.10
+ bDeviceClass 255 Vendor Specific Class
+ bDeviceSubClass 255 Vendor Specific Subclass
+ bDeviceProtocol 255 Vendor Specific Protocol
+ bMaxPacketSize0 8
+ idVendor 0x08ff AuthenTec, Inc.
+ idProduct 0x2580 <b>AES2501 Fingerprint Sensor</b>
+ bcdDevice 6.23
+ iManufacturer 0
+ iProduct 1 Fingerprint Sensor
+ iSerial 0
+ bNumConfigurations 1
+ ...
+ ...
+ </pre>
+ </dd>
+ <dd class="note"><b>Note:</b> The name of each device is written at the row starting with "idProduct" (see the text
+ in bold in the above list)</dd>
+ <dl>
+ <dt>How to discover the model name of your notebook</dt>
+ <dd>See below your notebook or netbook<dd>
+ <a name="model-name"></a><dt>How to discover the model name of your device (if it is not a notebook)</dt>
+ <dd class="opt"><strong>If the device is integrated (example: a video card)</strong></dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">lspci</pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lspci &gt; FILENAME # output to a file</pre>
+ </dd>
+ <dt>How to discover the kernel libre version you are using</dt>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd> <pre class="terminal">uname -r</pre>
+ </dd>
+ <dt>How to discover the name of your video card</dt>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Then look for the row containing the string <b>VGA</b> or <b>Display controller</b>. You can also try one of
+ the following commands:</dd>
+ <dd><pre class="terminal">lspci | grep "Display controller"</pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lspci | grep "VGA"</pre>
+ </dd>
+ <a name="vendoridproductid"></a><dt>How to discover the VendorID and the ProductID of your device (VendorID:ProductID
+ code)</dt>
+ <dd><cite>(Thanks <a
+ href="http://trisquel.info/en/forum/h-nodecom-new-website-hardware-database#comment-5839">Michał
+ Masłowski</a> and <a
+ href="http://trisquel.info/en/forum/h-nodecom-new-website-hardware-database#comment-5837">Julius22</a>)</cite></dd>
+ <dd>If the device is integrated (example: a video card) </dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">sudo lspci -nnk</pre></dd>
+ <dd>You should obtain a list of hardware similar to the one written below</dd>
+ <dd><pre class="terminal">
+03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [<b>14e4:4311</b>] (rev 02)
+ Kernel driver in use: b43-pci-bridge
+ Kernel modules: ssb
+05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [<b>10de:0427</b>] (rev a1)
+ Kernel modules: nouveau, nvidiafb</pre>
+ </dd>
+ <dd>The strings in <b>bold</b> and placed inside the square brackets (in the above list) are the code you are
+ looking for. The first set of digits (before the colon) are the <b>VendorID</b>, the second set of digits are
+ the <b>ProductID</b>. In the above example: the VendorID:ProductID code of the wifi card (note the strings
+ "Network controller" and "WLAN") is <b>14e4:4311</b> while the VendorID:ProductID code of the video card (note
+ the string "VGA") is <b>10de:0427</b></dd>
+ <dd class="opt">If the device is an USB device (example: an external USB wifi card) </dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">sudo lsusb</pre>
+ </dd>
+ <dd>You should obtain a list of hardware similar to the one written below</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID <b>0846:4260</b> NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Bus 001 Device 001: ID <b>1d6b:0002</b> Linux Foundation 2.0 root hub
+Bus 002 Device 003: ID <b>08ff:2580</b> AuthenTec, Inc. AES2501 Fingerprint Sensor</pre>
+ </dd>
+ <dd>The strings in <b>bold</b> (in the above list) are the code you are looking for. The first set of digits
+ (before the colon) are the <b>VendorID</b>, the second set of digits are the <b>ProductID</b>. In the above
+ example: the VendorID:ProductID code of the external USB wifi card (note the strings "Wireless") is
+ <b>0846:4260</b></dd>
+ <dt>How to discover if the video card works</dt>
+ <dd>Install <a href="http://rss-glx.sourceforge.net/"><code>rss-glx</code></a> by means of the package manager of
+ your distribution or compiling it from source and try some screensavers (for example <b>Skyrocket</b> or
+ <b>Solarwinds</b>). Check if you can play the screensaver (and/or if you can play it smoothly)</dd>
+ <dt>How to discover if the 3D acceleration works</dt>
+ <dd>Try to enable compiz</dd>
+ <dt>How to discover the name of your wifi card</dt>
+ <dd><p>Open a terminal and type the following command:</p>
+ </dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Then look for the row containing the string <b>Wireless</b> or <b>Network controller</b>. You can also try
+ one of the following commands:</dd>
+ <dd><pre class="terminal">lspci | grep "Wireless" </pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lspci | grep "Network" </pre>
+ </dd>
+ <dt>How to discover the printer driver you are using</dt>
+ <dd class="opt"><strong>If you are using cups</strong></dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">dpkg-query -W -f '${Version}\n' cups</pre>
+ </dd>
+ <dt>How to discover the architecture of your notebook</dt>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">cat /proc/cpuinfo | grep "lm"</pre>
+ </dd>
+ <dd>If you get a message like this:</dd>
+ <dd><pre class="terminal">flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts<br/>acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64<br/>monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm</pre>
+ </dd>
+ <dd>then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it</dd>
+ </dl>
+ <p> </p>
+
+ <a name="fully-free"></a><h2>Fully free GNU/Linux Distributions</h2>
+
+ <p>Following are the <a href="http://www.gnu.org/gnu/linux-and-gnu.html">GNU/Linux</a> distributions we know of which have a firm policy
+ commitment to only include and only propose free software. They reject non-free applications, non-free programming
+ platforms, non-free drivers, or non-free firmware “blobs”. If by mistake they do include any, they remove it. To
+ learn more about what makes for a <a href="http://www.gnu.org/distros/free-distros.html">free GNU/Linux
+ distribution</a>, see GNU <a href="http://www.gnu.org/distros/free-system-distribution-guidelines.html">Guidelines for
+ Free System Distributions</a>.</p>
+
+ <p><strong>All of the distributions that follow are installable to a computer's hard drive and most can be run
+ live.</strong></p>
+
+ <p>(listed in alphabetical order)</p>
+
+ <!-- p>They are listed in alphabetical order</p -->
+ <ul>
+ <li><a href="http://www.dragora.org">Dragora GNU/Linux</a></li>
+ <li><a href="http://dynebolic.org/">Dynebolic GNU/Linux</a></li>
+ <li><a href="http://www.musix.org.ar/">Musix GNU+Linux</a></li>
+ <li><a href="https://parabolagnulinux.org/">Parabola GNU/Linux</a></li>
+ <li><a href="http://trisquel.info/">Trisquel GNU/Linux</a></li>
+ <li><a href="http://www.ututo.org/www/">Ututo GNU/Linux</a></li>
+ <li><a href="http://venenux.org/">Venenux GNU/Linux</a></li>
+ </ul>
+ </dl>
+ </div>
+
diff --git a/Application/Views/Desktop/Help/index_de.php b/Application/Views/Desktop/Help/index_de.php
new file mode 100644
index 0000000..e53693e
--- /dev/null
+++ b/Application/Views/Desktop/Help/index_de.php
@@ -0,0 +1,443 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010, 2011 Antonio Gallo (h-source-copyright.txt)
+// Copyright (C) 2011 Joerg Kohne
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<div class="help_external_box">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Startseite</a> &raquo; <?php echo gtext("Help");?>
+ </div>
+
+ <div class="help_tables_of_contents">
+ Inhalt
+ <ul>
+ <li><a href="<?php echo $this->currPage."/$lang#wiki-syntax";?>">Wiki-Syntax</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#compatibility";?>">Kompatibilitätsklassen</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#discover-hardware";?>">Entdecken Sie Ihre Hardware</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#fully-free";?>">Vollständig Freie GNU/Linux-Distributionen</a></li>
+ </ul>
+ </div>
+
+ <a name="wiki-syntax"></a><h2>Wiki-Syntax</h2>
+
+ <h3><?php echo Website::$generalName;?>
+ Wiki-Elemente</h3>
+
+ <table class="help_wiki_table">
+ <thead>
+ <tr>
+ <th>Name</th>
+ <th>Element</th>
+ <th>Ergebnis</th>
+ <th>Beschreibung</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Fett</td>
+ <td>[b]Fette[/b] Schrift</td>
+ <td><b>Fette</b> Schrift</td>
+ <td>Fettschrift</td>
+ </tr>
+ <tr>
+ <td>Kursiv</td>
+ <td>[i]Kursive[/i] Schrift</td>
+ <td><i>Kursive</i> Schrift</td>
+ <td>Kursivschrift</td>
+ </tr>
+ <tr>
+ <td>Gelöschter Text</td>
+ <td>[del]Gelöschter[/del] Text</td>
+ <td><del>Gelöschter</del> Text</td>
+ <td>Gelöschter Text</td>
+ </tr>
+ <tr>
+ <td>Unterstrichen</td>
+ <td>[u]Unterstrichener[/u] Text</td>
+ <td><u>Unterstrichener</u> Text</td>
+ <td>Unterstrichener Text</td>
+ </tr>
+ <tr>
+ <td>Überschrift 1</td>
+ <td>[h1]Überschrift[/h1]</td>
+ <td>
+ <div class="div_h1">
+ Überschrift</div>
+ </td>
+ <td>Überschrift Ebene 1</td>
+ </tr>
+ <tr>
+ <td>Überschrift 2</td>
+ <td>[h2]Überschrift[/h2]</td>
+ <td>
+ <div class="div_h2">
+ Überschrift</div>
+ </td>
+ <td>Überschrift Ebene 2</td>
+ </tr>
+ <tr>
+ <td>Überschrift 3</td>
+ <td>[h3]Überschrift[/h3]</td>
+ <td>
+ <div class="div_h3">
+ Überschrift</div>
+ </td>
+ <td>Überschrift Ebene 3</td>
+ </tr>
+ <tr>
+ <td>Absatz</td>
+ <td>…[p](Neuer) Absatz[/p]</td>
+ <td>…
+
+ <p>(Neuer) Absatz</p>
+ </td>
+ <td>(Neuer) Absatz</td>
+ </tr>
+ <tr>
+ <td>Auflistung</td>
+ <td><ul style="list-style-type:none;">
+ <li>[list]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]Erstes Element[/*]</li>
+ <li>[*]Zweites Element[/*]</li>
+ </ul>
+ </li>
+ <li>[/list]</li>
+ </ul>
+ </td>
+ <td><ul>
+ <li>Erstes Element</li>
+ <li>Zweites Element</li>
+ </ul>
+ </td>
+ <td>Auflistung</td>
+ </tr>
+ <tr>
+ <td>Nummerierung</td>
+ <td><ul style="list-style-type:none;">
+ <li>[enum]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]Erstes Element[/*]</li>
+ <li>[*]Zweites Element[/*]</li>
+ </ul>
+ </li>
+ <li>[/enum]</li>
+ </ul>
+ </td>
+ <td><ol>
+ <li>Erstes Element</li>
+ <li>Zweites Element</li>
+ </ol>
+ </td>
+ <td>Geordnete Liste</td>
+ </tr>
+ <tr>
+ <td>Listenelement</td>
+ <td>[*]Listenelement[/*]</td>
+ <td><ul>
+ <li>Listenelement</li>
+ </ul>
+ </td>
+ <td>Listenelement hinzufügen</td>
+ </tr>
+ <tr>
+ <td>Quelltext</td>
+ <td>[code]Quelltext[/code]</td>
+ <td><pre class="code_pre">Quelltext</pre>
+ </td>
+ <td>Codefragment</td>
+ </tr>
+ <tr>
+ <td>Verweis (einfach)</td>
+ <td>[a]Internetadresse[/a]</td>
+ <td><a href="http://Internetadresse">Internetadresse</a></td>
+ <td>Verweis (einfach)</td>
+ </tr>
+ <tr>
+ <td>Verweis (mit Text)</td>
+ <td>[a]Internetadresse|mit Text[/a]</td>
+ <td><a href="http://Internetadresse">mit Text</a></td>
+ <td>Verweis (mit Text)</td>
+ </tr>
+ <tr>
+ <td>Notebook</td>
+ <td>[notebook]ID[/notebook]</td>
+ <td><samp>ID</samp></td>
+ <td>Verweis auf das Notebook mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite
+ des Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)</td>
+ </tr>
+ <tr>
+ <td>WLAN</td>
+ <td>[wifi]ID[/wifi]</td>
+ <td><samp>ID</samp></td>
+ <td>Verweis auf das WLAN mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite des
+ Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)</td>
+ </tr>
+ <tr>
+ <td>Grafikkarte</td>
+ <td>[videocard]ID/videocard]</td>
+ <td><samp>ID</samp></td>
+ <td>Verweis auf die Grafikkarte mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite
+ des Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p> </p>
+
+ <a name="compatibility"></a><h2>Kompatibilitätsklassen</h2>
+
+ <a name="notebook-compatibility"></a><h3>Notebooks</h3>
+ <dl title="Notebook-Kompatibilität">
+ <dt class="label">Klasse A (Platin)</dt>
+ <dd>Alle Notebook-Geräte arbeiten mit sehr guter Leistung.</dd>
+ <dd class="sample"><strong>Beispiel</strong>: Alle Geräte funktionieren, auch die 3D-Beschleunigung wird
+ unterstützt.</dd>
+ <dt>Klasse B (Gold)</dt>
+ <dd>Alle Notebook-Geräte funktionieren, jedoch nicht mit voller Leistung. </dd>
+ <dd class="sample"><strong>Beispiel</strong>: Alle Geräte funktionieren, aber die 3D-Beschleunigung wird nicht
+ unterstützt.</dd>
+ <dt>Klasse C (Silber)</dt>
+ <dd>Ein wichtiges Gerät wird nicht unterstützt.</dd>
+ <dd class="sample"><strong>Beispiel</strong>: Die interne WLAN-Karte funktioniert nicht. Sie benötigen eine
+ externe USB-Karte.</dd>
+ <dt>Klasse D (Bronze)</dt>
+ <dd>Mehr als ein Gerät wird nicht unterstützt.</dd>
+ <dt>Klasse E (E-Schrott)</dt>
+ <dd>Das Notebook kann von Freie Software nicht unterstützt werden.</dd>
+ </dl>
+
+ <a name="printer-compatibility"></a><h3>Drucker</h3>
+ <dl title="Drucker-Kompatibilität">
+ <dt>Klasse A (Vollständig)</dt>
+ <dd>Alle Gerätefunktionen und -merkmale werden unterstützt.</dd>
+ <dt>Klasse B (Teilweise)</dt>
+ <dd>Drucken wird unterstützt, aber möglicherweise mit eingeschränkter Geschwindigkeit oder Druckqualität;
+ Scannen und/oder Faxen wird (bei einigen Multifunktionsgeräten möglicherweise) nicht unterstützt</dd>
+ <dt>Klasse C (E-Schrott)</dt>
+ <dd>Der Drucker kann von Freie Software nicht unterstützt werden.</dd>
+ </dl>
+
+ <a name="scanner-compatibility"></a><h3>Scanner</h3>
+ <dl title="Scanner-Kompatibilität">
+ <dt>Klasse A (Vollständig)</dt>
+ <dd>Alle Gerätefunktionen und -merkmale werden unterstützt.</dd>
+ <dt>Klasse B (Teilweise)</dt>
+ <dd>Scannen unterstützt, aber möglicherweise bei eingeschränkter Geschwindigkeit oder Qualität, einige andere
+ Funktionen werden nicht unterstützt.</dd>
+ <dt>Klasse C (E-Schrott)</dt>
+ <dd>Der Scanner kann von Freie Software nicht unterstützt werden.</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="discover-hardware"></a><h2>Entdecken Sie Ihre Hardware</h2>
+ <cite>(Vielen Dank <a href="<?php echo $this->baseUrl;?>/issues/view/en/3/1/token">lluvia</a>)</cite>
+
+ <p>Um mehr Details über Ihre Hardware zu erfahren, beachten Sie bitte folgende Punkte:</p>
+ <dl>
+ <dt>Wie man die Modellbezeichnung des Notebooks herausfindet</dt>
+ <dd>Siehe das Typenschild unterhalb Ihres tragbaren Klapprechners.</dd>
+ <a name="model-name"></a><dt>Wie man den Modellnamen der Geräte herausfindet (wenn kein tragbarer Klapprechner)</dt>
+ <dd class="opt">Wenn das Gerät eingebaut ist (z. B. eine Grafikkarte)</dd>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">lspci</pre>
+ </dd>
+ <dd>oder</dd>
+ <dd><pre class="terminal">lspci &gt; DATEINAME # Ausgabe als Datei speichern</pre>
+ </dd>
+ <!--<dd>where "filename" is the name of the file</dd>-->
+ <dd>Es sollten PCI-Geräte ähnlich der folgenden angezeigt werden:</dd>
+ <dd><pre class="terminal">
+00:18.3 Host bridge: <b>Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control</b>
+03:00.0 Network controller: <b>Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)</b>
+05:00.0 VGA compatible controller: <b>nVidia Corporation G86 [GeForce 8400M GS] (rev a1)</b></pre>
+ </dd>
+ <dd class="note"><b>Hinweis:</b> The name of each device is written after the colon (see the text
+ in bold in the above list).</dd>
+ <dd class="opt">Wenn das Gerät ein USB-Gerät ist (bspw. ein externer WLAN-Stick)</dd>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">lsusb -v</pre>
+ </dd>
+ <dd>oder</dd>
+ <dd><pre class="terminal">lsusb -v &gt; DATEINAME # Ausgabe als Datei speichern</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file.</dd -->
+ <dd>Es sollten USB-Geräte ähnlich der folgenden angezeigt werden:</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 2.00
+ bDeviceClass 0 (Defined at Interface level)
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x0846 NetGear, Inc.
+ idProduct 0x4260 <b>WG111v3 54 Mbps Wireless [realtek RTL8187B]</b>
+ bcdDevice 2.00
+ iManufacturer 1
+ iProduct 2
+ iSerial 3
+ ...
+ ...
+
+Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 1.10
+ bDeviceClass 255 Vendor Specific Class
+ bDeviceSubClass 255 Vendor Specific Subclass
+ bDeviceProtocol 255 Vendor Specific Protocol
+ bMaxPacketSize0 8
+ idVendor 0x08ff AuthenTec, Inc.
+ idProduct 0x2580 <b>AES2501 Fingerprint Sensor</b>
+ bcdDevice 6.23
+ iManufacturer 0
+ iProduct 1 Fingerprint Sensor
+ iSerial 0
+ bNumConfigurations 1
+ ...
+ ...
+ </pre>
+ </dd>
+ <dd class="note"><b>Hinweis:</b> Die Gerätebezeichnung wird in der Zeile „idProduct“ nach dem Doppelpunkt
+ angegeben (siehe Text in Fettdruck).</dd>
+ <!-- <dt>Wie man das Jahr der Vermarktung des Notebooks herausfindet</dt>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">sudo dmidecode| grep "Release Date"</pre></dd>
+ <dd class="sample">Es sollte ein Datum ähnlich dem <code>Release Date: 05/28/2011</code> (MM/TT/JJJJ) angezeigt werden.</dd -->
+ <dt>Wie man den verwendeten Betriebssystemkern („Kernel“) herausfindet</dt>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">uname -r</pre>
+ </dd>
+ <dt name="video-card">Wie man den Namen der Grafikkarte herausfindet</dt>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Suchen Sie dann nach der Zeile mit der Zeichenfolge <strong><code>VGA</code></strong> oder
+ <strong><code>Display Controller</code></strong>. Alternativ können Sie auch folgenden Befehl versuchen:
+ </dd>
+ <dd><pre class="terminal">lspci | grep "Display controller"</pre>
+ </dd>
+ <dd>oder</dd>
+ <dd><pre class="terminal">lspci | grep "VGA"</pre>
+ </dd>
+ <a name="vendoridproductid"></a><dt>Wie man Anbieter- und Produkt-ID des Geräts herausfindet (VendorID:ProductID)</dt>
+ <dd><cite>(Vielen Dank an <a
+ href="http://trisquel.info/de/forum/h-nodecom-new-website-hardware-database#comment-5839">Michał Masłowski</a>
+ und <a href="http://trisquel.info/de/forum/h-nodecom-new-website-hardware-database#comment-5837">Julius22</a>)
+ </cite></dd>
+ <dd class="opt">Wenn das Gerät eingebaut ist (z. B. eine Grafikkarte)</dd>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">sudo lspci -nnk</pre>
+ </dd>
+ <dd>Es sollte eine Hardwareliste ähnlich der folgenden angezeigt werden:</dd>
+ <dd><pre class="terminal">
+03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [<b>14e4:4311</b>] (rev 02)
+ Kernel driver in use: b43-pci-bridge
+ Kernel modules: ssb
+05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [<b>10de:0427</b>] (rev a1)
+ Kernel modules: nouveau, nvidiafb</pre>
+ </dd>
+ <dd class="note"><b>Hinweis:</b> Die Zeichenfolgen in <b>fetter Schrift</b> und in den eckigen Klammern […
+ <strong>:</strong> …] sind die Daten, nach denen Sie gesucht haben. Die erste Zeichengruppe (vor dem
+ Doppelpunkt) ist die <b>Anbieter-ID</b>, die zweite Zeichengruppe (nach dem Doppelpunkt) die <b>Produkt-ID</b>.
+ Im obigen Beispiel wären Anbieter- und Produkt-ID-Code der WLAN-Karte (beachten Sie die Zeichenfolgen „Network
+ Controller“ und „WLAN“) <b>14e4:4311</b>, die der Grafikkarte (beachten Sie die Zeichenfolge „VGA“)
+ <b>10DE:0427</b>.</dd>
+ <dd class="opt">Wenn das Gerät ein USB-Gerät ist (bspw. ein externer USB-WLAN-Stick)</dd>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">sudo lsusb</pre>
+ </dd>
+ <dd>Es sollte eine Hardwareliste ähnlich der folgenden angezeigt werden:</dd>
+ <dd><pre class="terminal">Bus 001 Device 002: ID <b>0846:4260</b> NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]<br>Bus 001 Device 001: ID <b>1d6b:0002</b> Linux Foundation 2.0 root hub<br>Bus 002 Device 003: ID <b>08ff:2580</b> AuthenTec, Inc. AES2501 Fingerprint Sensor<br></pre>
+ </dd>
+ <dd class="note"><b>Hinweis:</b> Die Zeichenfolgen in <b>fetter Schrift</b> und in den eckigen Klammern […] sind
+ die Daten, nach denen Sie gesucht haben. Die erste Zeichengruppe (vor dem Doppelpunkt) ist die
+ <b>Anbieter-ID</b>, die zweite Zeichengruppe (nach dem Doppelpunkt) die <b>Produkt-ID</b>. Im obigen Beispiel
+ wären Anbieter- und Produkt-ID-Code des externen USB-WLAN-Sticks (beachten Sie die Zeichenfolge „Wireless“)
+ <b>0846:4260</b>.</dd>
+ <dt name="vga">Wie man herausfindet, ob die Grafikkarte (über den VGA-Standard hinaus) funktioniert</dt>
+ <dd>Installieren Sie das Paket <code><a href="http://rss-glx.sourceforge.net/">rss-glx</a></code> mittels
+ Paketverwaltung Ihrer Distribution oder Kompilieren Sie den Quellcode und testen einige Bildschirmschoner (z. B.
+ <b>Skyrocket</b> oder <b>Solarwinds</b>). Überprüfen Sie, ob die Bildschirmschoner angezeigt werden können
+ (und/oder ruckelfrei wiedergegeben werden).
+ </dd>
+ <dt>Wie man herausfindet, ob die 3D-Beschleunigung funktioniert</dt>
+ <dd>Versuchen Sie, „compiz“ zu aktivieren.</dd>
+ <dt>Wie man den Namen Ihrer WLAN-Karte herausfindet</dt>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Suchen Sie dann nach der Zeile mit der Zeichenfolge <b><samp>Wireless</samp></b> oder <b><samp>Network
+ Controller</samp></b>. Alternativ können Sie auch folgenden Befehle versuchen:
+ </dd>
+ <dd><pre class="terminal">lspci | grep "Wireless"</pre></dd>
+ <dd>oder</dd>
+ <dd><pre class="terminal">lspci | grep "Network"</pre>
+ </dd>
+ <dt>Wie man den verwendeten Druckertreiber herausfindet</dt>
+ <dd class="opt">Wenn Sie „cups“ verwenden</dd>
+ <dd>Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:</dd>
+ <dd><pre class="terminal">dpkg-query -W -f '${Version}\n' cups</pre>
+ </dd>
+ <dt>How to discover the architecture of your notebook</dt>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">cat /proc/cpuinfo | grep "lm"</pre>
+ </dd>
+ <dd>If you get a message like this:</dd>
+ <dd><pre class="terminal">flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts<br/>acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64<br/>monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm</pre>
+ </dd>
+ <dd>then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="fully-free"></a><h2>Freie GNU/Linux-Distributionen</h2>
+
+ <p>Dies sind <a href="http://www.gnu.org/gnu/linux-and-gnu.de.html">GNU/Linux</a>-Distributionen, von denen wir von einer
+ festgelegten Richtlinie wissen, ausschließlich Freie Software zu verwenden und anzubieten. Unfreie Anwendungen,
+ unfreie Programmierplattformen, unfreie Treiber oder unfreie Firmware („BLOBs“) werden, auch wenn versehentlich
+ enthalten, entfernt. Weitere Informationen über <a href="http://www.gnu.org/distros/free-distros.html">Freie
+ GNU/Linux-Distribution</a> finden Sie unter <a
+ href="http://www.gnu.org/distros/free-system-distribution-guidelines.html">Richtlinien für Freie
+ Distributionen</a>.</p>
+
+ <p><strong>Alle Distributionen können auf der Festplatte Ihres Rechners installiert und die meisten Live ausgeführt
+ werden.</strong></p>
+
+ <p>(In alphabetischer Reihenfolge)</p>
+
+ <ul>
+ <li><a href="http://www.dragora.org">Dragora GNU/Linux</a></li>
+ <li><a href="http://dynebolic.org/">Dynebolic GNU/Linux</a></li>
+ <li><a href="http://www.musix.org.ar/">Musix GNU+Linux</a></li>
+ <li><a href="https://parabolagnulinux.org/">Parabola GNU/Linux</a></li>
+ <li><a href="http://trisquel.info/">Trisquel GNU/Linux</a></li>
+ <li><a href="http://www.ututo.org/www/">Ututo GNU/Linux</a></li>
+ <li><a href="http://venenux.org/">Venenux GNU/Linux</a></li>
+ </ul>
+ </div>
+
diff --git a/Application/Views/Desktop/Help/index_es.php b/Application/Views/Desktop/Help/index_es.php
new file mode 100644
index 0000000..acbdf6b
--- /dev/null
+++ b/Application/Views/Desktop/Help/index_es.php
@@ -0,0 +1,440 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010, 2011 Antonio Gallo (h-source-copyright.txt)
+// Copyright (C) 2011 Joerg Kohne
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<div class="help_external_box">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Inicio</a> &raquo; <?php echo gtext("Help");?>
+ </div>
+
+ <div class="help_tables_of_contents">
+ Tabla de contenidos
+ <ul>
+ <li><a href="<?php echo $this->currPage."/$lang#wiki-syntax";?>">Sintaxis del Wiki</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#compatibility";?>">Clases de Compatibilidad</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#discover-hardware";?>">Descubra su hardware</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#fully-free";?>">Lista de las distribuciones GNU/Linux completamente libres</a></li>
+ </ul>
+ </div>
+
+ <a name="wiki-syntax"></a><h2>Sintaxis del Wiki</h2>
+
+ <h3>Lista de las etiquetas wiki de <?php echo Website::$generalName;?>
+ </h3>
+
+ <table class="wiki">
+ <thead>
+ <tr>
+ <th>nombre</th>
+ <th>etiqueta</th>
+ <th>resultado</th>
+ <th>descripción</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>bold</td>
+ <td>[b]texto[/b]</td>
+ <td><b>texto</b></td>
+ <td>texto en negrita</td>
+ </tr>
+ <tr>
+ <td>italic</td>
+ <td>[i]texto[/i]</td>
+ <td><i>texto</i></td>
+ <td>texto en cursiva</td>
+ </tr>
+ <tr>
+ <td>del</td>
+ <td>[del]texto[/del]</td>
+ <td><del>texto</del></td>
+ <td>texto eliminado</td>
+ </tr>
+ <tr>
+ <td>underline</td>
+ <td>[u]texto[/u]</td>
+ <td><u>texto</u></td>
+ <td>texto subrayado</td>
+ </tr>
+ <tr>
+ <td>head 1</td>
+ <td>[h1]texto[/h1]</td>
+ <td>
+ <div class="div_h1">
+ texto</div>
+ </td>
+ <td>encabezado 1</td>
+ </tr>
+ <tr>
+ <td>head 2</td>
+ <td>[h2]texto[/h2]</td>
+ <td>
+ <div class="div_h2">
+ texto</div>
+ </td>
+ <td>encabezado 2</td>
+ </tr>
+ <tr>
+ <td>head 3</td>
+ <td>[h3]texto[/h3]</td>
+ <td>
+ <div class="div_h3">
+ texto</div>
+ </td>
+ <td>encabezado 3</td>
+ </tr>
+ <tr>
+ <td>paragraph</td>
+ <td>[p]texto[/p]</td>
+ <td><p>texto</p>
+ </td>
+ <td>nuevo párrafo</td>
+ </tr>
+ <tr>
+ <td>list item</td>
+ <td>[*]objeto[/*]</td>
+ <td><ul>
+ <li>objeto</li>
+ </ul>
+ </td>
+ <td>agrega un objeto a la lista</td>
+ </tr>
+ <tr>
+ <td>lista </td>
+ <td><ul style="list-style-type:none;">
+ <li>[list]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]first item[/*]</li>
+ <li>[*]second item[/*]</li>
+ </ul>
+ </li>
+ <li>[/list]</li>
+ </ul>
+ </td>
+ <td><ul>
+ <li>first item</li>
+ <li>second item</li>
+ </ul>
+ </td>
+ <td>hace una lista de objetos</td>
+ </tr>
+ <tr>
+ <td>numbered list</td>
+ <td><ul style="list-style-type:none;">
+ <li>[enum]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]first item[/*]</li>
+ <li>[*]second item[/*]</li>
+ </ul>
+ </li>
+ <li>[/enum]</li>
+ </ul>
+ </td>
+ <td><ol>
+ <li>first item</li>
+ <li>second item</li>
+ </ol>
+ </td>
+ <td>hace una lista numerada de objetos</td>
+ </tr>
+ <tr>
+ <td>code</td>
+ <td>[code]código[/code]</td>
+ <td><pre class="code_pre">código</pre>
+ </td>
+ <td>agrega código</td>
+ </tr>
+ <!--
+ <tr>
+ <td>simple link</td>
+ <td>[a]url[/a]</td>
+ <td>&lt;a href="url"&gt;url&lt;/a&gt;</td>
+ <td>enlace simple</td>
+ </tr>
+ -->
+ <tr>
+ <td>link with text</td>
+ <td>[a]url|text[/a]</td>
+ <td><a href="url">text</a></td>
+ <td>enlace con texto</td>
+ </tr>
+ <tr>
+ <td>notebook</td>
+ <td>[notebook]1234:5678[/notebook]</td>
+ <td>1234:5678</td>
+ <td>enlace al computador portátil con el identificador id (el identificador de cada modelo de dispositivo esta escrito en la
+ página del dispositivo mismo, seguido del nombre del modelo)</td>
+ </tr>
+ <tr>
+ <td>wifi</td>
+ <td>[wifi]1234:5678[/wifi]</td>
+ <td>1234:5678</td>
+ <td>enlace al wifi con el identificador id (el identificador de cada modelo de dispositivo esta escrito en la
+ página del dispositivo mismo, seguido del nombre del modelo)</td>
+ </tr>
+ <tr>
+ <td>videocard</td>
+ <td>[videocard]1234:5678/videocard]</td>
+ <td>1234:5678</td>
+ <td>enlace a la tarjeta de video con el identificador id (el identificador de cada modelo de dispositivo esta
+ escrito en la página del dispositivo mismo, seguido del nombre del modelo)</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p></p>
+
+ <a name="compatibility"></a><h2>Clases de Compatibilidad</h2>
+
+ <a name="notebook-compatibility"></a><h3>Computadores portátiles</h3>
+ <dl>
+ <dt>Clase A (Platino)</dt>
+ <dd>Todos los dispositivos funcionan con un buen desempeño. </dd>
+ <dd class="example">Ejemplo: todos los dispositivos funcionan, la aceleración 3D esta soportada</dd>
+ <dt>Clase B (Oro)</dt>
+ <dd>Todos los dispositivos funcionan pero no a su rendimiento completo. </dd>
+ <dd class="example">Un ejemplo típico es: todos los dispositivos funcionan, pero la aceleración 3D no esta
+ soportada</dd>
+ <dt>Clase C (Plata)</dt>
+ <dd>Un dispositivo principal no esta soportado. </dd>
+ <dd class="example">Ejemplo: la tarjeta inalámbrica interna no funciona. Necesita una tarjeta USB externa</dd>
+ <dt>Clase D (Bronce)</dt>
+ <dd>Más de un dispositivo no esta soportado</dd>
+ <dt>Clase E (Basura)</dt>
+ <dd>El equipo no funciona con software libre</dd>
+ </dl>
+
+ <a name="printer-compatibility"></a><h3>Impresoras</h3>
+ <dl>
+ <dt>Clase A (Completo)</dt>
+ <dd>Todos los dispositivos funcionan y las características soportadas</dd>
+ <dt>Clase B (Parcial)</dt>
+ <dd>La impresión esta soportada pero a velocidad o calidad limitada; escaneo y/o envío por fax en algunos
+ dispositivos multifuncionales pueden no estar soportados</dd>
+ <dt>Clase C (Ninguno)</dt>
+ <dd>La impresora no funciona con software libre</dd>
+ </dl>
+
+ <a name="scanner-compatibility"></a><h3>Escáners</h3>
+ <dl>
+ <dt>Clase A (Completo)</dt>
+ <dd>Todos los dispositivos funcionan y las características soportadas</dd>
+ <dt>Clase B (Parcial)</dt>
+ <dd>El escanéo es soportado pero a velocidad o calidad limitada; otras características pueden no estar soportadas</dd>
+ <dt>Clase C (Ninguno)</dt>
+ <dd>El escaner no funciona con software libre</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="discover-hardware"></a><h2>Descubra su hardware</h2>
+ <cite>(Gracias <a href="<?php echo $this->baseUrl;?>/issues/view/en/3/1/token">lluvia</a>)</cite>
+
+ <p>En orden de conocer los detalles de su hardware puede seguir las siguientes acciones:</p>
+ <dl>
+ <dt>Como descubrir el modelo de su computador portátil</dt>
+ <dd>Vea debajo de su computador portátil o subportátil</dd>
+ <a name="model-name"></a><dt>Como descubrir el nombre del modelo de su dispositivo (si no es un computador portátil)</dt>
+ <dd class="opt">Si el dispositivo es integrado (ejemplo: una tarjeta de video)</dd>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">lspci</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lspci &gt; FILENAME # output to a file</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file</dd -->
+ <dd>Obtendrá la lista de sus dispositivos PCI, similar a la mostrada debajo</dd>
+ <dd><pre class="terminal">
+00:18.3 Host bridge: <b>Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control</b>
+03:00.0 Network controller: <b>Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)</b>
+05:00.0 VGA compatible controller: <b>nVidia Corporation G86 [GeForce 8400M GS] (rev a1)</b>
+ </pre>
+ </dd>
+ <dd>El nombre de cada dispositivo esta escrito después de los dos puntos (vea el texto en negrita en la lista superior)</dd>
+ <dd class="opt">Si el dispositivo es un dispositivo USB (ejemplo: una tarjeta externa USB de red inalámbrica)</dd>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">lsusb -v</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lsusb -v &gt; filename # write the output to a file</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file</dd -->
+ <dd>Obtendrá la lista de sus dispositivos USB, similar a la mostrada debajo</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 2.00
+ bDeviceClass 0 (Defined at Interface level)
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x0846 NetGear, Inc.
+ idProduct 0x4260 <b>WG111v3 54 Mbps Wireless [realtek RTL8187B]</b>
+ bcdDevice 2.00
+ iManufacturer 1
+ iProduct 2
+ iSerial 3
+ ...
+ ...
+
+Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 1.10
+ bDeviceClass 255 Vendor Specific Class
+ bDeviceSubClass 255 Vendor Specific Subclass
+ bDeviceProtocol 255 Vendor Specific Protocol
+ bMaxPacketSize0 8
+ idVendor 0x08ff AuthenTec, Inc.
+ idProduct 0x2580 <b>AES2501 Fingerprint Sensor</b>
+ bcdDevice 6.23
+ iManufacturer 0
+ iProduct 1 Fingerprint Sensor
+ iSerial 0
+ bNumConfigurations 1
+ ...
+ ...
+ </pre>
+ </dd>
+ <dd>El nombre de cada disposiitivo es escrito en la fila comenzando con "idProduct" (vea el texto en negritas en la lista superior)</dd>
+ <dt>Como descubrir el año de comercialización de su computador portátil</dt>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">sudo dmidecode| grep "Release Date"</pre>
+ </dd>
+ <dt>Como descubrir la versión de kernel que esta usando</dt>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">uname -r</pre>
+ </dd>
+ <dt>Como descubrir el nombre de su tarjeta de video</dt>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Después busque por la linea que contenga la cadena VGA o Display controller. También puede usar uno de las
+ siguientes ordenes:</dd>
+ <dd><pre class="terminal">lspci | grep "Display controller"</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lspci | grep "VGA"</pre>
+ </dd>
+ <a name="vendoridproductid"></a><dt>Como descubrir el ID del vendedor y el ID del producto de su dispositivo (código
+ VendorID:ProductID)</dt>
+ <dd><cite>(Gracias <a
+ href="http://trisquel.info/es/forum/h-nodecom-new-website-hardware-database#comment-5839">Michał Masłowski</a>
+ y <a
+ href="http://trisquel.info/es/forum/h-nodecom-new-website-hardware-database#comment-5837">Julius22</a>)</cite>
+ </dd>
+ <dd class="opt">Si el dispositivo es integrado (ejemplo: una tarjeta de video)</dd>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">sudo lspci -nnk</pre>
+ </dd>
+ <dd>Debe de obtener una lista de hardware similar a la escriba debajo</dd>
+ <dd><pre class="terminal">
+03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [<b>14e4:4311</b>] (rev 02)
+ Kernel driver in use: b43-pci-bridge
+ Kernel modules: ssb
+05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [<b>10de:0427</b>] (rev a1)
+ Kernel modules: nouveau, nvidiafb</pre>
+ </dd>
+ <dd>Las cadenas en <b>negritas</b> y colocadas en los corchetes (en la lista superior) son los códigos que esta
+ buscando. El primer grupo de dígitos (antes de los dos puntos) son el <b>VendorID</b>, el segundo grupo de
+ dígitos son el <b>ProductID</b>. En el ejemplo superior: el código VendorID:ProductID de la tarjeta
+ inalámbrica (note las cadenas "Network controller" y "WLAN") es <b>14e4:4311</b> mientras el código
+ VendorID:ProductID de la tarjeta de video (note la cadena "VGA") es <b>10de:0427</b></dd>
+ <dd class="opt">Si el dispositivo es un dispositivo USB (ejemplo: una tarjeta USB externa)</dd>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">sudo lsusb</pre>
+ </dd>
+ <dd>Debe de obtener una lista de hardware similar a la descrita a continuación</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID <b>0846:4260</b> NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Bus 001 Device 001: ID <b>1d6b:0002</b> Linux Foundation 2.0 root hub
+Bus 002 Device 003: ID <b>08ff:2580</b> AuthenTec, Inc. AES2501 Fingerprint Sensor</pre>
+ </dd>
+ <dd>Las cadenas en <b>negritas</b> (en la lista superior) son el código que busca. El primer grupo de dígitos
+ (antes de los dos puntos) son el <b>VendorID</b>, el segundo grupo de dígitos son el <b>ProductID</b>. En el
+ ejemplo superior: el código VendorID:ProductID de la tarjeta inalámbrica USB externa (note la cadena
+ "Wireless") es <b>0846:4260</b></dd>
+ <dt>Como descubrir si la tarjeta de video funciona</dt>
+ <dd>Instale <code><a href="http://rss-glx.sourceforge.net/">rss-glx</a></code> por lo medios del administrador
+ de paquetes de su distribución o por medio de compilar el código fuente y pruebe algunos protectores de
+ pantalla (por ejemplo <b>Skyrocket</b> o <b>Solarwinds</b>). Revise si puede ejecutar el protector de pantalla
+ (y/o si puede mostrarlo suavemente)
+ </dd>
+ <dt>Como descubrir si la aceleración 3D funciona</dt>
+ <dd>Intente activar compiz</dd>
+ <dt>Como descubrir el nombre de su tarjeta de inalámbrica</dt>
+ <dd>Abra una terminal y escriba la siguiente orden:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Después busque por la linea que contenga la cadena <samp><b>Wireless</b></samp> o <samp><b>Network
+ controller</b></samp>. También puede intentar una de las siguientes ordenes</dd>
+ <dd><pre class="terminal">lspci | grep "Wireless"</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lspci | grep "Network"</pre>
+ </dd>
+ <dt>Como descubrir el driver de la impresora que esta usando</dt>
+ <dd class="opt">Si usa cups</dd>
+ <dd>Abra una terminal y escriba la orden siguiente:</dd>
+ <dd><pre class="terminal">dpkg-query -W -f '${Version}\n' cups</pre>
+ </dd>
+ <dt>Como descubrir la arquitectura de su computador portátil</dt>
+ <dd>Abra una terminal y escriba la orden siguiente:</dd>
+ <dd><pre class="terminal">cat /proc/cpuinfo | grep "lm"</pre>
+ </dd>
+ <dd>Si obtiene un mensaje como este:</dd>
+ <dd><pre class="terminal">flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts<br/>acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64<br/>monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm</pre>
+ </dd>
+ <dd>entonces su equipo es compatible con x86-64/amd64 y podría elegir una distro x86-64/amd64 para correr en él.</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="fully-free"></a><h2>Lista de las distribuciones GNU/Linux completamente libres</h2>
+
+ <p>A continuación se enlistan las distribuciones <a href="http://www.gnu.org/gnu/linux-and-gnu.es.html">GNU/Linux</a> que sabemos tiene un
+ compromiso firme en su política para solo incluir y solo proponer software libre. Estas rechazan aplicaciones no libres, plataformas de
+ programación no libres, controladores no libres, o “blobs” de firmware no libre. Si por error llegan a incluirlo, lo eliminarán. Para
+ aprender más acerca de que hace una <a href="http://www.gnu.org/distros/free-distros.es.html">distribución GNU/Linux libre</a>,
+ vea las <a href="http://www.gnu.org/distros/free-system-distribution-guidelines.es.html">pautas para distribuciones de sistemas
+ libres</a> de GNU.</p>
+
+ <p><strong>Todas las distribuciones que aparecen a continuación se pueden instalar en el disco duro y muchas funcionan
+ sin instalación.</strong></p>
+
+ <p>(En orden alfabético)</p>
+
+ <ul>
+ <li><a href="http://www.dragora.org">Dragora GNU/Linux</a></li>
+ <li><a href="http://dynebolic.org/">Dynebolic GNU/Linux</a></li>
+ <li><a href="http://www.musix.org.ar/">Musix GNU+Linux</a></li>
+ <li><a href="https://parabolagnulinux.org/">Parabola GNU/Linux</a></li>
+ <li><a href="http://trisquel.info/">Trisquel GNU/Linux</a></li>
+ <li><a href="http://www.ututo.org/www/">Ututo GNU/Linux</a></li>
+ <li><a href="http://venenux.org/">Venenux GNU/Linux</a></li>
+ </ul>
+ </div>
+
diff --git a/Application/Views/Desktop/Help/index_fr.php b/Application/Views/Desktop/Help/index_fr.php
new file mode 100644
index 0000000..3e46137
--- /dev/null
+++ b/Application/Views/Desktop/Help/index_fr.php
@@ -0,0 +1,432 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010, 2011 Antonio Gallo (h-source-copyright.txt)
+// Copyright (C) 2011 Joerg Kohne
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<div class="help_external_box">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("Help");?>
+ </div>
+
+ <div class="help_tables_of_contents">
+ Sommaire
+ <ul>
+ <li><a href="<?php echo $this->currPage."/$lang#wiki-syntax";?>">Syntaxe Wiki</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#compatibility";?>">Niveau de compatibilitée</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#discover-hardware";?>">Découvrez votre matériel</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#fully-free";?>">Liste de distribution GNU/Linux entièrement libre</a></li>
+ </ul>
+ </div>
+
+ <a name="wiki-syntax"></a><h2>Syntaxe Wiki</h2>
+
+ <h3>Liste des tags Wiki sur <?php echo Website::$generalName;?>
+ </h3>
+
+ <table class="help_wiki_table" width="100%" border="1">
+ <thead>
+ <tr>
+ <th>name</th>
+ <th>tag</th>
+ <th>result</th>
+ <th width="40%">description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>bold</td>
+ <td>[b]text[/b]</td>
+ <td><b>text</b></td>
+ <td>text bold</td>
+ </tr>
+ <tr>
+ <td>italic</td>
+ <td>[i]text[/i]</td>
+ <td><i>text</i></td>
+ <td>text italic</td>
+ </tr>
+ <tr>
+ <td>del</td>
+ <td>[del]text[/del]</td>
+ <td><del>text</del></td>
+ <td>text deleted</td>
+ </tr>
+ <tr>
+ <td>underline</td>
+ <td>[u]text[/u]</td>
+ <td><u>text</u></td>
+ <td>text underlined</td>
+ </tr>
+ <tr>
+ <td>head 1</td>
+ <td>[h1]text[/h1]</td>
+ <td>
+ <div class="div_h1">
+ text</div>
+ </td>
+ <td>head 1</td>
+ </tr>
+ <tr>
+ <td>head 2</td>
+ <td>[h2]text[/h2]</td>
+ <td>
+ <div class="div_h2">
+ text</div>
+ </td>
+ <td>head 2</td>
+ </tr>
+ <tr>
+ <td>head 3</td>
+ <td>[h3]text[/h3]</td>
+ <td>
+ <div class="div_h3">
+ text</div>
+ </td>
+ <td>head 3</td>
+ </tr>
+ <tr>
+ <td>paragraph</td>
+ <td>[p]text[/p]</td>
+ <td><p>text</p>
+ </td>
+ <td>new paragraph</td>
+ </tr>
+ <tr>
+ <td>list item</td>
+ <td>[*]item[/*]</td>
+ <td><ul>
+ <li>item</li>
+ </ul>
+ </td>
+ <td>ad an item to a list</td>
+ </tr>
+ <tr>
+ <td>List </td>
+ <td><ul style="list-style-type:none;">
+ <li>[list]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]first item[/*]</li>
+ <li>[*]second item[/*]</li>
+ </ul>
+ </li>
+ <li>[/list]</li>
+ </ul>
+ </td>
+ <td><ul>
+ <li>first item</li>
+ <li>second item</li>
+ </ul>
+ </td>
+ <td>make a list of items</td>
+ </tr>
+ <tr>
+ <td>Numbered list </td>
+ <td><ul style="list-style-type:none;">
+ <li>[enum]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]first item[/*]</li>
+ <li>[*]second item[/*]</li>
+ </ul>
+ </li>
+ <li>[/enum]</li>
+ </ul>
+ </td>
+ <td><ol>
+ <li>first item</li>
+ <li>second item</li>
+ </ol>
+ </td>
+ <td>make a numbered list of items</td>
+ </tr>
+ <tr>
+ <td>code</td>
+ <td>[code]some code[/code]</td>
+ <td><pre class="code_pre">some code</pre>
+ </td>
+ <td>ad some code</td>
+ </tr>
+ <tr>
+ <td>simple link</td>
+ <td>[a]url[/a]</td>
+ <td><a href="url">url</a></td>
+ <td>simple link</td>
+ </tr>
+ <tr>
+ <td>link with text</td>
+ <td>[a]url|text[/a]</td>
+ <td><a href="url">text</a></td>
+ <td>link with text</td>
+ </tr>
+ <tr>
+ <td>notebook</td>
+ <td>[notebook]id[/notebook]</td>
+ <td> </td>
+ <td>link to the notebook with the identifier equal to id (the identifier of each device model is written in the
+ page of the device itself, next to the model name)</td>
+ </tr>
+ <tr>
+ <td>wifi</td>
+ <td>[wifi]id[/wifi]</td>
+ <td> </td>
+ <td>link to the wifi with the identifier equal to id (the identifier of each device model is written in the page
+ of the device itself, next to the model name)</td>
+ </tr>
+ <tr>
+ <td>videocard</td>
+ <td>[videocard]id[/videocard]</td>
+ <td> </td>
+ <td>link to the videocard with the identifier equal to id (the identifier of each device model is written in the
+ page of the device itself, next to the model name)</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p> </p>
+
+ <a name="compatibility"></a><h2>Niveau de compatibilitée</h2>
+
+ <a name="notebook-compatibility"></a><h3>Notebooks</h3>
+ <dl>
+ <dt>Classe A (Platinium)</dt>
+ <dd>Tout le matériel du notebook fonctionne avec du logiciel libre. </dd>
+ <dd class="example">Exemple : la 3D fonctionne, le son et la wifi également</dd>
+ <dt>Classe B (Or)</dt>
+ <dd>Tout le matériel du notebook fonctionne, mais avec des performances réduites. </dd>
+ <dd class="example">Exemple : la carte graphique est reconnues mais la 3D ne fonctionne pas</dd>
+ <dt>Classe C (Argent)</dt>
+ <dd>Un matériel principal ne fonctionne pas. </dd>
+ <dd class="example">Exemple : La carte wifi ne fonctionne pas</dd>
+ <dt>Classe D (Bronze)</dt>
+ <dd>Plus d'un matériel ne fonctionne pas avec du logiciel libre</dd>
+ <dt>Classe E (Poubelle)</dt>
+ <dd>Aucun matériel ne fonctionne avec du logiciel libre</dd>
+ </dl>
+
+ <a name="printer-compatibility"></a><h3>Imprimantes</h3>
+ <dl>
+ <dt>Classe A (Complet)</dt>
+ <dd>Toutes les fonctionnalitées de l'imprimante fonctionne avec du logiciel libre</dd>
+ <dt>Classe B (Partielle)</dt>
+ <dd>La fonction d'impression fonctionne, mais à une vitesse ou qualitée limitée. </dd>
+ <dd class="example">Exemple : Le scan ou le fax sur certains appareils peut ne pas être supportés</dd>
+ <dt>Classe C (Aucun)</dt>
+ <dd>L'imprimante ne fonctionne pas avec du logiciel libre</dd>
+ </dl>
+
+ <a name="scanner-compatibility"></a><h3>Scanners</h3>
+ <dl>
+ <dt>Classe A (Complet)</dt>
+ <dd>Toutes les fonctionnalitées du scanner sont supportées</dd>
+ <dt>Classe B (Partielle)</dt>
+ <dd>Le scanner fonctionne mais à une vitesse ou qualitée limitée, d'autres fonctionnalitées peuvent ne pas
+ fonctionner</dd>
+ <dt>Classe C (Aucun)</dt>
+ <dd>Le scanner ne fonctionne pas avec du logiciel libre</dd>
+ </dl>
+
+ <a name="discover-hardware"></a><h2>Découvrez votre matériel</h2>
+ <cite>(Merci <a href="<?php echo $this->baseUrl;?>/issues/view/en/3/1/token">lluvia</a>) </cite>
+
+ <p>Pour connaitre votre matériel en détails, vous pouviez faire les choses suivantes:</p>
+ <dl>
+ <dt>Comment découvrir le modèle de votre notebook</dt>
+ <dd>See below your notebook or netbook</dd>
+ <a name="model-name"></a><dt>How to discover the model name of your device (if it is not a notebook)</dt>
+ <dd class="opt">If the device is integrated (example: a video card)</dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">lspci</pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lspci &gt; FILENAME # output to a file</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file</dd -->
+ <dd>You will obtain the list of your PCI devices, similar to the one written below</dd>
+ <dd><pre class="terminal">
+00:18.3 Host bridge: <b>Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control</b>
+03:00.0 Network controller: <b>Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)</b>
+05:00.0 VGA compatible controller: <b>nVidia Corporation G86 [GeForce 8400M GS] (rev a1)</b>
+ </pre>
+ </dd>
+ <dd>The name of each device is written after the colon (see the text in bold in the above
+ list)</dd>
+ <dd class="opt">If the device is an USB device (example: an external USB wifi card)</dd>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">lsusb -v</pre>
+ </dd>
+ <dd>or</dd>
+ <dd><pre class="terminal">lsusb -v &gt; FILENAME # output to a file</pre>
+ </dd>
+ <!-- dd>where "filename" is the name of the file</dd -->
+ <dd>You will obtain the list of your USB devices, similar to the one written below</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 2.00
+ bDeviceClass 0 (Defined at Interface level)
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x0846 NetGear, Inc.
+ idProduct 0x4260 <b>WG111v3 54 Mbps Wireless [realtek RTL8187B]</b>
+ bcdDevice 2.00
+ iManufacturer 1
+ iProduct 2
+ iSerial 3
+ ...
+ ...
+
+Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 1.10
+ bDeviceClass 255 Vendor Specific Class
+ bDeviceSubClass 255 Vendor Specific Subclass
+ bDeviceProtocol 255 Vendor Specific Protocol
+ bMaxPacketSize0 8
+ idVendor 0x08ff AuthenTec, Inc.
+ idProduct 0x2580 <b>AES2501 Fingerprint Sensor</b>
+ bcdDevice 6.23
+ iManufacturer 0
+ iProduct 1 Fingerprint Sensor
+ iSerial 0
+ bNumConfigurations 1
+ ...
+ ...
+ </pre>
+ </dd>
+ <dd>The name of each device is written at the row starting with "idProduct" (see the text in bold in the above
+ list)</dd>
+ <dt>Trouver la version du noyau linux libre que vous utilisez</dt>
+ <dd>Ouvrez un terminal et tapez la commande suivant:</dd>
+ <dd><pre class="terminal">uname -r</pre>
+ </dd>
+ <dt>Comment trouver le modèle de votre carte graphique</dt>
+ <dd>Ouvrez un terminal et taper la commande suivante:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Chercher la ligne qui contient le mot <b>VGA</b> ou <b>Display Controller</b>. Vous pouvez aussi essayer l'une
+ des commandes suivantes:</dd>
+ <dd><pre class="terminal">lspci | grep "Display controller"</pre>
+ </dd>
+ <dd>ou</dd>
+ <dd><pre class="terminal">lspci | grep "VGA"</pre>
+ </dd>
+ <a name="vendoridproductid"></a><dt>Comment connaitre le VendorID ou le ProductID (VendorID:ProductID code)</dt>
+ <dd><cite>(Merci à <a
+ href="http://trisquel.info/en/forum/h-nodecom-new-website-hardware-database#comment-5839">Michał Masłowski</a>
+ et <a
+ href="http://trisquel.info/en/forum/h-nodecom-new-website-hardware-database#comment-5837">Julius22</a>)</cite>
+ </dd>
+ <dd class="opt">Si le matériel est intégré (example : une puce vidéo)</dd>
+ <dd>Ouvrez un terminal sudo et taper la commande suivante:</dd>
+ <dd><pre class="terminal">sudo lspci -nnk</pre>
+ </dd>
+ <dd>Vous devriez obtenir une liste de matériel similaire à celle-ci</dd>
+ <dd><pre class="terminal">
+03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [<b>14e4:4311</b>] (rev 02)
+ Kernel driver in use: b43-pci-bridge
+ Kernel modules: ssb
+05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [<b>10de:0427</b>] (rev a1)
+ Kernel modules: nouveau, nvidiafb</pre>
+ </dd>
+ <dd class="note"><span class="note">Note :</span>Les lignes en <b>gras</b> et placée entre crochet (dans la liste
+ ci-dessus) sont les lignes que vous recherchez. Le premier packet de numéros (avant la virgule) sont le
+ <b>VendorID</b>, le second sont le <b>ProductID</b>. Dans l’exemple ci dessus, le code VendorID:ProductID de la
+ carte wifi ( vous pouvez la remarquez grace aux mots "Network Controller" et "WLAN" ) est <b>14e4:4311</b></dd>
+ <dd class="opt">Si le périphérique est un périphérique USB : (exemple : une clé usb wifi)</dd>
+ <dd>Ouvrez un terminal et tapez:</dd>
+ <dd><pre class="terminal">sudo lsusb</pre>
+ </dd>
+ <dd>Vous devriez obtenir une liste de matériel similaire à celle ci</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID <b>0846:4260</b> NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Bus 001 Device 001: ID <b>1d6b:0002</b> Linux Foundation 2.0 root hub
+Bus 002 Device 003: ID <b>08ff:2580</b> AuthenTec, Inc. AES2501 Fingerprint Sensor</pre>
+ </dd>
+ <dd class="note"><span class="note">Note :</span> Les lignes en <b>gras</b> (dans la liste du dessus) sont les
+ lignes que vous recherchez. Les premiers nombres (avant les deux points) sont le <b>VendorID</b>, les autres sont
+ le <b>ProductID</b>. Dans l'exemple ci-dessus : le code VendorID:ProductID de la carte usb wifi externe
+ (Remarquez la ligne Wireless) est <b>0846:4260</b></dd>
+ <dt>Comment savoir si votre carte graphique fonctionne</dt>
+ <dd>Installer <code><a href="http://rss-glx.sourceforge.net/">rss-glx</a></code> en utilisant le gestionnaire de
+ paquet de votre distribution ou en le compilant depuis les sources et essayez certains écran de veille (par
+ exemple <b>Skyrocket</b> ou <b>Solarwinds</b>). Essayer de faire fonctionner le fond d'écran, et/ou le faire
+ fonctionner fluidement.</dd>
+ <dt>Comment savoir si l'accélération 3D fonctionne</dt>
+ <dd>Essayer d’activer compiz</dd>
+ <dt>Comment decouvrir le nom de votre carte wifi</dt>
+ <dd>Ouvrez un terminal et taper la commande suivante:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Regardez ensuite les lignes <samp><b>Wireless</b></samp> ou <samp><b>Network controller</b></samp>. Vous pouvez
+ aussi essayer l'une de ses commandes:</dd>
+ <dd><pre class="terminal">lspci | grep "Wireless"</pre>
+ </dd>
+ <dd>ou</dd>
+ <dd><pre class="terminal">lspci | grep "Network"</pre>
+ </dd>
+ <dt>Comment connaitre le pilote d’imprimante que vous utilisez</dt>
+ <dd class="opt">Si vous utilisez cups</dd>
+ <dd>Ouvrez un terminal et taper ceci:</dd>
+ <dd><pre class="terminal">dpkg-query -W -f '${Version}\n' cups</pre>
+ </dd>
+ <dt>How to discover the architecture of your notebook</dt>
+ <dd>Open a terminal and type the following command:</dd>
+ <dd><pre class="terminal">cat /proc/cpuinfo | grep "lm"</pre>
+ </dd>
+ <dd>If you get a message like this:</dd>
+ <dd><pre class="terminal">flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts<br/>acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64<br/>monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm</pre>
+ </dd>
+ <dd>then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="fully-free"></a><h2>Liste de dristributions GNU/Linux entièrement libre</h2>
+
+ <p>Following are the <a href="/gnu/linux-and-gnu.html">GNU/Linux</a> distributions we know of which have a firm policy
+ commitment to only include and only propose free software. They reject non-free applications, non-free programming
+ platforms, non-free drivers, or non-free firmware “blobs”. If by mistake they do include any, they remove it. To
+ learn more about what makes for a <a href="http://www.gnu.org/distros/free-distros.html">free GNU/Linux
+ distribution</a>, see GNU <a href="http://www.gnu.org/distros/free-system-distribution-guidelines.html">Guidelines for
+ Free System Distributions</a>.</p>
+
+ <p>Toutes les distributions qui suivent sont installables sur un disque dur d'ordinateur et la plupart peuvent être
+ exécutées à partir d'un CD.</p>
+
+ <p>(Dans l'ordre alphabétique)</p>
+
+ <ul>
+ <li><a href="http://www.dragora.org">Dragora GNU/Linux</a></li>
+ <li><a href="http://dynebolic.org/">Dynebolic GNU/Linux</a></li>
+ <li><a href="http://www.musix.org.ar/">Musix GNU+Linux</a></li>
+ <li><a href="https://parabolagnulinux.org/">Parabola GNU/Linux</a></li>
+ <li><a href="http://trisquel.info/">Trisquel GNU/Linux</a></li>
+ <li><a href="http://www.ututo.org/www/">Ututo GNU/Linux</a></li>
+ <li><a href="http://venenux.org/">Venenux GNU/Linux</a></li>
+ </ul>
+
+ </div>
+
diff --git a/Application/Views/Desktop/Help/index_it.php b/Application/Views/Desktop/Help/index_it.php
new file mode 100644
index 0000000..c3c968e
--- /dev/null
+++ b/Application/Views/Desktop/Help/index_it.php
@@ -0,0 +1,436 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010, 2011 Antonio Gallo (h-source-copyright.txt)
+// Copyright (C) 2011 Joerg Kohne
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<div class="help_external_box">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("Help");?>
+ </div>
+
+ <div class="help_tables_of_contents">
+ Table of contents
+ <ul>
+ <li><a href="<?php echo $this->currPage."/$lang#wiki-syntax";?>">Sintassi della Wiki</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#compatibility";?>">Classi di compatibilità</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#discover-hardware";?>">Scopri il tuo hardware</a></li>
+ <li><a href="<?php echo $this->currPage."/$lang#fully-free";?>">Lista delle distribuzioni Gnu/Linux completamente libere</a></li>
+ </ul>
+ </div>
+
+ <a name="wiki-syntax"></a><h2>Sintassi della Wiki</h2>
+
+ <h3 name="wiki-tag">Lista dei tag della wiki di <?php echo Website::$generalName;?>
+ </h3>
+
+ <table class="help_wiki_table" width="100%" border="1">
+ <thead>
+ <tr>
+ <th>nome</th>
+ <th>tag</th>
+ <th>risultato</th>
+ <th width="40%">descrizione</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>grassetto</td>
+ <td>[b]text[/b]</td>
+ <td><b>text</b></td>
+ <td>testo in grassetto</td>
+ </tr>
+ <tr>
+ <td>corsivo</td>
+ <td>[i]text[/i]</td>
+ <td><i>text</i></td>
+ <td>testo corsivo</td>
+ </tr>
+ <tr>
+ <td>cancellare</td>
+ <td>[del]text[/del]</td>
+ <td><del>text</del></td>
+ <td>testo cancellato</td>
+ </tr>
+ <tr>
+ <td>sottolineare</td>
+ <td>[u]text[/u]</td>
+ <td><u>text</u></td>
+ <td>testo sottolineato</td>
+ </tr>
+ <tr>
+ <td>head 1</td>
+ <td>[h1]text[/h1]</td>
+ <td>
+ <div class="div_h1">
+ text</div>
+ </td>
+ <td>head 1</td>
+ </tr>
+ <tr>
+ <td>head 2</td>
+ <td>[h2]text[/h2]</td>
+ <td>
+ <div class="div_h2">
+ text</div>
+ </td>
+ <td>head 2</td>
+ </tr>
+ <tr>
+ <td>head 3</td>
+ <td>[h3]text[/h3]</td>
+ <td>
+ <div class="div_h3">
+ text</div>
+ </td>
+ <td>head 3</td>
+ </tr>
+ <tr>
+ <td>paragrafo</td>
+ <td>…[p]nuovo paragrafo[/p]</td>
+ <td>… <p>nuovo paragrafo</p>
+ </td>
+ <td>crea un nuovo paragrafo</td>
+ </tr>
+ <tr>
+ <td>Lista </td>
+ <td><ul style="list-style-type:none;">
+ <li>[list]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]primo elemento[/*]</li>
+ <li>[*]secondo elemento[/*]</li>
+ </ul>
+ </li>
+ <li>[/list]</li>
+ </ul>
+ </td>
+ <td><ul>
+ <li>primo elemento</li>
+ <li>secondo elemento</li>
+ </ul>
+ </td>
+ <td>crea un elenco di item</td>
+ </tr>
+ <tr>
+ <td>Lista numerata </td>
+ <td><ul style="list-style-type:none;">
+ <li>[enum]</li>
+ <li><ul style="list-style-type:none;">
+ <li>[*]primo elemento[/*]</li>
+ <li>[*]secondo elemento[/*]</li>
+ </ul>
+ </li>
+ <li>[/enum]</li>
+ </ul>
+ </td>
+ <td><ol>
+ <li>primo elemento</li>
+ <li>secondo elemento</li>
+ </ol>
+ </td>
+ <td>crea un elenco numerato di item</td>
+ </tr>
+ <tr>
+ <td>item di un elenco</td>
+ <td>[*]elemento[/*]</td>
+ <td><ul>
+ <li>elemento</li>
+ </ul>
+ </td>
+ <td>aggiungi un item a un elenco</td>
+ </tr>
+ <tr>
+ <td>codice</td>
+ <td>[code]some code[/code]</td>
+ <td><pre class="code_pre">some code</pre>
+ </td>
+ <td>aggiungi del codice</td>
+ </tr>
+ <tr>
+ <td>link semplice</td>
+ <td>[a]url[/a]</td>
+ <td><a href="url">url</a></td>
+ <td>crea un link semplice</td>
+ </tr>
+ <tr>
+ <td>link con testo</td>
+ <td>[a]url|text[/a]</td>
+ <td><a href="url">text</a></td>
+ <td>crea un link con testo</td>
+ </tr>
+ <tr>
+ <td>notebook</td>
+ <td>[notebook]id[/notebook]</td>
+ <td>id</td>
+ <td>crea un link al notebook con l'identificatore corrispondente a id (l'identificatore di ogni modello di
+ dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello</td>
+ </tr>
+ <tr>
+ <td>wifi</td>
+ <td>[wifi]id[/wifi]</td>
+ <td>id</td>
+ <td>crea un link alla wifi con l'identificatore corrispondente a id (l'identificatore di ogni modello di
+ dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello)</td>
+ </tr>
+ <tr>
+ <td>scheda video</td>
+ <td>[videocard]id[/videocard]</td>
+ <td>id</td>
+ <td>crea un link alla scheda video con l'identificatore corrispondente a id (l'identificatore di ogni modello di
+ dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello)</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>&nbsp;</p>
+
+ <a name="compatibility"></a><h2>Classi di compatibilità</h2>
+
+ <a name="notebook-compatibility"></a><h3>Notebooks</h3>
+ <dl>
+ <dt>Classe A (Platino)</dt>
+ <dd>Tutti i dispositivi del portatile funzionano ad alte prestazioni. </dd>
+ <dd class="example">Per esempio: funzionano tutti i dispositivi, l'accelerazione 3D è supportata.</dd>
+ <dt>Classe B (Oro)</dt>
+ <dd>Tutti i dispositivi del portatile funzionano ma non a piene prestazioni. </dd>
+ <dd class="example">Esempio tipico: funzionano tutti i dispositivi, ma l'accelerazione 3D non è supportata.</dd>
+ <dt>Classe C (Argento)</dt>
+ <dd>Uno dei dispositivi principali non è supportato. </dd>
+ <dd class="example">Per esempio: la scheda wifi interna non funziona e serve una wifi esterna USB.</dd>
+ <dt>Classe D (Bronzo)</dt>
+ <dd>Più di uno dei dispositivi principali non è supportato.</dd>
+ <dt>Classe E (Spazzatura)</dt>
+ <dd>Il portatile non funziona con software libero.</dd>
+ </dl>
+
+ <a name="printer-compatibility"></a><h3>Stampanti</h3>
+ <dl>
+ <dt>Classe A (Piena)</dt>
+ <dd>Sono supportate tutte le funzioni e le caratteristiche della stampante.</dd>
+ <dt>Classe B (Parziale)</dt>
+ <dd>La funzione di stampa è supportata, ma a velocità limitata o a scarsa qualità. Su alcune stampanti
+ multifunzione possono non essere supportate le funzioni di scanner e/o di fax.</dd>
+ <dt>Classe C (Nessuna)</dt>
+ <dd>La stampante non funziona con software libero.</dd>
+ </dl>
+
+ <a name="scanner-compatibility"></a><h3>Scanner</h3>
+ <dl>
+ <dt>Classe A (Piena)</dt>
+ <dd>Sono supportate tutte le funzioni e le caratteristiche dello scanner.</dd>
+ <dt>Classe B (Parziale)</dt>
+ <dd>La funzione di scannerizzazione è supportata, ma a velocità limitata o a scarsa qualità. Qualche altra
+ caratteristica può non essere supportata.</dd>
+ <dt>Classe C (Nessuna)</dt>
+ <dd>Lo scanner non funziona con software libero.</dd>
+ </dl>
+
+ <p></p>
+
+ <a name="discover-hardware"></a><h2>Scopri il tuo hardware</h2>
+ <cite>(Grazie <a href="<?php echo $this->baseUrl;?>/issues/view/en/3/1/token">lluvia</a>)</cite>
+
+ <p>Per sapere le caratteristiche e i dettagli del tuo hardware puoi seguire queste istruzioni:</p>
+ <dl>
+ <dt>Come scoprire il nome del modello del portatile</dt>
+ <dd>Guarda sotto al tuo notebook o al tuo netbook</dd>
+ <a name="model-name"></a><dt>Come scoprire il nome del modello del tuo hardware (se non è un portatile)</dt>
+ <dd class="opt">Se il dispositivo è integrato (ad esempio: una scheda video)</dd>
+ <dd>Apri un terminale e digita il seguente comando:</dd>
+ <dd><pre class="terminal">lspci</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lspci &gt; FILENAME # Puoi anche scrivere l'output del comandi lspci su un file digitando<!-- l'output del comandi un file digitando :)--></pre>
+ </dd>
+ <!-- dd>dove "filename" è il nome del file</dd -->
+ <dd>Otterrai la lista di tutti i tuoi dispositivi PCI, simile a quella scritta sotto</dd>
+ <dd><pre class="terminal">
+00:18.3 Host bridge: <b>Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control</b>
+03:00.0 Network controller: <b>Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)</b>
+05:00.0 VGA compatible controller: <b>nVidia Corporation G86 [GeForce 8400M GS] (rev a1)</b>
+ </pre>
+ </dd>
+ <dd>Il nome di ogni dispositivo è scritto dopo i due punti (guarda il testo in grassetto nella
+ lista superiore)</dd>
+ <dd class="opt">Se è un dispositivo USB (ad esempio: una stampante USB)</dd>
+ <dd>Apri un terminale e digita il seguente comando:</dd>
+ <dd><pre class="terminal">lsusb -v</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lsusb -v &gt; FILENAME # l'output del comandi un file digitando</pre>
+ </dd>
+ <!-- dd>dove "filename" è il nome del file</dd -->
+ <dd>Otterrai la lista di tutti i dispositivi USB, simile a quella scritta sotto</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 2.00
+ bDeviceClass 0 (Defined at Interface level)
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x0846 NetGear, Inc.
+ idProduct 0x4260 <b>WG111v3 54 Mbps Wireless [realtek RTL8187B]</b>
+ bcdDevice 2.00
+ iManufacturer 1
+ iProduct 2
+ iSerial 3
+ ...
+ ...
+
+Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 1.10
+ bDeviceClass 255 Vendor Specific Class
+ bDeviceSubClass 255 Vendor Specific Subclass
+ bDeviceProtocol 255 Vendor Specific Protocol
+ bMaxPacketSize0 8
+ idVendor 0x08ff AuthenTec, Inc.
+ idProduct 0x2580 <b>AES2501 Fingerprint Sensor</b>
+ bcdDevice 6.23
+ iManufacturer 0
+ iProduct 1 Fingerprint Sensor
+ iSerial 0
+ bNumConfigurations 1
+ ...
+ ...
+ </pre>
+ </dd>
+ <dd>Il nome di ogni dispositivo è scritto alla riga che inizia con la stringa "idProduct" (guarda il testo in
+ grassetto nella lista superiore)</dd>
+ <dt>Come scoprire che versione del kernel libre stai usando</dt>
+ <dd>Apri un terminale e digita questo comando</dd>
+ <dd><pre class="terminal">uname -r</pre>
+ </dd>
+ <dt>Come scoprire il nome della tua scheda video</dt>
+ <dd>Apri un terminale e digita questo comando:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Poi cerca la riga contenente la stringa <b>VGA</b> o <b>Display controller</b>. Puoi anche provare con uno di
+ questi comandi:</dd>
+ <dd><pre class="terminal">lspci | grep "Display controller"</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lspci | grep "VGA"</pre>
+ </dd>
+ <a name="vendoridproductid"></a><dt>Come scoprire il VendorID e il ProductID del tuo dispositivo (VendorID:ProductID
+ code)</dt>
+ <dd><cite>(Grazie <a
+ href="http://trisquel.info/en/forum/h-nodecom-new-website-hardware-database#comment-5839">Michał Masłowski</a>
+ e <a href="http://trisquel.info/en/forum/h-nodecom-new-website-hardware-database#comment-5837">Julius22</a>)
+ </cite></dd>
+ <dd class="opt">Se il dispositivo è integrato (per esempio una scheda video)</dd>
+ <dd>Apri un terminale e digita il seguente comando:</dd>
+ <dd><pre class="terminal">sudo lspci -nnk</pre>
+ </dd>
+ <dd>Dovresti ottenere una lista di hardware simile a quella scritta qui sotto</dd>
+ <dd><pre class="terminal">
+03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [<b>14e4:4311</b>] (rev 02)
+ Kernel driver in use: b43-pci-bridge
+ Kernel modules: ssb
+05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [<b>10de:0427</b>] (rev a1)
+ Kernel modules: nouveau, nvidiafb</pre>
+ <dd class="note"><span class="note">Note:</span> Le stringhe in <b>grassetto</b> e tra parentesi quadre (nella
+ lista qui sopra) sono il codice che stai cercando. Il primo gruppo di cifre (prima dei due punti) è il
+ <b>VendorID</b>, il secondo gruppo è il <b>ProductID</b>. Nell'esempio qui sopra: il codice VendorID:ProductID
+ della scheda wifi (nota le stringhe "Network controller" e "WLAN") è <b>14e4:4311</b> mentre il codice
+ VendorID:ProductID della scheda video (nota la stringa "VGA") è <b>10de:0427</b></dd>
+ <dd class="opt">Se si tratta di un dispositivo USB (per esempio una wifi esterna USB)</dd>
+ <dd>Apri un terminale e digita questo comando:</dd>
+ <dd><pre class="terminal">sudo lsusb</pre>
+ </dd>
+ <dd>Dovresti ottenere una lista di hardware simile a quella scritta qui sotto</dd>
+ <dd><pre class="terminal">
+Bus 001 Device 002: ID <b>0846:4260</b> NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
+Bus 001 Device 001: ID <b>1d6b:0002</b> Linux Foundation 2.0 root hub
+Bus 002 Device 003: ID <b>08ff:2580</b> AuthenTec, Inc. AES2501 Fingerprint Sensor</pre>
+ </dd>
+ <dd class="note"><span class="note">Note:</span> Le stringhe in <b>grassetto</b> (nella lista qui sopra) sono il
+ codice che stai cercando. Il primo gruppo di cifre (prima dei due punti) è il <b>VendorID</b>, il secondo gruppo
+ è il <b>ProductID</b>. Nell'esempio qui sopra: il codice VendorID:ProductID della wifi esterna USB (nota la
+ stringa "Wireless") è <b>0846:4260</b></dd>
+ <dt>Come scoprire se funziona la scheda video</dt>
+ <dd>Installa <code><a href="http://rss-glx.sourceforge.net/">rss-glx</a></code> tramite il gestore di pacchetti
+ della tua distribuzione o compilando dai sorgenti e prova degli screensaver (per esempio <b>Skyrocket</b> o
+ <b>Solarwinds</b>). Controlla se parte lo screensaver (e/o se si vede "fluido")</dd>
+ <dt>Come scoprire se funziona l'accelerazione 3D</dt>
+ <dd>Prova ad attivare compiz</dd>
+ <dt>Come scoprire il nome della tua scheda wifi</dt>
+ <dd>Apri un terminale e digita questo comando:</dd>
+ <dd><pre class="terminal">sudo lspci</pre>
+ </dd>
+ <dd>Poi cerca la riga contenente la stringa <samp><b>Wireless</b></samp> o <samp><b>Network controller</b></samp>.
+ Puoi anche provare uno dei seguenti comandi:</dd>
+ <dd><pre class="terminal">lspci | grep "Wireless"</pre>
+ </dd>
+ <dd>o</dd>
+ <dd><pre class="terminal">lspci | grep "Network"</pre>
+ </dd>
+ <dt>Come scoprire che driver per la stampante stai usando</dt>
+ <dd class="opt">Se stai usando cups</dd>
+ <dd>Apri un terminale e digita il seguente comando:</dd>
+ <dd><pre class="terminal">dpkg-query -W -f '${Version}\n' cups</pre>
+ </dd>
+ <dt>Come scoprire l'architettura del tuo portatile:</dt>
+ <dd>Apri un terminale e digita il seguente comando:</dd>
+ <dd><pre class="terminal">cat /proc/cpuinfo | grep "lm"</pre>
+ </dd>
+ <dd>Se ottieni un messaggio come il seguente:</dd>
+ <dd><pre class="terminal">flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts<br/>acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64<br/>monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm</pre>
+ </dd>
+ <dd>allora il tuo portatile è x86-64/amd64 e puoi usare una distribuzione x86-64/amd64</dd>
+ </dl>
+
+ <p> </p>
+
+ <a name="fully-free"></a><h2>Lista di distribuzioni GNU/Linux completamente libere</h2>
+
+ <!-- p class="attention"><span class="highlight">La <strong>h-node</strong> non è responsabile del contenuto di altri siti
+ web, né di quanto il contenuto di tali siti sia aggiornato.</span></p -->
+
+ <p>Le seguenti sono le distribuzioni <a href="http://www.gnu.org/gnu/linux-and-gnu.it.html">GNU/Linux</a> a noi note
+ che hanno una rigorosa politica di inclusione e indicazione di solo software libero. Queste distribuzioni escludono
+ applicazioni, piattaforme di programmazione, driver e firmware ("blob") che non siano liberi, e rimuovono quelli
+ inclusi per errore. Per saperne di più su cosa rende <a href="http://www.gnu.org/distros/free-distros.it.html">libera
+ una distribuzione GNU/Linux</a>, si vedano le GNU <a
+ href="http://www.gnu.org/distros/free-system-distribution-guidelines.it.html">linee guida per le distribuzioni
+ libere</a>.</p>
+
+ <p><strong>Tutte le distribuzioni che seguono sono installabili sul disco di un computer e la maggior parte può essere
+ eseguita da un supporto</strong> (CD, memoria USB) senza che nulla debba essere installato sul computer.</p>
+
+ <p>In ordine alfabetico</p>
+
+ <ul>
+ <li><a href="http://www.dragora.org">Dragora GNU/Linux</a></li>
+ <li><a href="http://dynebolic.org/">Dynebolic GNU/Linux</a></li>
+ <li><a href="http://www.musix.org.ar/">Musix GNU+Linux</a></li>
+ <li><a href="https://parabolagnulinux.org/">Parabola GNU/Linux</a></li>
+ <li><a href="http://trisquel.info/">Trisquel GNU/Linux</a></li>
+ <li><a href="http://www.ututo.org/www/">Ututo GNU/Linux</a></li>
+ <li><a href="http://venenux.org/">Venenux GNU/Linux</a></li>
+ </ul>
+ </div>
+
diff --git a/Application/Views/Desktop/History/viewall.php b/Application/Views/Desktop/History/viewall.php
new file mode 100644
index 0000000..9dc27c6
--- /dev/null
+++ b/Application/Views/Desktop/History/viewall.php
@@ -0,0 +1,40 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<?php $u = new UsersModel();?>
+<?php
+ $mess_count = 0;
+ foreach ($res as $row) {
+ $mess_count++;
+?>
+<div class="<?php echo $box_class;?>">
+ <div class="talk_message_item_date">this <?php echo $object;?> has been <?php echo $md_action[$row['history']['action']];?> by <?php echo getLinkToUser($u->getUser($row['history']['created_by']));?> at <?php echo smartDate($row['history']['creation_date']);?> with the following motivation:
+ </div>
+ <div class="deleted_message_show"><?php echo $row['history']['message'];?></div>
+</div>
+<?php } ?>
+
+<?php if ($mess_count === 0) { ?>
+ <div class="<?php echo $box_class;?>">
+ there are no details..
+ </div>
+<?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Home/left.php b/Application/Views/Desktop/Home/left.php
new file mode 100644
index 0000000..0f6ce30
--- /dev/null
+++ b/Application/Views/Desktop/Home/left.php
@@ -0,0 +1,85 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Objectives:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png"> The <b><?php echo Website::$projectName;?></b> project aims at the construction of a hardware database in order to identify what devices work with a <a href="http://www.gnu.org/distros/free-distros.html">fully free operating system</a>. The <?php echo Website::$generalName;?> website is structured like a wiki in which all the users can modify or insert new contents. The h-node project is developed in collaboration and as an activity of the <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribute:
+ </div>
+ <div class="home_objectives_description">
+ You can contribute by creating an account at <?php echo Website::$generalName;?> and editing its user-generated contents. All your modification will be saved in the history of the product you are editing/adding. Each revision (the current one or the old ones) will be marked by the name of the user who created it.<br />You can also contribute by <b>suggesting new hardware</b> that should be added to the database or <b>features that should be implemented</b>.
+ </div>
+
+ <div class="home_objectives_title">
+ Free software:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ License:
+ </div>
+ <div class="home_objectives_description">
+ Any text submitted by you will be put in the Public Domain (see the <a href="http://creativecommons.org/publicdomain/zero/1.0/">CC0 page</a> for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text you have submitted to h-node.org, for any purpose, commercial or non-commercial, and by any means.
+ </div>
+
+ <div class="home_objectives_title">
+ Other resources on the net:
+ </div>
+ <div class="home_objectives_description">
+ <p>Here is a list of other archives collecting information about hardware working with free software:</p>
+ <ul>
+ <!--<li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li>-->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ About the <?php echo Website::$generalName;?> website:
+ </div>
+ <div class="home_objectives_description">
+ The <?php echo Website::$generalName;?> has to be considered in <b>beta version</b>. It is constantly growing and many features have not been implemented yet (for example new hardware devices have to be inserted in the database). Some problems may occur: if you find out a bug please add an issue <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">here</a> with the topic <b>maybe a bug</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Home/left_de.php b/Application/Views/Desktop/Home/left_de.php
new file mode 100644
index 0000000..7317124
--- /dev/null
+++ b/Application/Views/Desktop/Home/left_de.php
@@ -0,0 +1,86 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Ziele:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png"> Mit dem Projekt <b><?php echo Website::$projectName;?></b> soll eine Hardwaredatenbank mit Peripheriegeräten aufgebaut werdem, die mit einem <a href="http://www.gnu.org/distros/free-distros.html">vollständig freien Betriebssystem</a> arbeiten. Die Webseite von h-node.org ist wie ein Wiki aufgebaut, dessen Inhalte von allen Benutzer geändert und ergänzt werden können. Das Projekt <b>h-node</b> wird in Zusammenarbeit und als eine Aktivität der <a href="http://www.fsf.org">FSF</a> entwickelt.
+ </div>
+
+ <div class="home_objectives_title">
+ Mithelfen:
+ </div>
+ <div class="home_objectives_description">
+ Sie können nach Ihrer Anmeldung bei h-node.org dazu beitragen und die benutzergenerierten Inhalte bearbeiten. Alle Änderungen die Sie bearbeiten oder hinzufügen, werden im Produktverlauf protokolliert. Jede Version (die aktuelle oder die alte) wird der/dem BenutzerIn zugeordnet, die/der sie erstellte.<br />
+ <b>Neue Hardware</b>, die in die Datenbank aufgenommen, oder <b>neue Funktionen</b>, die hinzugefügt werden sollten, können Sie ebenfalls vorschlagen.
+ </div>
+
+ <div class="home_objectives_title">
+ Freie Software:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ Lizenz:
+ </div>
+ <div class="home_objectives_description">
+ Jeder von Ihnen übermittelte Text wird in die Gemeinfreiheit („Public Domain“) entlassen (siehe <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.de">CC0 1.0 Universell (CC0 1.0)</a> für detaillierte Informationen). Jede Person darf das Werk/den Inhalt, den Sie an h-node.org übermittelt haben, kopieren, verändern, verbreiten und aufführen, sogar zu kommerziellen Zwecken, ohne um weitere Erlaubnis bitten zu müssen und auf jedem Medium.
+ </div>
+
+ <div class="home_objectives_title">
+ Weitere Ressourcen im Internet:
+ </div>
+ <div class="home_objectives_description">
+ <p>Weitere Archive mit gesammelten Informationen über Hardware, die mit Freie Software arbeitet:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ Über h-node.org:
+ </div>
+ <div class="home_objectives_description">
+ <b>h-node</b> muss als im Beta-Stadium betrachtet werden. Es wird ständig ergänzt haben und viele Funktionen wurden noch nicht implementiert (z. B. müssen neue Hardware-Geräte in die Datenbank eingepflegt werden). Es können Probleme auftreten: Wenn Sie einen Fehler finden, melden Sie diesen bitte im <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">Web-Log</a> mit dem Thema <b>evtl. ein Fehler</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Home/left_es.php b/Application/Views/Desktop/Home/left_es.php
new file mode 100644
index 0000000..882a7b1
--- /dev/null
+++ b/Application/Views/Desktop/Home/left_es.php
@@ -0,0 +1,85 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Objetivos:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png"> El proyecto <b><?php echo Website::$projectName;?></b> tiene como meta la construcción de una base de datos de todo el hardware de manera que se pueda identificar que dispositivos funcionan con un <a href="http://www.gnu.org/distros/free-distros.es.html">sistema operativo completamente libre</a>. El sitio <?php echo Website::$generalName;?> esta estructurado como un wiki, en el cual todos los usuarios pueden modificar o integrar nuevos contenidos. El proyecto h-node es desarrollado en colaboración y como una actividad de la <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribuir:
+ </div>
+ <div class="home_objectives_description">
+ Puede contribuir creando una cuenta en <?php echo Website::$generalName;?> y editar los contenidos generados. Todas sus modificaciones serás guardadas en el historial del producto que edite/agregue. Cada revisión (actual o previa) será marcada con el nombre del usuario que la creo.<br />También puede contribuir al <b>sugerir nuevo hardware</b> que deba ser agregado a la base de datos o <b>características que deberían ser implementadas.</b>
+ </div>
+
+ <div class="home_objectives_title">
+ Software Libre:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ Licencias:
+ </div>
+ <div class="home_objectives_description">
+ Cualquier texto agregado por usted sera colocado en Dominio Publico (vea la <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.es_CL">página CC0</a> para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto que ha integrado a h-node.org, para cualquier propósito, comercial o no comercial, y por cualquier método.
+ </div>
+
+ <div class="home_objectives_title">
+ Otros recursos en la red:
+ </div>
+ <div class="home_objectives_description">
+ <p>Aquí una lista de otras actividades recolectando información acerca de hardware funcionando con software libre:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ Acerca del sitio <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ El sitio <?php echo Website::$generalName;?> debe ser considerado una <b>versión beta</b>. Esta en constantemente crecimiento y varias características no han sido implementadas aun (por ejemplo, nuevos dispositivos de hardware tienen que ser incluidos en la base de datos). Algunos problemas pueden ocurrir: Si encuentra un error por favor agregue una incidencia <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">aquí</a> bajo el tema <b>maybe a bug</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Home/left_fr.php b/Application/Views/Desktop/Home/left_fr.php
new file mode 100644
index 0000000..2056c75
--- /dev/null
+++ b/Application/Views/Desktop/Home/left_fr.php
@@ -0,0 +1,88 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Objectifs:
+ </div>
+
+ <div class="home_objectives_description">
+ <img src="https://www.h-node.org/Public/Img/H2O/applications-internet.png"> Le but du projet <b>h-node est</b> de créer une base de données de matériel afin d'identifier les dispositifs qui fonctionne avec un <a href="http://www.gnu.org/distros/free-distros.fr.html">système d’exploitation entièrement libre</a>. Le site h-node est structuré comme un wiki, dont tout les utilisateurs peuvent modifier ou insérer des contenus. Le projet h-node est dévellopé en collaboration et en tant qu'activitée de la <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribution:
+ </div>
+ <div class="home_objectives_description">
+ Vous pouvez contribuer en créant un compte sur h-node et modifier le contenus créé par les utilisateurs. Toutes vos modifications seront enregistrées dans l’historique de l’élément que vous modifiez ou ajouter. Toutes versions (l’actuelle ou les précédentes) seront marquées au nom de l’utilisateur qui les a crées. <br />Vous pouvez aussi contribuer en <b>suggérant un autre type de matériel</b> qui devrais être ajouté à la base de données ou une nouvelle <b>fonctionnalitée qui devrais être implémentée</b>
+ </div>
+
+ <div class="home_objectives_title">
+ Logiciel libre:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+
+ </div>
+
+ <div class="home_objectives_title">
+ License:
+ </div>
+
+ <div class="home_objectives_description">
+ Tout les textes que vous publierez sur le site seront dans le Domain public (Consultez la <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.fr">page CC0</a> pour plus d'informations). Tout un chacun est autorisé à copier, modifier, publier, utiliser, vendre ou distribuer le texte que vous avez envoyé sur h-node.org, pour quelque utilisation que ce soit et par tout les moyens.
+ </div>
+
+ <div class="home_objectives_title">
+ Ressource supplémentaire sur Internet:
+ </div>
+ <div class="home_objectives_description">
+ <p>Voici une liste d'autres archives qui collecte des informations à propos du matériel fonctionnant avec du logiciel libre:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ A propos du site <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ Le site doit être considéré comme en <b>version beta</b>, il s’aggrandit constamment et beaucoup de fonctionnalitée n’ont pas encore été implémentée ( par exemple, de nouveau type d’appareil doivent être ajouter dans la base de données) . Des problèmes peuvent arriver, si vous trouver un bug, merci de remplir un <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">ticket bug</a> (<b>maybe a bug</b>).
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Home/left_gr.php b/Application/Views/Desktop/Home/left_gr.php
new file mode 100644
index 0000000..a0a4279
--- /dev/null
+++ b/Application/Views/Desktop/Home/left_gr.php
@@ -0,0 +1,87 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Σκοποί:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png">
+ Το <b><?php echo Website::$projectName;?></b> project έχει ως σκοπό την κατασκευή μίας βάσης δεδομένων υλικού, έτσι ώστε να μπορεί να εντοπισθεί ποιες συσκευές δουλεύουν με ένα <a href="http://www.gnu.org/distros/free-distros.html">πλήρως ελεύθερο Λειτουργικό Σύστημα</a>. Ο ιστότοπος <?php echo Website::$generalName;?> είναι δομημένος σαν ένα wiki, εντός του οποίου όλοι οι χρήστες μπορούν να τροποποιούν ή να εισαγάγουν νέα περιεχόμενα. Το h-node project αναπτύχθηκε σε συνεργασία με και σαν δραστηριότητα του <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Συνεισφέρετε:
+ </div>
+ <div class="home_objectives_description">
+ Μπορείτε να συνεισφέρετε φτιάχνοντας έναν λογαριασμό στο <?php echo Website::$generalName;?> και τροποποιώντας τα περιεχόμενα που δημιούργησαν οι ίδιοι οι χρήστες. Όλες σας οι τροποποιήσεις θα αποθηκεύονται στο ιστορικό του προϊόντος το οποίο επεξεργάζεσθε/εμπλουτίζετε. Κάθε αναθεώρηση (τόσο η τρέχουσα όσο και οι παλιές) θα επισημαίνεται με το όνομα του χρήστη που την δημιούργησε. Μπορείτε, επίσης, να συνεισφέρετε <b>προτείνοντας νέο υλικό</b> που θα έπρεπε να προστεθεί στη βάση δεδομένων, ή <b>εισηγούμενοι χαρακτηριστικά που θα έπρεπε να υλοποιηθούν</b>.
+ </div>
+
+ <div class="home_objectives_title">
+ Ελεύθερο Λογισμικό
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+
+ </div>
+
+ <div class="home_objectives_title">
+ Άδεια:
+ </div>
+ <div class="home_objectives_description">
+ Οποιοδήποτε κείμενο που υποβάλετε, θα μπαίνει σε Δημόσια Διάθεση/Public Domain (δείτε τη σελίδα <a href="http://creativecommons.org/publicdomain/zero/1.0/">CC0 page</a> για πιο λεπτομερείς πληροφορίες). Οποιοσδήποτε είναι ελεύθερος να αντιγράφει, να τροποποιεί, να δημοσιεύει, να χρησιμοποιεί, να πωλεί, ή και να ανδιανέμει το κείμενο που εσείς υποβάλλατε στο h-node.com, για οποιοδήποτε λόγο, εμπορικό ή μη-εμπορικό, και με οποιονδήποτε τρόπο.
+ </div>
+
+ <div class="home_objectives_title">
+ Άλλοι πόροι στο Διαδίκτυο:
+ </div>
+ <div class="home_objectives_description">
+ <p>Ακολουθεί, εδώ, ένας κατάλογος άλλων αρχείων που συγκεντρώνουν πληροφορίες σχετικά με υλικό που δουλεύει με ελεύθερο λογισμικό:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ Σχετικά με τον ιστότοπο <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ Το <?php echo Website::$generalName;?> πρέπει να θεωρείται πως βρίκεται σε <b>έκδοση beta</b>. Αναπτύσσεται συνεχώς και πολλά χαρακτηριστικά δεν έχουν ακόμη υλοποιηθεί (π.χ. πρέπει ακόμη να προστεθούν νέες συσκευές υλικού στη βάση δεδομένων). Μπορεί να παρατηρηθούν ορισμένα προβλήματα: αν εντοπίσετε ένα σφάλμα (bug), παρακαλώ προσθέστε μία αναφορά προβλήματος <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">εδώ</a> με θέμα <b>ίσως να πρόκειται για ένα bug</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Home/left_it.php b/Application/Views/Desktop/Home/left_it.php
new file mode 100644
index 0000000..561c3a1
--- /dev/null
+++ b/Application/Views/Desktop/Home/left_it.php
@@ -0,0 +1,88 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Obiettivi:
+ </div>
+
+ <div class="home_objectives_description">
+ <img src="https://www.h-node.org/Public/Img/H2O/applications-internet.png"> Il progetto <b>h-node</b> mira alla costruzione di un database di hardware allo scopo di identificare quali dispositivi funzionino con un <a href="http://www.gnu.org/distros/free-distros.it.html">sistema operativo completamente libero</a>. Il sito h-node.org è strutturato come una wiki in cui tutti gli utenti possono inserire nuovi contenuti o modificare i contenuti già presenti. Il progetto h-node è sviluppato in collaborazione e come attività della <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribuire:
+ </div>
+ <div class="home_objectives_description">
+ Puoi contribuire creandoti un account su h-node.org e modificando i suoi contenuti generati dagli utenti. Tutte le tue modifiche saranno salvate nella storia del prodotto che stai modificando/aggiungendo. Ogni revisione (quella attuale o le precedenti) sarà contrassegnata col nome dell'utente che l'ha creata.<br />Puoi inoltre contribuire <b>suggerendo del nuovo hardware</b> da aggiungere al database o delle <b>caratteristiche da implementare</b>.
+ </div>
+
+ <div class="home_objectives_title">
+ Software libero:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ Per poter aggiungere un dispositivo nel database di h-node, devi verificare che funzioni usando solo software libero. Per questo scopo, puoi unicamente utilizzare:
+
+ <p>1) Una delle distribuzioni GNU/Linux elencate <a href="http://www.gnu.org/distros/free-distros.html">nella lista delle distribuzioni approvate dalla FSF</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>con solo la zona archivio main attivata</strong>. Le aree "contrib" e "non-free" non devono essere abilitate durante il test dell'hardware. Controlla che sia così lanciando <code>apt-cache policy</code>. La sola zona archivio dei pacchetti deve essere <strong>main</strong>.</p>
+
+ <p>h-node elenca solo hardware che funziona con driver liberi e senza firmware non libero. Le altre distribuzioni GNU/Linux (oppure Debian con contrib, non-free, o archivi di terze parti abilitati) includono file di firmware non liberi, quindi non possono essere utilizzate per i test.</p>
+
+ </div>
+
+ <div class="home_objectives_title">
+ Licenza:
+ </div>
+
+ <div class="home_objectives_description">
+ Qualsiasi testo da te inserito diventerà di Pubblico Dominio (visita la <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.it">pagina CC0</a> per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere o distribuire il testo che hai inserito su h-node.org, per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.
+ </div>
+
+ <div class="home_objectives_title">
+ Altre risorse in rete:
+ </div>
+ <div class="home_objectives_description">
+ <p>Di seguito una lista di altri archivi contenenti informazioni sull' hardware funzionante con software libero:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ A proposito del sito <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ <?php echo Website::$generalName;?> deve essere considerato una <b>versione beta</b>. E' in costante sviluppo e molte caratteristiche non sono ancora state implementate (per esempio nuovi dispositivi hardware devono essere aggiunti al database). Potrebbero esserci dei problemi: se scopri un bug per favore invia una segnalazione <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">qui</a> con l'argomento <b>maybe a bug</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Issues/view.php b/Application/Views/Desktop/Issues/view.php
new file mode 100644
index 0000000..51047b8
--- /dev/null
+++ b/Application/Views/Desktop/Issues/view.php
@@ -0,0 +1,249 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/issues/viewall/$lang".$this->viewStatus;?>"><?php echo gtext("Issues");?></a> &raquo; <?php echo $id_issue;?>
+ </div>
+
+ <?php if (strcmp($table[0]['issues']['deleted'],'no') === 0 or $ismoderator) { ?>
+ <?php foreach ($table as $row) { ?>
+
+ <?php if ($ismoderator) { ?>
+ <!--open/close an issue-->
+ <div class="moderator_box">
+ <?php if (strcmp($row['issues']['status'],'opened') == 0) { ?>
+ <?php echo gtext("This issue is opened");?>
+
+ <a id="<?php echo $row['issues']['id_issue'];;?>" class="close_issue block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Glaze/folder_blue.png"><?php echo gtext("close the issue");?></a>
+
+ <?php } else { ?>
+ <?php echo gtext("This issue is closed");?>
+
+ <a id="<?php echo $row['issues']['id_issue'];;?>" class="open_issue block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Glaze/folder_blue_open.png"><?php echo gtext("open the issue again");?></a>
+
+ <?php } ?>
+
+ <?php if (strcmp($row['issues']['deleted'],'no') == 0) { ?>
+
+ <a id="<?php echo $row['issues']['id_issue'];;?>" class="issuehide_issue_del block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png"><?php echo gtext("hide the issue");?></a>
+
+ <?php } else { ?>
+ <div class="issue_hidden_notice"><?php echo gtext("This issue is hidden for all the users that are not moderators");?></div>
+
+ <a id="<?php echo $row['issues']['id_issue'];;?>" class="issueshow_issue_del block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png"><?php echo gtext("show the issue");?></a>
+
+ <?php } ?>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">issue</div>
+ <a id="<?php echo $row['issues']['id_issue'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <div class="issues_external_box">
+
+ <div class="issues_view_title">
+ <?php echo $row['issues']['title'];?>
+ </div>
+
+ <div class="talk_message_item_date">
+ submitted by <?php echo getLinkToUser($u->getUser($row['issues']['created_by']));?>, <?php echo smartDate($row['issues']['creation_date']);?>
+ </div>
+
+ <div class="issues_view_status_and_priority">
+ <table>
+ <tr>
+ <td><?php echo gtext("TOPIC");?>:</td>
+ <td><b><?php echo str_replace('-',' ',$row['issues']['topic']);?></b></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("STATUS");?>:</td>
+ <td><b><?php echo $row['issues']['status'];?></b></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("PRIORITY");?>:</td>
+ <td><b><?php echo $row['issues']['priority'];?></b></td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="issues_view_description_title">
+ <?php echo gtext("Description");?>:
+ </div>
+
+ <div class="issues_view_description">
+ <?php echo decodeWikiText($row['issues']['message']);?>
+ </div>
+
+ <?php if (strcmp($row['issues']['notice'],'') !== 0) { ?>
+
+ <div class="issues_view_description_title">
+ Response message (from h-node.com):
+ </div>
+
+ <div class="issues_view_description">
+ <?php echo decodeWikiText($row['issues']['notice']);?>
+ </div>
+
+ <?php } ?>
+
+ <?php } ?>
+ </div>
+
+ <!--print the messages to this issue-->
+ <div class="issues_external_box">
+ <div class="add_message_form_title">
+ <?php echo gtext("Messages");?>:
+ </div>
+ <?php
+ $mess_count = 0;
+ foreach ($messages as $row) {
+ $mess_count++;
+ ?>
+
+ <?php if (strcmp($row['messages']['deleted'],'no') === 0) { ?>
+
+
+ <a name="message-<?php echo $row['messages']['id_mes'];?>"></a><div class="issues_message_item">
+ <div class="issues_message_item_user">
+ <div class="issues_message_item_user_inner">
+ <?php echo $u->getUser($row['messages']['created_by']);?>:
+ </div>
+ <?php if ($ismoderator) { ?>
+ <a id="<?php echo $row['messages']['id_mes'];?>" class="hide_message hide_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png">hide</a>
+ <?php } ?>
+
+ </div>
+
+ <div class="message_view_description">
+ <?php echo decodeWikiText($row['messages']['message']);?>
+ </div>
+ <div class="talk_message_item_date">
+ submitted by <?php echo getLinkToUser($u->getUser($row['messages']['created_by']));?>, <?php echo smartDate($row['messages']['creation_date']);?>
+ </div>
+
+ <?php if ($ismoderator) { ?>
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">message</div>
+ <a id="<?php echo $row['messages']['id_mes'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+ <?php } ?>
+
+ </div>
+
+ <?php } else { ?>
+
+ <?php if ($ismoderator) { ?>
+ <a name="message-<?php echo $row['messages']['id_mes'];?>"></a>
+ <div class="issues_message_item_hidden">
+ <?php echo gtext("this message has been deleted");?>
+
+ <a id="<?php echo $row['messages']['id_mes'];?>" class="show_message hide_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png">make visible</a>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">message</div>
+
+ <a id="<?php echo $row['messages']['id_mes'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+
+ <div class="details_of_hidden_message">
+ <div class="details_of_hidden_message_inner">
+ <div class="talk_message_item_date">
+ submitted by <?php echo getLinkToUser($u->getUser($row['messages']['created_by']));?>, <?php echo smartDate($row['messages']['creation_date']);?>
+ </div>
+ <div class="message_view_description_hidden">
+ <?php echo decodeWikiText($row['messages']['message']);?>
+ </div>
+ </div>
+ <div class="moderation_details_box"></div>
+ </div>
+ </div>
+ </div>
+ <?php } ?>
+ <?php } ?>
+
+ <?php } ?>
+
+ <?php if ($mess_count === 0) { ?>
+ <?php echo gtext("there are no messages");?>..
+ <?php } ?>
+
+ </div>
+
+ <!--insert a message notice-->
+ <?php if ($islogged === 'yes') { ?>
+
+ <div class="add_issue_form">
+ <div class="add_message_form_title">
+ <a name="form"><?php echo gtext("Add a message to this issue");?></a>
+ </div>
+
+ <?php echo $notice;?>
+
+ <!--preiview-->
+ <?php if (isset($preview_message)) { ?>
+ <div class="message_preview_notice">
+ <?php echo gtext("preview of the message");?>:
+ </div>
+ <div class="issues_message_item_preview">
+ <div class="message_view_description">
+ <?php echo decodeWikiText($preview_message);?>
+ </div>
+ </div>
+ <?php } ?>
+
+ <?php echo $form;?>
+ </div>
+
+ <?php } else { ?>
+
+ <div class="talk_login_notice">
+ <a name="form"><?php echo gtext("You have to");?> <a href="<?php echo $this->baseUrl."/users/login/$lang?redirect=".$currPos.$queryString;?>"><?php echo gtext("login");?></a> <?php echo gtext("in order to submit a message to this issue");?></a>
+ </div>
+
+ <?php } ?>
+
+ <?php } else { ?>
+
+ <div style="margin:10px;"><?php echo gtext("This issue has been deleted"); ?></div>
+
+ <?php } ?>
+ </div>
+
diff --git a/Application/Views/Desktop/Issues/viewall.php b/Application/Views/Desktop/Issues/viewall.php
new file mode 100644
index 0000000..2454e6f
--- /dev/null
+++ b/Application/Views/Desktop/Issues/viewall.php
@@ -0,0 +1,122 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("Issues");?>
+ </div>
+
+ <div class="issues_external_box">
+ <div class="issues_viewall_title">
+ <?php echo gtext("List of issues");?>:
+ </div>
+
+ <table class="issues_viewall_table">
+ <thead>
+ <tr>
+ <th><?php echo gtext("TITLE");?></th>
+ <th><?php echo gtext("TOPIC");?></th>
+ <th><?php echo gtext("OPENED BY");?></th>
+ <th><?php echo gtext("LAST UPDATE");?></th>
+ <th><?php echo gtext("REPLIES");?></th>
+ <th><?php echo gtext("PRIORITY");?></th>
+ <th><?php echo gtext("STATUS");?></th>
+ </tr>
+ </thead>
+
+ <?php foreach ($table as $row) { ?>
+
+ <?php if (strcmp($row['issues']['deleted'],'no') === 0 or $ismoderator) { ?>
+ <tr class="issue_deleted_<?php echo $row['issues']['deleted']?>">
+ <td><a href="<?php echo $this->baseUrl."/issues/view/$lang/".$row['issues']['id_issue'].$this->viewStatus;?>"><?php echo $row['issues']['title'];?></a> <span>(<?php echo gtext("hidden for those who are not moderators");?>)</span></td>
+ <td><?php echo str_replace('-',' ',$row['issues']['topic']);?></td>
+ <td><?php echo getLinkToUser($u->getUser($row['issues']['created_by']));?></td>
+ <td><?php echo smartDate($row['issues']['update_date']);?></td>
+ <td>
+ <?php
+ if (strcmp($row['messages']['message'],'') !== 0)
+ {
+ echo $row['aggregate']['numb_mess'];
+ }
+ else
+ {
+ echo $row['aggregate']['numb_mess']-1;
+ }
+ ?>
+ </td>
+ <td><?php echo $row['issues']['priority'];?></td>
+ <td><?php echo $row['issues']['status'];?></td>
+ </tr>
+ <?php } ?>
+
+ <?php } ?>
+ </table>
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ <?php if ($islogged === 'yes') { ?>
+
+ <div class="add_issue_form">
+ <div class="add_issue_form_title">
+ <a name="form"><?php echo gtext("Add a new issue");?></a>
+ </div>
+
+ <?php echo $notice;?>
+
+ <!--preiview-->
+ <?php if (isset($preview_message)) { ?>
+ <div class="message_preview_notice">
+ <?php echo gtext("preview of the new issue message");?>:
+ </div>
+ <div class="issues_message_item_preview">
+ <div class="message_view_description">
+ <?php echo decodeWikiText($preview_message);?>
+ </div>
+ </div>
+ <?php } ?>
+
+ <?php echo $form;?>
+ </div>
+
+ <?php } else { ?>
+
+ <div class="talk_login_notice">
+ <a name="form"><?php echo gtext("You have to");?> <a href="<?php echo $this->baseUrl."/users/login/$lang?redirect=".$currPos.$queryString;?>"><?php echo gtext("login");?></a> <?php echo gtext("in order to submit an issue");?></a>
+ </div>
+
+ <?php } ?>
+
+ </div>
diff --git a/Application/Views/Desktop/Meet/contributions.php b/Application/Views/Desktop/Meet/contributions.php
new file mode 100644
index 0000000..43f56dd
--- /dev/null
+++ b/Application/Views/Desktop/Meet/contributions.php
@@ -0,0 +1,79 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/meet/user/$lang/$meet_username";?>"><?php echo gtext("meet");?> <b><?php echo $meet_username;?></b></a> &raquo; <?php echo gtext("contributions");?>
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo gtext("contributions of");?> <?php echo $meet_username;?>
+ </div>
+
+ <div class="external_users_contrib">
+
+ <!--hardware contributions-->
+ <?php if ($hasHardware) { ?>
+ <div class="user_hardware_pages">
+ <a href="<?php echo $this->baseUrl."/meet/hardware/$lang/$meet_username";?>">hardware inserted/updated by <b><?php echo $meet_username;?></b></a>
+ </div>
+ <?php } ?>
+
+ <!--talk messages submitted (hardware pages)-->
+ <?php if ($hasTalk) { ?>
+ <div class="user_hardware_pages">
+ <a href="<?php echo $this->baseUrl."/meet/talk/$lang/$meet_username".$this->viewStatus;?>">talk messages submitted by <b><?php echo $meet_username;?></b> (hardware pages)</a>
+ </div>
+ <?php } ?>
+
+ <!--issues opened-->
+ <?php if ($hasIssues) { ?>
+ <div class="user_hardware_pages">
+ <a href="<?php echo $this->baseUrl."/meet/issues/$lang/$meet_username".$this->viewStatus;?>">issues opened by <b><?php echo $meet_username;?></b></a>
+ </div>
+ <?php } ?>
+
+ <!--messages submitted-->
+ <?php if ($hasMessages) { ?>
+ <div class="user_hardware_pages">
+ <a href="<?php echo $this->baseUrl."/meet/messages/$lang/$meet_username".$this->viewStatus;?>">messages submitted by <b><?php echo $meet_username;?></b></a>
+ </div>
+ <?php } ?>
+
+ <!--messages submitted-->
+ <?php if ($hasWiki) { ?>
+ <div class="user_hardware_pages">
+ <a href="<?php echo $this->baseUrl."/meet/wiki/$lang/$meet_username".$this->viewStatus;?>">wiki pages inserted/updated by <b><?php echo $meet_username;?></b></a>
+ </div>
+ <?php } ?>
+
+ <!--talk messages submitted (wiki pages)-->
+ <?php if ($hasWikiTalk) { ?>
+ <div class="user_hardware_pages">
+ <a href="<?php echo $this->baseUrl."/meet/wikitalk/$lang/$meet_username".$this->viewStatus;?>">talk messages submitted by <b><?php echo $meet_username;?></b> (wiki pages)</a>
+ </div>
+ <?php } ?>
+
+ </div>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/hardware.php b/Application/Views/Desktop/Meet/hardware.php
new file mode 100644
index 0000000..b0fdfa1
--- /dev/null
+++ b/Application/Views/Desktop/Meet/hardware.php
@@ -0,0 +1,30 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php
+
+ $name = $item['hardware']['model'];
+ $type = $item['hardware']['type'];
+ $id_hard = $item['hardware']['id_hard'];
+
+ ?>
+ <?php echo $type;?> <a href="<?php echo $this->baseUrl."/".Hardware::getControllerFromType($type)."/view/$lang/$id_hard/".encodeUrl($name);?>"><?php echo $name;?></a> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/issues.php b/Application/Views/Desktop/Meet/issues.php
new file mode 100644
index 0000000..2e88d5f
--- /dev/null
+++ b/Application/Views/Desktop/Meet/issues.php
@@ -0,0 +1,31 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php
+
+ $i_date = $item['issues']['creation_date'];
+ $i_title = $item['issues']['title'];
+ $i_id = $item['issues']['id_issue'];
+
+ ?>
+
+ <?php echo "<a href='".$this->baseUrl."/issues/view/$lang/$i_id'>".$i_title."</a> at ".smartDate($i_date);?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/list_template.php b/Application/Views/Desktop/Meet/list_template.php
new file mode 100644
index 0000000..2c2f6d3
--- /dev/null
+++ b/Application/Views/Desktop/Meet/list_template.php
@@ -0,0 +1,50 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/meet/user/$lang/$meet_username";?>">meet <b><?php echo $meet_username;?></b></a> &raquo; <a href="<?php echo $this->baseUrl."/meet/contributions/$lang/$meet_username";?>">contributions</a> &raquo; <?php echo $tree_last_string;?>
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo $page_explanation_title;?> <?php echo $meet_username;?>
+ </div>
+
+ <div class="external_users_contrib">
+ <?php foreach ($table as $item) {?>
+ <div class="users_contrib_item">
+
+ <div class="contribution_item">
+ <?php include(ROOT . '/Application/Views/' .$subfolder. "/Meet/".$this->action.".php");?>
+ </div>
+
+ </div>
+ <?php } ?>
+ </div>
+
+ <?php if (strcmp($this->action,'hardware') !== 0) {?>
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+ <?php } ?>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/meet.php b/Application/Views/Desktop/Meet/meet.php
new file mode 100644
index 0000000..f0e31b3
--- /dev/null
+++ b/Application/Views/Desktop/Meet/meet.php
@@ -0,0 +1,114 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("meet");?> <b><?php echo $meet_username;?></b>
+ </div>
+
+ <?php if ($isadmin) { ?>
+ <div class="moderator_box">
+ <?php if ($isBlocked) { ?>
+ This user has been blocked
+
+ <a id="<?php echo $meet_id_user;?>" class="unblock_user block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/im-user.png">unblock the user</a>
+
+ <?php } else { ?>
+
+ <a id="<?php echo $meet_id_user;?>" class="block_user block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/im-ban-user.png">block the user</a>
+
+ <?php } ?>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">user</div>
+ <a id="<?php echo $meet_id_user;?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <div class="meet_contrib_link">
+ <u><?php echo gtext("Public profile of");?> <?php echo $meet_username;?></u>. <?php echo gtext("See all the contributions of");?> <a href="<?php echo $this->baseUrl."/meet/contributions/$lang/$meet_username";?>"> <b><?php echo $meet_username;?></b></a>
+ </div>
+
+ <?php foreach ($table as $item) {?>
+ <div class="users_meet_box">
+
+ <div class="meet_item">
+ <div class="meet_item_inner">Username:</div> <?php echo $item['regusers']['username'];?>
+ </div>
+
+ <?php if (strcmp($item['profile']['website'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("My website");?>:</div> <?php echo vitalizeUrl($item['profile']['website']);?>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['real_name'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("My real name");?>:</div> <?php echo $item['profile']['real_name'];?>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['publish_mail'],'yes') === 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("My e-mail address");?>:</div> <?php echo $item['regusers']['e_mail'];?>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['where_you_are'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("I'm from");?>:</div> <?php echo $item['profile']['where_you_are'];?>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['birth_date'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("Birthdate");?>:</div> <?php echo $item['profile']['birth_date'];?>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['fav_distro'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("My favourite distribution");?>:</div> <?php echo $item['profile']['fav_distro'];?>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['projects'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("Free software projects I'm working on");?>:</div> <div><?php echo nl2br($item['profile']['projects']);?></div>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($item['profile']['description'],'') !== 0) { ?>
+ <div class="meet_item">
+ <div class="meet_item_inner"><?php echo gtext("My description");?>:</div> <div><?php echo nl2br($item['profile']['description']);?></div>
+ </div>
+ <?php } ?>
+
+ </div>
+ <?php } ?>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/messages.php b/Application/Views/Desktop/Meet/messages.php
new file mode 100644
index 0000000..f85686b
--- /dev/null
+++ b/Application/Views/Desktop/Meet/messages.php
@@ -0,0 +1,31 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php
+
+ $m_date = $item['messages']['creation_date'];
+ $m_id = $item['messages']['id_mes'];
+ $i_id = $item['messages']['id_issue'];
+
+ ?>
+
+ <?php echo "<a href='".$this->baseUrl."/issues/view/$lang/$i_id#message-$m_id'>".smartDate($m_date)."</a>";?> submitted to the issue <b><?php echo $item['issues']['title'];?></b> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/talk.php b/Application/Views/Desktop/Meet/talk.php
new file mode 100644
index 0000000..9ddc5b3
--- /dev/null
+++ b/Application/Views/Desktop/Meet/talk.php
@@ -0,0 +1,32 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php
+
+ $t_date = $item['talk']['creation_date'];
+ $t_title = $item['talk']['title'];
+ $t_id = $item['talk']['id_hard'];
+ $t_id_talk = $item['talk']['id_talk'];
+ $controller = Hardware::getControllerFromType($item['hardware']['type']);
+ ?>
+
+ <?php echo "<a href='".$this->baseUrl."/$controller/talk/$lang/$t_id#talk-$t_id_talk'>".$t_title."</a> at ".smartDate($t_date);?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/wiki.php b/Application/Views/Desktop/Meet/wiki.php
new file mode 100644
index 0000000..1ec339e
--- /dev/null
+++ b/Application/Views/Desktop/Meet/wiki.php
@@ -0,0 +1,29 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php
+
+ $name = $item['wiki']['title'];
+ $id_wiki = $item['wiki']['id_wiki'];
+
+ ?>
+ <a href="<?php echo $this->baseUrl."/wiki/page/$lang/".encodeUrl($name);?>"><?php echo $name;?></a> \ No newline at end of file
diff --git a/Application/Views/Desktop/Meet/wikitalk.php b/Application/Views/Desktop/Meet/wikitalk.php
new file mode 100644
index 0000000..351960d
--- /dev/null
+++ b/Application/Views/Desktop/Meet/wikitalk.php
@@ -0,0 +1,31 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php
+
+ $t_date = $item['wiki_talk']['creation_date'];
+ $t_title = $item['wiki_talk']['title'];
+ $t_id = $item['wiki_talk']['id_wiki'];
+ $t_id_talk = $item['wiki_talk']['id_talk'];
+ ?>
+
+ <?php echo "<a href='".$this->baseUrl."/wiki/talk/$lang/$t_id#wiki-talk-$t_id_talk'>".$t_title."</a> at ".smartDate($t_date);?> \ No newline at end of file
diff --git a/Application/Views/Desktop/My/email.php b/Application/Views/Desktop/My/email.php
new file mode 100644
index 0000000..3c9a070
--- /dev/null
+++ b/Application/Views/Desktop/My/email.php
@@ -0,0 +1,33 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/my/home/$lang/$token";?>">panel</a> &raquo; e-mail
+ </div>
+
+ <?php echo $notice;?>
+
+ <?php echo $form;?>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/My/goodbye.php b/Application/Views/Desktop/My/goodbye.php
new file mode 100644
index 0000000..2f83695
--- /dev/null
+++ b/Application/Views/Desktop/My/goodbye.php
@@ -0,0 +1,63 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function(){
+
+ $(".close_account_submit").click(function () {
+ if (window.confirm("Are you really sure?")) {
+ return true;
+ }
+ return false;
+ });
+
+ });
+
+ </script>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/my/home/$lang/$token";?>">panel</a> &raquo; delete account
+ </div>
+
+ <div class="delete_account_notice_box">
+ After your account cancellation:
+ <ul>
+ <li>you won't be able to log-in anymore</li>
+ <li>all your data, except for your username, will be deleted from the database</li>
+ <li>your public profile won't be accessible anymore</li>
+ <li>you won't be able to get your old account back. If you want to register another time you have to choose a different username</li>
+ <li>your username will remain in the history of the devices (notebooks,video cards..) you have modified</li>
+ </ul>
+ </div>
+
+ <div class="climb_form_ext_box">
+
+ <form action="<?php echo $this->currPage."/$lang".$this->viewStatus;?>" method="POST">
+ I want to close my account: <input class="close_account_submit" type="submit" name="closeAction" value="confirm">
+ </form>
+
+ </div>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/My/panel.php b/Application/Views/Desktop/My/panel.php
new file mode 100644
index 0000000..67fbe1d
--- /dev/null
+++ b/Application/Views/Desktop/My/panel.php
@@ -0,0 +1,64 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("control panel");?>
+ </div>
+
+ <?php if ($userBlocked) { ?>
+ <div class="moderator_box">
+ Your account has been blocked by an administrator of the website. You can neither insert/modify devices nor submit new issues or messages until some other moderator un-block your account.
+ </div>
+ <?php } ?>
+
+ <?php if ($isadmin) { ?>
+ <div id="admin_box">
+ <div class="admin_box_title"><?php echo gtext("Special pages for administrators");?></div>
+ <ul>
+ <li><a href="<?php echo Url::getRoot('special/adminactions/'.$lang);?>"><?php echo gtext("Actions carried out by administrators");?></a></li>
+ <li><a href="<?php echo Url::getRoot('special/deleted/'.$lang);?>"><?php echo gtext("List of hidden device pages");?></a></li>
+ <li><a href="<?php echo Url::getRoot('special/notapproved/'.$lang);?>"><?php echo gtext("Device pages that have to be approved");?></a> ( <a class="not_bold" href="<?php echo $this->baseUrl."/rss/notapproved/$lang";?>"><?php echo gtext('you can also subscribe to the feed in order to receive the new modifications that need a moderation');?></a> )</li>
+ </ul>
+ </div>
+ <?php } ?>
+
+ <?php if ($ismoderator) { ?>
+ <div id="moderator_box">
+ <div class="moderator_box_title"><?php echo gtext("Special pages for moderators");?></div>
+ <ul>
+ <li><a href="<?php echo Url::getRoot('special/modactions/'.$lang);?>"><?php echo gtext("Actions carried out by moderators");?></a></li>
+ <li><a href="<?php echo Url::getRoot('special/usersactions/'.$lang);?>"><?php echo gtext("Actions carried out by users");?></a></li>
+ </ul>
+ </div>
+ <?php } ?>
+
+ <ul class='panelApplicationList'>
+ <li><a href="<?php echo Url::getRoot('meet/user/'.$lang.'/'.$username);?>"><?php echo gtext("Watch your public profile");?></a></li>
+ <li><a href="<?php echo Url::getRoot('my/profile/'.$lang.'/'.$token);?>"><?php echo gtext("Edit your profile");?></a></li>
+ <li><a href="<?php echo Url::getRoot('my/email/'.$lang.'/'.$token);?>"><?php echo gtext("Change your e-mail address");?></a></li>
+ <li><a href="<?php echo Url::getRoot('my/password/'.$lang.'/'.$token);?>"><?php echo gtext("Change your password");?></a></li>
+ <li><a href="<?php echo Url::getRoot('my/goodbye/'.$lang.'/'.$token);?>"><?php echo gtext("Delete your account");?></a></li>
+ </ul>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/My/password.php b/Application/Views/Desktop/My/password.php
new file mode 100644
index 0000000..50588ac
--- /dev/null
+++ b/Application/Views/Desktop/My/password.php
@@ -0,0 +1,33 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/my/home/$lang/$token";?>">panel</a> &raquo; password
+ </div>
+
+ <?php echo $notice;?>
+
+ <?php echo $form;?>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/My/profile.php b/Application/Views/Desktop/My/profile.php
new file mode 100644
index 0000000..1826337
--- /dev/null
+++ b/Application/Views/Desktop/My/profile.php
@@ -0,0 +1,33 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/my/home/$lang/$token";?>">panel</a> &raquo; profile
+ </div>
+
+ <?php echo $notice;?>
+
+ <?php echo $form;?>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/News/index.php b/Application/Views/Desktop/News/index.php
new file mode 100644
index 0000000..f46aaae
--- /dev/null
+++ b/Application/Views/Desktop/News/index.php
@@ -0,0 +1,51 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("News");?>
+ </div>
+
+ <div class="news_external_box">
+ <?php foreach ($table as $row) { ?>
+ <div class="news_item">
+ <div class="news_item_title">
+ <?php echo $row['news']['title'];?>
+ </div>
+ <div class="news_item_date">
+ <?php echo smartDate($row['news']['creation_date']);?>
+ </div>
+ <div class="news_item_message">
+ <?php echo decodeWikiText($row['news']['message']);?>
+ </div>
+ </div>
+ <?php } ?>
+ </div>
+
+ <?php if ($recordNumber > 10) { ?>
+ <div class="history_page_list_news">
+ <?php echo $pageList;?>
+ </div>
+ <?php } ?>
+
+ </div>
diff --git a/Application/Views/Desktop/Notebooks/.svn/entries b/Application/Views/Desktop/Notebooks/.svn/entries
new file mode 100644
index 0000000..334d6af
--- /dev/null
+++ b/Application/Views/Desktop/Notebooks/.svn/entries
@@ -0,0 +1,96 @@
+10
+
+dir
+388
+svn+ssh://tonicucoz@svn.savannah.nongnu.org/h-source/trunk/h-source/Application/Views/Desktop/Notebooks
+svn+ssh://tonicucoz@svn.savannah.nongnu.org/h-source
+
+
+
+2012-10-16T05:40:07.156193Z
+388
+tonicucoz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+cdff7dbb-30cd-47f4-9d9c-15594cd9e55c
+
+page.php
+file
+389
+
+
+
+2012-10-16T13:45:45.142595Z
+ac86850a999353cbf3fdd926063fe271
+2012-10-16T13:51:26.763024Z
+389
+tonicucoz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6813
+
+form.php
+file
+389
+
+
+
+2012-10-16T13:46:11.783840Z
+4d6c57cb69df2c9c7c736471ace8cbe4
+2012-10-16T13:51:26.763024Z
+389
+tonicucoz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+7117
+
diff --git a/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base b/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base
new file mode 100644
index 0000000..79a9419
--- /dev/null
+++ b/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base
@@ -0,0 +1,156 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ dist_list_helper();
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <?php echo $notice;?>
+
+ <div class="notebooks_insert_form">
+ <form action="<?php echo $this->baseUrl."/notebooks/".$this->action."/$lang/$token".$this->viewStatus;?>" method="POST">
+
+ <div class="edit_form">
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("vendor");?>:</div>
+ <?php echo Html_Form::select('vendor',$values['vendor'],Notebooks::$vendors,"select_entry");?>
+ <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">Vendor not present?</a>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("model name");?>: <b>*</b><?php echo $modelNameLabel;?></div>
+ <?php echo Html_Form::input('model',$values['model'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("subtype (notebook, netbook, tablet)");?>:</div>
+ <?php echo Html_Form::select('subtype',$values['subtype'],Notebooks::$subtypeSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("architecture");?>:</div>
+ <?php echo Html_Form::select('architecture',$values['architecture'],Notebooks::$architectureSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does it have a free boot firmware (BIOS,UEFI,...) ?");?></div>
+ <?php echo Html_Form::select('bios',$values['bios'],Notebooks::$biosSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("can free operating systems be installed?");?></div>
+ <?php echo Html_Form::select('can_free_systems_be_installed',$values['can_free_systems_be_installed'],Notebooks::$installableSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the device prevent installing wifi cards not-approved by the vendor?");?><?php echo $preventWifiLabel;?></div>
+ <?php echo Html_Form::select('prevent_wifi',$values['prevent_wifi'],Notebooks::$preventWifiSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("year of commercialization");?>:</div>
+ <?php echo Html_Form::select('comm_year',$values['comm_year'],Hardware::getCommYears(),"select_entry");?>
+ </div>
+
+ <div class="form_entry td_with_distribution_checkboxes">
+ <div class="entry_label"><?php echo gtext("GNU/Linux distribution used for the test");?>: <b>*</b></div>
+ <?php include(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder. DS . 'noscript_distributions.php');?>
+ <?php echo Html_Form::input('distribution',$values['distribution'],'input_entry input_distribution');?>
+ <?php echo Distributions::getFormHtml();?>
+ </div>
+
+ <div class="form_entry hidden_x_explorer">
+ <div class="entry_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <?php echo Html_Form::select('compatibility',$values['compatibility'],Notebooks::$compatibility,"select_entry");?>
+ <a class="open_help_window" title="compatibility help page" target="blank" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#Notebooks";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("tested with the following kernel libre");?>:<br /><span class="entry_label_small"><?php echo gtext("Write a comma-separated list of kernel versions");?><br /><?php echo gtext("Example");?>: 2.6.35-28-generic, 2.6.38-11 </span></div>
+ <?php echo Html_Form::input('kernel',$values['kernel'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("video card model");?>:</div>
+ <?php echo Html_Form::input('video_card_type',$values['video_card_type'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the video card work?");?></div>
+ <?php echo Html_Form::select('video_card_works',$values['video_card_works'],Notebooks::$videoSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("wifi model");?>:</div>
+ <?php echo Html_Form::input('wifi_type',$values['wifi_type'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the wifi card work?");?></div>
+ <?php echo Html_Form::select('wifi_works',$values['wifi_works'],Notebooks::$wifiSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("webcam model");?>:</div>
+ <?php echo Html_Form::input('webcam_type',$values['webcam_type'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the webcam work?");?></div>
+ <?php echo Html_Form::select('webcam_works',$values['webcam_works'],Notebooks::$webcamSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("Description: (write here all the useful information)");?><?php echo $descriptionLabel;?></div>
+
+ <?php if (isset($descriptionPreview)) { ?>
+ <div class="description_preview_title"><?php echo gtext("Description entry preview");?>:</div>
+ <div class="description_preview">
+ <?php echo decodeWikiText($descriptionPreview); ?>
+ </div>
+ <?php } ?>
+
+ <?php echo Html_Form::textarea('description',$values['description'],'textarea_entry','bb_code');?>
+ </div>
+
+ <?php echo $hiddenInput;?>
+
+ <input type="submit" name="previewAction" value="Preview">
+ <input type="submit" name="<?php echo $submitName;?>" value="Save">
+
+ <div class="mandatory_fields_notice">
+ <?php echo gtext("Fields marked with <b>*</b> are mandatory");?>
+ </div>
+
+ </div>
+
+ </form>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base b/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base
new file mode 100644
index 0000000..09bc80f
--- /dev/null
+++ b/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base
@@ -0,0 +1,120 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <?php
+ $tableName = (strcmp($this->action,'view') === 0) ? 'hardware' : 'revisions';
+ $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null;
+ ?>
+
+ <?php foreach ($table as $item) { ?>
+ <div class="notebooks_viewall <?php echo $displayClass;?>">
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($updated_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>"><?php echo gtext("Current revision");?></a>.
+ </div>
+ <?php } ?>
+
+ <div class="notebook_model">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item[$tableName]['type']);?>"> <span class="span_model_name"><?php echo gtext("model");?>: <b><?php echo $item[$tableName]['model'];?></b><span class="model_id">(<?php echo gtext("model id");?>: <?php echo $id_hard;?>)</span></span>
+ <?php if (strcmp($islogged,'yes') === 0 and strcmp($this->action,'view') === 0) { ?>
+ <span class="ask_for_removal_class"><a class="ask_for_removal_class_link" href="<?php echo $this->baseUrl;?>">ask for removal</a></span>
+ <?php } ?>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("subtype");?> (<?php echo gtext("notebook");?>, <?php echo gtext("netbook");?>, <?php echo gtext("motherboard");?>, <?php echo gtext("tablet");?>):</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['subtype']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("vendor");?>:</div>
+ <div class="inner_value"><b><?php echo betterVendor($item[$tableName]['vendor']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("architecture");?>:</div>
+ <div class="inner_value"><b><?php echo gtext(translate($item[$tableName]['architecture']));?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("does it have a free boot firmware (BIOS,UEFI,...) ?");?></div>
+ <div class="inner_value"><b><?php echo translate_and_gtext($item[$tableName]['bios']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("can free operating systems be installed?");?></div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['can_free_systems_be_installed']);?></b> <?php if (strcmp($item[$tableName]['can_free_systems_be_installed'],'no') === 0) echo "<span class='no_bold'>(".gtext("see the details inside the description entry").")</span>";?></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("does the device prevent installing wifi cards not-approved by the vendor?");?></div>
+ <div class="inner_value"><b><?php echo translate_and_gtext($item[$tableName]['prevent_wifi']);?></b> <?php if (strcmp($item[$tableName]['prevent_wifi'],'yes') === 0) echo "<span class='no_bold'>(".gtext("see the details inside the description entry").")</span>";?></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("year of commercialization");?>:</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['comm_year']);?></b></div>
+ </div>
+
+ <div class="notebook_compatibility">
+ <div class="inner_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['compatibility']);?></b> <a class="open_help_window" target="blank" title="compatibility help page" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#Notebooks";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a></div>
+ </div>
+
+ <div class="model_tested_on">
+ <div class="inner_label"><?php echo gtext("tested on");?>:</div>
+ <div class="inner_value"><b><?php echo Distributions::getName($item[$tableName]['distribution']);?></b></div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("tested with the following kernel libre");?>:</div>
+ <div class="inner_value"><b><?php echo implode("<br />",explode(',',$item[$tableName]['kernel']));?></b></div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("video card model");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['video_card_type'];?></b> (<?php echo gtext(Notebooks::$videoReverse[$item[$tableName]['video_card_works']]);?>)</div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("wifi model");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['wifi_type'];?></b> (<?php echo gtext(Notebooks::$wifiReverse[$item[$tableName]['wifi_works']]);?>)</div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("webcam model");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['webcam_type'];?></b> (<?php echo gtext(Notebooks::$webcamReverse[$item[$tableName]['webcam_works']]);?>)</div>
+ </div>
+
+ <div class="notebook_description">
+ <div class="notebook_description_label"><?php echo gtext("Description");?>:</div>
+ <div class="notebook_description_value"><?php echo decodeWikiText($item[$tableName]['description']);?></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Notebooks/form.php b/Application/Views/Desktop/Notebooks/form.php
new file mode 100644
index 0000000..79a9419
--- /dev/null
+++ b/Application/Views/Desktop/Notebooks/form.php
@@ -0,0 +1,156 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ dist_list_helper();
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <?php echo $notice;?>
+
+ <div class="notebooks_insert_form">
+ <form action="<?php echo $this->baseUrl."/notebooks/".$this->action."/$lang/$token".$this->viewStatus;?>" method="POST">
+
+ <div class="edit_form">
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("vendor");?>:</div>
+ <?php echo Html_Form::select('vendor',$values['vendor'],Notebooks::$vendors,"select_entry");?>
+ <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">Vendor not present?</a>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("model name");?>: <b>*</b><?php echo $modelNameLabel;?></div>
+ <?php echo Html_Form::input('model',$values['model'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("subtype (notebook, netbook, tablet)");?>:</div>
+ <?php echo Html_Form::select('subtype',$values['subtype'],Notebooks::$subtypeSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("architecture");?>:</div>
+ <?php echo Html_Form::select('architecture',$values['architecture'],Notebooks::$architectureSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does it have a free boot firmware (BIOS,UEFI,...) ?");?></div>
+ <?php echo Html_Form::select('bios',$values['bios'],Notebooks::$biosSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("can free operating systems be installed?");?></div>
+ <?php echo Html_Form::select('can_free_systems_be_installed',$values['can_free_systems_be_installed'],Notebooks::$installableSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the device prevent installing wifi cards not-approved by the vendor?");?><?php echo $preventWifiLabel;?></div>
+ <?php echo Html_Form::select('prevent_wifi',$values['prevent_wifi'],Notebooks::$preventWifiSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("year of commercialization");?>:</div>
+ <?php echo Html_Form::select('comm_year',$values['comm_year'],Hardware::getCommYears(),"select_entry");?>
+ </div>
+
+ <div class="form_entry td_with_distribution_checkboxes">
+ <div class="entry_label"><?php echo gtext("GNU/Linux distribution used for the test");?>: <b>*</b></div>
+ <?php include(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder. DS . 'noscript_distributions.php');?>
+ <?php echo Html_Form::input('distribution',$values['distribution'],'input_entry input_distribution');?>
+ <?php echo Distributions::getFormHtml();?>
+ </div>
+
+ <div class="form_entry hidden_x_explorer">
+ <div class="entry_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <?php echo Html_Form::select('compatibility',$values['compatibility'],Notebooks::$compatibility,"select_entry");?>
+ <a class="open_help_window" title="compatibility help page" target="blank" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#Notebooks";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("tested with the following kernel libre");?>:<br /><span class="entry_label_small"><?php echo gtext("Write a comma-separated list of kernel versions");?><br /><?php echo gtext("Example");?>: 2.6.35-28-generic, 2.6.38-11 </span></div>
+ <?php echo Html_Form::input('kernel',$values['kernel'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("video card model");?>:</div>
+ <?php echo Html_Form::input('video_card_type',$values['video_card_type'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the video card work?");?></div>
+ <?php echo Html_Form::select('video_card_works',$values['video_card_works'],Notebooks::$videoSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("wifi model");?>:</div>
+ <?php echo Html_Form::input('wifi_type',$values['wifi_type'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the wifi card work?");?></div>
+ <?php echo Html_Form::select('wifi_works',$values['wifi_works'],Notebooks::$wifiSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("webcam model");?>:</div>
+ <?php echo Html_Form::input('webcam_type',$values['webcam_type'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does the webcam work?");?></div>
+ <?php echo Html_Form::select('webcam_works',$values['webcam_works'],Notebooks::$webcamSelect,"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("Description: (write here all the useful information)");?><?php echo $descriptionLabel;?></div>
+
+ <?php if (isset($descriptionPreview)) { ?>
+ <div class="description_preview_title"><?php echo gtext("Description entry preview");?>:</div>
+ <div class="description_preview">
+ <?php echo decodeWikiText($descriptionPreview); ?>
+ </div>
+ <?php } ?>
+
+ <?php echo Html_Form::textarea('description',$values['description'],'textarea_entry','bb_code');?>
+ </div>
+
+ <?php echo $hiddenInput;?>
+
+ <input type="submit" name="previewAction" value="Preview">
+ <input type="submit" name="<?php echo $submitName;?>" value="Save">
+
+ <div class="mandatory_fields_notice">
+ <?php echo gtext("Fields marked with <b>*</b> are mandatory");?>
+ </div>
+
+ </div>
+
+ </form>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Notebooks/page.php b/Application/Views/Desktop/Notebooks/page.php
new file mode 100644
index 0000000..09bc80f
--- /dev/null
+++ b/Application/Views/Desktop/Notebooks/page.php
@@ -0,0 +1,120 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <?php
+ $tableName = (strcmp($this->action,'view') === 0) ? 'hardware' : 'revisions';
+ $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null;
+ ?>
+
+ <?php foreach ($table as $item) { ?>
+ <div class="notebooks_viewall <?php echo $displayClass;?>">
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($updated_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>"><?php echo gtext("Current revision");?></a>.
+ </div>
+ <?php } ?>
+
+ <div class="notebook_model">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item[$tableName]['type']);?>"> <span class="span_model_name"><?php echo gtext("model");?>: <b><?php echo $item[$tableName]['model'];?></b><span class="model_id">(<?php echo gtext("model id");?>: <?php echo $id_hard;?>)</span></span>
+ <?php if (strcmp($islogged,'yes') === 0 and strcmp($this->action,'view') === 0) { ?>
+ <span class="ask_for_removal_class"><a class="ask_for_removal_class_link" href="<?php echo $this->baseUrl;?>">ask for removal</a></span>
+ <?php } ?>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("subtype");?> (<?php echo gtext("notebook");?>, <?php echo gtext("netbook");?>, <?php echo gtext("motherboard");?>, <?php echo gtext("tablet");?>):</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['subtype']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("vendor");?>:</div>
+ <div class="inner_value"><b><?php echo betterVendor($item[$tableName]['vendor']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("architecture");?>:</div>
+ <div class="inner_value"><b><?php echo gtext(translate($item[$tableName]['architecture']));?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("does it have a free boot firmware (BIOS,UEFI,...) ?");?></div>
+ <div class="inner_value"><b><?php echo translate_and_gtext($item[$tableName]['bios']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("can free operating systems be installed?");?></div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['can_free_systems_be_installed']);?></b> <?php if (strcmp($item[$tableName]['can_free_systems_be_installed'],'no') === 0) echo "<span class='no_bold'>(".gtext("see the details inside the description entry").")</span>";?></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("does the device prevent installing wifi cards not-approved by the vendor?");?></div>
+ <div class="inner_value"><b><?php echo translate_and_gtext($item[$tableName]['prevent_wifi']);?></b> <?php if (strcmp($item[$tableName]['prevent_wifi'],'yes') === 0) echo "<span class='no_bold'>(".gtext("see the details inside the description entry").")</span>";?></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("year of commercialization");?>:</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['comm_year']);?></b></div>
+ </div>
+
+ <div class="notebook_compatibility">
+ <div class="inner_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['compatibility']);?></b> <a class="open_help_window" target="blank" title="compatibility help page" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#Notebooks";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a></div>
+ </div>
+
+ <div class="model_tested_on">
+ <div class="inner_label"><?php echo gtext("tested on");?>:</div>
+ <div class="inner_value"><b><?php echo Distributions::getName($item[$tableName]['distribution']);?></b></div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("tested with the following kernel libre");?>:</div>
+ <div class="inner_value"><b><?php echo implode("<br />",explode(',',$item[$tableName]['kernel']));?></b></div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("video card model");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['video_card_type'];?></b> (<?php echo gtext(Notebooks::$videoReverse[$item[$tableName]['video_card_works']]);?>)</div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("wifi model");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['wifi_type'];?></b> (<?php echo gtext(Notebooks::$wifiReverse[$item[$tableName]['wifi_works']]);?>)</div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("webcam model");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['webcam_type'];?></b> (<?php echo gtext(Notebooks::$webcamReverse[$item[$tableName]['webcam_works']]);?>)</div>
+ </div>
+
+ <div class="notebook_description">
+ <div class="notebook_description_label"><?php echo gtext("Description");?>:</div>
+ <div class="notebook_description_value"><?php echo decodeWikiText($item[$tableName]['description']);?></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Project/index.php b/Application/Views/Desktop/Project/index.php
new file mode 100644
index 0000000..cf6fc96
--- /dev/null
+++ b/Application/Views/Desktop/Project/index.php
@@ -0,0 +1,48 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Why:
+ </div>
+
+ <div class="credits_item_description">
+ The h-node project has been created to help the free software movement by creating an archive of all the hardware that can work with a <a href="http://www.gnu.org/distros/free-distros.html">fully free operating system</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Who:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), designer of the website layout and icons (thanks for your advice and support), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), member of the Spanish translation team (thanks for all of your useful ideas and suggestions), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), member of the French translation team, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), member of the German translation team, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), member of the French translation team, Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />Also thanks to all of you who have believed in the project since it was born and to all of you who gave, give and will give their contribution.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Project/index_de.php b/Application/Views/Desktop/Project/index_de.php
new file mode 100644
index 0000000..4c996a9
--- /dev/null
+++ b/Application/Views/Desktop/Project/index_de.php
@@ -0,0 +1,49 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Warum:
+ </div>
+
+ <div class="credits_item_description">
+ Das Projekt „h-node“ wurde ins Leben gerufen, um für die Freie-Software-Bewegung ein umfassendes Hardware-Archiv für <a href="http://www.gnu.org/distros/free-distros.html">vollkommen Freie Betriebssysteme</a> aufzubauen.
+ </div>
+
+ <div class="credits_item_title">
+ Wer:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), Designer des Website-Layout und Symbole (Danke für die Ratschläge und Unterstützung), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), Mitglied des spanischen Übersetzungsteams (Danke für all die Ideen und nützlichen Anregungen), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), Mitglied des französischen Übersetzungsteams, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), Mitglied des deutschen Übersetzungsteams, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), Mitglied des französischen Übersetzungsteams, , Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />
+ Vielen Dank auch an alle, die an das Projekt, seit es ins Leben gerufen wurde, geglaubt haben und an alle, die ihren Beitrag geleistet haben, leisten und leisten werden.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Project/index_es.php b/Application/Views/Desktop/Project/index_es.php
new file mode 100644
index 0000000..7e9217c
--- /dev/null
+++ b/Application/Views/Desktop/Project/index_es.php
@@ -0,0 +1,49 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Por que:
+ </div>
+
+ <div class="credits_item_description">
+ El proyecto h-node ha sido creado para ayudar al movimiento de software libre al crear un archivo de todo el hardware que puede funcionar con un <a href="http://www.gnu.org/distros/free-distros.es.html">sistema operativo completamente libre</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Quien:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), diseñadora del tema e iconos del sitio, (gracias por su consejo y apoyo), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), miembro del equipo de traducción al Español (gracias por sus útiles ideas y sugerencias), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), miembro del equipo de traducción al Francés, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), miembro del equipo de traducción al Alemán, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), miembro del equipo de traducción al Francés, , Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />
+ También gracias a todos aquellos que han creído en el proyecto desde que nació y a todos aquellos que dieron, dan y darán su contribución.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Project/index_fr.php b/Application/Views/Desktop/Project/index_fr.php
new file mode 100644
index 0000000..3e0e6ad
--- /dev/null
+++ b/Application/Views/Desktop/Project/index_fr.php
@@ -0,0 +1,48 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Pourquoi:
+ </div>
+
+ <div class="credits_item_description">
+ Le projet h-node a été créer pour aider le mouvement du logiciel libre en créant une archive de matériel fonctionnel avec des <a href="http://www.gnu.org/distros/free-distros.fr.html">systèmes entièrement libres</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Qui:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), graphiste du site et des icones (merci pour tes conseils et ton support), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), membre de l’équipe de traduction espagnole (merci pour toutes vos bonnes idée et suggestion), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), membre de l’équipe de traduction française, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), membre de l’équipe de traduction allemande, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), membre de l’équipe de traduction française, Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />Remerciement également à tout ceux qui ont crus à ce projet depuis sa naissance et à tout ceux qui ont donné, donne ou donnerons leurs contributions.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Project/index_gr.php b/Application/Views/Desktop/Project/index_gr.php
new file mode 100644
index 0000000..2b964da
--- /dev/null
+++ b/Application/Views/Desktop/Project/index_gr.php
@@ -0,0 +1,48 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Γιατί:
+ </div>
+
+ <div class="credits_item_description">
+ Το h-node project στήθηκε για να βοηθήσει το Κίνημα Ελεύθερου Λογισμικού, με τη δημιουργία ενός αρχείου για όλο το υλικό (hardware) που μπορεί να δουλέψει με ένα <a href="http://www.gnu.org/distros/free-distros.html">πλήρως ελεύθερο Λειτουργικό Σύστημα</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Ποιος:
+ </div>
+
+ <div class="credits_item_description">
+ Ο Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com developer πηγαίου κώδικα, η Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>, designer του layout και των εικόνων αυτού του ιστοτόπου (ευχαριστούμε για τις συμβουλές σου και την υποστήριξή σου), ο Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), μέλος της Ισπανικής μεταφραστικής ομάδας (ευχαριστούμε για όλες τις χρήσιμες ιδέες σου και τις προτάσεις σου), ο Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), μέλος της Γαλλικής μεταφραστικής ομάδας, ο Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), μέλος της Γερμανικής μεταφραστικής ομάδας, ο Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), μέλος της Γαλλικής μεταφραστικής ομάδας, Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />Ευχαριστούμε, επίσης, όλους εσάς που πιστέψατε σε αυτό το project από τη γέννησή του, καθώς και όλους εσάς που δώσατε, δίνετε και θα δίνετε την συνεισφορά σας.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Project/index_it.php b/Application/Views/Desktop/Project/index_it.php
new file mode 100644
index 0000000..aa142f8
--- /dev/null
+++ b/Application/Views/Desktop/Project/index_it.php
@@ -0,0 +1,48 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Why:
+ </div>
+
+ <div class="credits_item_description">
+ Il progetto h-node è stato creato per aiutare il movimento del software libero creando un archivio di tutto l' hardware che funzioni con un <a href="http://www.gnu.org/distros/free-distros.it.html">sistema operativo completamente libero</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Who:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), sviluppatore del codice di h-node.com, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), designer del layout del sito e delle icone (grazie per i consigli e il supporto), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), membro del team di traduzione spagnolo (grazie per tutte le idee e gli utili suggerimenti), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), membro del team di traduzione francese, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), membro del team di traduzione tedesco, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), membro del team di traduzione francese, , Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), membro del team di traduzione greco.
+ <br />Grazie anche a tutti Voi che avete creduto nel progetto sin dalla sua nascita e a tutti quelli che hanno dato, danno e daranno il loro contributo.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Rss/modifications.php b/Application/Views/Desktop/Rss/modifications.php
new file mode 100644
index 0000000..0a9100b
--- /dev/null
+++ b/Application/Views/Desktop/Rss/modifications.php
@@ -0,0 +1,46 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php echo "<?xml version='1.0' encoding='UTF-8'?>\n";?>
+<rss version="2.0">
+
+<channel>
+<title><?php echo Website::$generalName;?></title>
+<link><?php echo Url::getRoot();?></link>
+<description><?php echo gtext("Database modifications");?></description>
+
+<?php
+$u = new UsersModel();
+$translations = array('insert'=>'inserted','update'=>'updated');
+?>
+
+<?php foreach ($table as $row) { ?>
+<item>
+ <title><?php echo $row['hardware']['model'];?></title>
+ <description><![CDATA[<?php echo "$statusnetText ".gtext('the model')." ".$row['hardware']['model']." ".gtext('has been '.$translations[$row['history']['action']].' by')." ".$u->getUser($row['history']['created_by']);?>]]></description>
+ <link><?php echo $this->baseUrl."/".Hardware::$typeToController[$row['hardware']['type']]."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?></link>
+ <pubDate><?php echo pubDateFormat($row['history']['creation_date']);?></pubDate>
+</item>
+
+<?php } ?>
+
+</channel>
+</rss>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Rss/notapproved.php b/Application/Views/Desktop/Rss/notapproved.php
new file mode 100644
index 0000000..dec338b
--- /dev/null
+++ b/Application/Views/Desktop/Rss/notapproved.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php echo "<?xml version='1.0' encoding='UTF-8'?>\n";?>
+<rss version="2.0">
+
+<channel>
+<title><?php echo Website::$generalName;?></title>
+<link><?php echo Url::getRoot();?></link>
+<description><?php echo gtext("Device pages that have to be approved");?></description>
+
+<?php foreach ($table as $row) { ?>
+<item>
+ <title><?php echo $row['hardware']['model'];?></title>
+ <description><![CDATA[<?php echo gtext('the model')." ".$row['hardware']['model']." ".gtext("has been inserted by an anonymous user, it has to be approved by an administrator in order to be published");?>]]></description>
+ <link><?php echo $this->baseUrl."/".Hardware::$typeToController[$row['hardware']['type']]."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?></link>
+ <pubDate><?php echo pubDateFormat($row['hardware']['update_date']);?></pubDate>
+</item>
+
+<?php } ?>
+
+</channel>
+</rss>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Search/form.php b/Application/Views/Desktop/Search/form.php
new file mode 100644
index 0000000..136c544
--- /dev/null
+++ b/Application/Views/Desktop/Search/form.php
@@ -0,0 +1,111 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ $(".search_form table").append("<tr><td><input id=\"search_action_input\" type=\"submit\" name=\"action\" value=\"<?php echo gtext('Search');?>\"></td></tr>");
+
+ $("#search_action_input").click(function(){
+
+ var s_type = $("#search_type_input").attr("value");
+ var s_model = $("#search_model_input").attr("value");
+ var s_action = $("#search_action_input").attr("value");
+
+ var s_url = "1/search/" + s_type + "/" + s_model;
+
+ location.href="<?php echo $this->baseUrl."/search/results/$lang/";?>"+s_url;
+ return false;
+ });
+
+ });
+
+ </script>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext('Search form');?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Search one device in the archive");?>:
+ </div>
+
+ <div class="search_form">
+ <div class="search_form_label">
+ <img class="search_img" src="<?php echo $this->baseUrl;?>/Public/Img/Glaze/viewmag.png"> <span class="span_search_desc"><?php echo gtext("search by");?> <b><?php echo gtext("model name");?></b></span>
+ </div>
+ <noscript>
+ <div class="noscript_notice">
+ you need javascript enabled in order to use the form below
+ </div>
+ </noscript>
+ <form method="GET">
+ <table>
+ <tr>
+ <td><?php echo gtext("hardware type");?>:</td>
+ <td><?php echo Html_Form::select('type','',Hardware::getTypes(),"select_entry","search_type_input");?></td>
+ </tr>
+ <tr>
+ <td><?php echo gtext("the model name contains");?>:</td>
+ <td><?php echo Html_Form::input('model','','input_entry_search',"search_model_input");?></td>
+ </tr>
+ </table>
+ </form>
+ </div>
+
+ <div class="search_form_pciid">
+ <div class="search_form_label">
+ <img class="search_img" src="<?php echo $this->baseUrl;?>/Public/Img/Glaze/viewmag.png"> <span class="span_search_desc"><?php echo gtext("search by");?> <b>vendorid:productid</b></span>
+ </div>
+ <form action="<?php echo $this->baseUrl."/search/pciid/".Lang::$current;?>" method="POST">
+ <table>
+ <tr>
+ <td><?php echo gtext("VendorID:ProductID code of the device");?>:</td>
+ <td><?php echo Html_Form::input('pciid','','input_entry_search');?></td>
+ </tr>
+ <tr>
+ <td><input type="submit" name="search_pci" value="<?php echo gtext('Search');?>"></td>
+ </tr>
+ </table>
+ </form>
+ </div>
+
+ <div class="search_form_lspci">
+ <div class="search_form_label">
+ <img class="search_img" src="<?php echo $this->baseUrl;?>/Public/Img/Glaze/viewmag.png"> <span class="span_search_desc"><?php echo gtext("analyze the output of the lspci command");?></span>
+ </div>
+ <form action="<?php echo $this->baseUrl."/search/lspci/".Lang::$current;?>" method="POST">
+ <table>
+ <tr>
+ <td valign="top"><?php echo gtext("paste the output of the lspci command");?>:<div class="lspci_notice">lspci -vmmnn</div></td>
+ <td><?php echo Html_Form::textarea('lspci',gtext('write here the output of lspci -vmmnn'),'textarea_entry_search');?></td>
+ </tr>
+ <tr>
+ <td><input type="submit" name="search_pci" value="<?php echo gtext('Search');?>"></td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/Search/lspci_results.php b/Application/Views/Desktop/Search/lspci_results.php
new file mode 100644
index 0000000..970789b
--- /dev/null
+++ b/Application/Views/Desktop/Search/lspci_results.php
@@ -0,0 +1,89 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/search/form/$lang";?>"><?php echo gtext('Search form');?></a> &raquo; <?php echo gtext('Results of the search');?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Results of the search");?>:
+ </div>
+
+ <div class="search_form">
+
+ <?php if (!$flag) { ?>
+ <?php echo $notice;?>
+ <div>
+ <a href="<?php echo $this->baseUrl."/search/form/$lang";?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+ <?php } ?>
+
+ <div class="found_ext">
+ <?php if (count($table)>0) { ?>
+ <div class="search_item_found">
+ <?php echo gtext("The following devices has been found in the database");?>:
+ </div>
+ <?php }?>
+
+ <?php foreach ($table as $row) { ?>
+ <div class="lspci_item_found">
+ <div class="lspci_item_found_model">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($row['hardware']['type']);?>"> <span class="search_result_model_name"><?php echo "<b>".$row['hardware']['type']."</b> - <a href='".$this->baseUrl."/".Hardware::getControllerFromType($row['hardware']['type'])."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model'])."'>".$row['hardware']['model']."</a>";?></span>
+ </div>
+ <div class="lspci_item_found_compat">
+ <?php
+ echo gtext("does it work with free software?"). " <b>".gtext($row['hardware'][Hardware::getWorksFieldFromType($row['hardware']['type'])])."</b>";
+ ?>
+ </div>
+ </div>
+ <?php } ?>
+ </div>
+
+ <div class="found_ext">
+ <?php if (count($notFoundDevices)>0) { ?>
+ <div class="search_item_found">
+ <?php echo gtext("The following devices has not been found in the database");?>:<br />
+ <?php echo gtext("can you please insert them?");?>
+ </div>
+ <?php }?>
+
+ <?php foreach ($notFoundDevices as $device) { ?>
+ <div class="lspci_item_not_found">
+ <div class="lspci_item_found_model">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromClass($device['classId']);?>"> <span class="search_result_model_name"><?php echo "<b>".Hardware::getTypeFromClass($device['classId'])."</b> - ".$device['deviceName'];?></span>
+ <div class="lspci_item_found_compat">
+ <ul>
+ <li><b><?php echo gtext("device type");?>:</b><?php echo $device['className'];?></li>
+ <li><b><?php echo gtext("vendor");?>:</b><?php echo $device['vendorName'];?></li>
+ <li><b><?php echo gtext("VendorID:ProductID code of the device");?></b>: <?php echo $device['vendorId'].":".$device['deviceId'];?></li>
+ </ul>
+ <a href="<?php echo Go::toHardwareType(Hardware::getTypeFromClass($device['classId']));?>"><img align="top" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/agt_forward.png"> insert</a>
+ </div>
+ </div>
+ </div>
+ <?php } ?>
+ </div>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Search/results.php b/Application/Views/Desktop/Search/results.php
new file mode 100644
index 0000000..2fb128b
--- /dev/null
+++ b/Application/Views/Desktop/Search/results.php
@@ -0,0 +1,87 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/search/form/$lang";?>"><?php echo gtext('Search form');?></a> &raquo; <?php echo gtext('Results of the search');?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Results of the search");?>:
+ </div>
+
+ <div class="search_form">
+ <?php
+ $count = 0;
+ foreach ($table as $row) {
+ $count++;
+ ?>
+
+ <div class="search_result_item">
+ <div class="first_level">
+ <div class="search_result_item_left"><?php echo gtext("model name");?>:</div> <div class="search_result_item_right"><b><a href="<?php echo $this->baseUrl."/".Hardware::getControllerFromType($row['hardware']['type'])."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?>"><?php echo $row['hardware']['model'];?></a></b></div>
+ </div>
+ <?php if ( strcmp($row['hardware']['other_names'],'') !== 0 ) { ?>
+ <div class="first_level">
+ <div class="search_result_item_left"><?php echo gtext("possible other names of the device");?>:</div> <div class="search_result_item_right"><b><?php echo nl2br($row['hardware']['other_names']);?></b></div>
+ </div>
+ <?php } ?>
+ <div class="first_level">
+ <div class="search_result_item_left"><?php echo gtext("model type");?>: </div> <div class="search_result_item_right"><b><?php echo $row['hardware']['type'];?></b></div>
+ </div>
+ <div class="first_level">
+ <div class="search_result_item_left"><?php echo gtext("year of commercialization");?>: </div> <div class="search_result_item_right"><b><?php echo $row['hardware']['comm_year'];?></b></div>
+ </div>
+ </div>
+
+ <?php } ?>
+
+ <?php if ($count === 0) { ?>
+ <?php if (strcmp($this->action,'pciid') === 0) { ?>
+
+ <div class="lspci_item_not_found">
+ <?php echo gtext("There are no devices in the database with the vendorid:productid code specified by you.");?>
+ <div class="lspci_item_not_found_inner"><?php echo gtext("Would you like to add it to the database?");?></div>
+ <ul class="insert_suggestion_list">
+ <?php foreach ($stat as $type => $number) { ?>
+ <li><img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($type);?>"> <a href="<?php echo $this->baseUrl."/".Hardware::getControllerFromType($type)."/insert/$lang/$token";?>"><?php echo plural(Hardware::getControllerFromType($type));?></a></li>
+ <?php } ?>
+ </ul>
+ </div>
+
+ <?php } else { ?>
+ <div class="search_result_item">
+ <?php echo gtext("No devices found");?>.
+ </div>
+ <?php } ?>
+ <?php } ?>
+
+ </div>
+
+ <?php if (strcmp($recordNumber,0) !== 0) { ?>
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+ <?php } ?>
+
+ </div>
diff --git a/Application/Views/Desktop/Special/modactions.php b/Application/Views/Desktop/Special/modactions.php
new file mode 100644
index 0000000..3e58c62
--- /dev/null
+++ b/Application/Views/Desktop/Special/modactions.php
@@ -0,0 +1,95 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/my/home/$lang/$token";?>"><?php echo gtext('panel');?></a> &raquo; list of actions
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo $viewTitle; ?>
+ </div>
+
+ <table class="listTable">
+ <tr class="listHead">
+ <td class="simpleText">ACTION ID</td>
+ <td class="simpleText"><?php echo $user_status;?></td>
+ <td class="simpleText">ACTION</td>
+ <td class="simpleText">TYPE</td>
+ <td class="simpleText">OBJECT ID</td>
+ <td class="simpleText text_item_date">DATE</td>
+ <?php if (strcmp($this->action,'usersactions') !== 0) { ?>
+ <td class="simpleText">NOTE</td>
+ <?php } ?>
+ </tr>
+ <tr>
+ <td>&nbsp</td>
+ <td>
+ <form class="user_action_filter" action="<?php echo $this->currPage."/1/undef";?>">
+ <input class="user_action_filter_text" type="text" name="username" value="<?php echo $filterValue;?>" />
+ <a title='clear the filter' href='<?php echo $this->currPage."/1/undef";?>'><img src='<?php echo Url::getRoot();?>/Public/Img/Icons/elementary_2_5/clear_filter.png' /></a>
+ <input class="user_action_filter_submit" type='image' title='filter' src='<?php echo $this->baseUrl?>/Public/Img/Icons/elementary_2_5/find.png' value='trova'>
+ </form>
+ </td>
+ <td>&nbsp</td>
+ <td>&nbsp</td>
+ <td>&nbsp</td>
+ <td>&nbsp</td>
+ <?php if (strcmp($this->action,'usersactions') !== 0) { ?>
+ <td>&nbsp</td>
+ <?php } ?>
+ </tr>
+ <?php foreach ($table as $row) { ?>
+ <tr class="listRow">
+ <td class="simpleText">
+ <span class='textItem'><a href="<?php echo goToModeratedItem($row['history']);?>"><?php echo $row['history']['id_history'];?></a></span>
+ </td>
+ <td class="simpleText">
+ <span class='textItem'><?php echo $u->getLinkToUserFromId($row['history']['created_by']);?></span>
+ </td>
+ <td class="simpleText">
+ <span class='textItem'><?php echo HistoryController::$actionTable[$row['history']['action']];?></span>
+ </td>
+ <td class="type_column">
+ <span class='textItem'><?php echo HistoryController::$typeTable[$row['history']['type']];?></span>
+ </td>
+ <td class="simpleText">
+ <span class='textItem'><?php echo $row['history']['id'];?></span>
+ </td>
+ <td class="simpleText text_item_date">
+ <span class='textItem'><?php echo smartDate($row['history']['creation_date']);?></span>
+ </td>
+ <?php if (strcmp($this->action,'usersactions') !== 0) { ?>
+ <td class="simpleText">
+ <span class='textItem'><?php echo $row['history']['message'];?></span>
+ </td>
+ <?php } ?>
+ </tr>
+ <?php } ?>
+ </table>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Special/modifications.php b/Application/Views/Desktop/Special/modifications.php
new file mode 100644
index 0000000..1caca34
--- /dev/null
+++ b/Application/Views/Desktop/Special/modifications.php
@@ -0,0 +1,45 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext('Database modifications');?>
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo gtext('List of the database modifications carried out by users');?>
+ </div>
+
+ <div class="notebooks_viewall">
+ <ul class="page_history">
+ <?php foreach ($table as $row) { ?>
+ <li class="page_history_item"><?php echo gtext('the model');?> <a href="<?php echo Go::toHardwarePage($row['history']['id']);?>"><?php echo $hw->getTheModelName($row['history']['id']);?></a> <?php echo gtext('has been '.$translations[$row['history']['action']].' by');?> <?php echo $u->getLinkToUserFromId($row['history']['created_by'])?> <?php echo gtext('at');?> <?php echo smartDate($row['history']['creation_date']);?></li>
+ <?php } ?>
+ </ul>
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Special/pages_deleted.php b/Application/Views/Desktop/Special/pages_deleted.php
new file mode 100644
index 0000000..f0e69d5
--- /dev/null
+++ b/Application/Views/Desktop/Special/pages_deleted.php
@@ -0,0 +1,45 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/my/home/$lang/$token";?>"><?php echo gtext('panel');?></a> &raquo; <?php echo gtext($titleString);?>
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo gtext($titleString);?>
+ </div>
+
+ <div class="notebooks_viewall">
+ <ul class="page_history">
+ <?php foreach ($table as $row) { ?>
+ <li class="page_history_item"><a href="<?php echo $this->baseUrl."/".Hardware::getControllerFromType($row['hardware']['type'])."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?>"><?php echo $row['hardware']['model'];?></a></li>
+ <?php } ?>
+ </ul>
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Users/add.php b/Application/Views/Desktop/Users/add.php
new file mode 100755
index 0000000..3e8de61
--- /dev/null
+++ b/Application/Views/Desktop/Users/add.php
@@ -0,0 +1,72 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("create new account");?>
+ </div>
+
+ <div class="new_account_title">
+ <?php echo gtext("create new account");?>
+ </div>
+
+ <?php echo $notice;?>
+
+ <form class='formClass' action='<?php echo $this->baseUrl."/users/add/$lang";?>' method='POST'>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("choose the username");?> (<?php echo gtext("characters allowed");?>: a-z A-Z 0-9):</span>
+ <?php echo Html_Form::input('username',$values['username']);?>
+ </div>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("your e-mail address");?> (<?php echo gtext("necessary to confirm the registration");?>):</span>
+ <?php echo Html_Form::input('e_mail',$values['e_mail']);?>
+ </div>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("choose the password");?> (<?php echo gtext("characters allowed");?>: a-z A-Z 0-9 - _ !):</span>
+ <?php echo Html_Form::password('password',$values['password']);?>
+ </div>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("confirm the password");?>:</span>
+ <?php echo Html_Form::password('confirmation',$values['confirmation']);?>
+ </div>
+
+ <div class="captcha_box">
+ <img src="<?php echo $this->baseUrl?>/image/captcha">
+ </div>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("write the code above");?>:</span>
+ <input type="input" name="captcha" value="">
+ </div>
+
+ <div class='inputEntry'>
+ <input id='insertAction' type='submit' name='insertAction' value='<?php echo gtext("create new account");?>'>
+ </div>
+
+ </form>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Users/change.php b/Application/Views/Desktop/Users/change.php
new file mode 100644
index 0000000..c5fdb3b
--- /dev/null
+++ b/Application/Views/Desktop/Users/change.php
@@ -0,0 +1,30 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="confirm_notice">
+ <p>The link has expired</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Users/confirmation.php b/Application/Views/Desktop/Users/confirmation.php
new file mode 100644
index 0000000..796fb1b
--- /dev/null
+++ b/Application/Views/Desktop/Users/confirmation.php
@@ -0,0 +1,44 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; confirmation
+ </div>
+
+ <?php if ($status_confirm) { ?>
+
+ <div class="confirm_notice">
+ <p>The account has been confirmed successfully!</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else { ?>
+
+ <div class="confirm_notice">
+ <p>The confirmation link has expired</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } ?>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Users/forgot.php b/Application/Views/Desktop/Users/forgot.php
new file mode 100644
index 0000000..ad9e046
--- /dev/null
+++ b/Application/Views/Desktop/Users/forgot.php
@@ -0,0 +1,57 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo gtext("request new password");?>
+ </div>
+
+ <div class="new_account_title">
+ <?php echo gtext("request new password");?>
+ </div>
+
+ <?php echo $notice;?>
+
+ <form class='formClass' action='<?php echo $this->currPage."/$lang";?>' method='POST'>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("write your username");?>:</span>
+ <input type="input" name="username" value="">
+ </div>
+
+ <div class="captcha_box">
+ <img src="<?php echo $this->baseUrl?>/image/captcha">
+ </div>
+
+ <div class='formEntry'>
+ <span class='entryLabel'><?php echo gtext("write the code above");?>:</span>
+ <input type="input" name="captcha" value="">
+ </div>
+
+ <div class='inputEntry'>
+ <input id='insertAction' type='submit' name='forgotAction' value='<?php echo gtext("request new password");?>'>
+ </div>
+
+ </form>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Users/login.php b/Application/Views/Desktop/Users/login.php
new file mode 100755
index 0000000..c0c129d
--- /dev/null
+++ b/Application/Views/Desktop/Users/login.php
@@ -0,0 +1,67 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if ( strcmp($updating_flag,'no') === 0 ) { ?>
+
+ <?php if (isset($flag)) { ?>
+ <div class="login_note">
+ Sorry.. you have to be logged if you want to insert a new device in the archive or modify an existing one..
+ </div>
+ <?php } ?>
+
+ <?php echo $notice; ?>
+
+ <div class="login_box">
+ <form action = '<?php echo $action;?>' method = 'POST'>
+
+ <table>
+ <tr>
+ <td>Username</td>
+ <td><input class="login_username_input" type='text' name='username'></td>
+ </tr>
+ <tr>
+ <td>Password</td>
+ <td><input class="login_username_input" type='password' name='password'></td>
+ </tr>
+ <tr>
+ <td><input type = 'submit' value = 'login'></td>
+ </tr>
+ </table>
+
+ </form>
+
+ <div class="manage_account_link_box">
+ <a href="<?php echo $this->baseUrl."/users/add/$lang";?>"><?php echo gtext("create new account");?></a>
+ </div>
+
+ <div class="manage_account_link_box">
+ <a href="<?php echo $this->baseUrl."/users/forgot/$lang";?>"><?php echo gtext("request new password");?></a>
+ </div>
+ </div>
+
+ <?php } else { ?>
+
+ <div class="login_note">
+ Sorry, we are updating the website... it is no possible to log-in, register new accounts or request a new password. You will be able to log-in or create a new account as soon as possible. Thanks!
+ </div>
+
+ <?php } ?>
diff --git a/Application/Views/Desktop/Users/logout.php b/Application/Views/Desktop/Users/logout.php
new file mode 100755
index 0000000..8916a8b
--- /dev/null
+++ b/Application/Views/Desktop/Users/logout.php
@@ -0,0 +1,27 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div class="logout_box">
+ <div><?php echo $notice;?></div>
+
+ <div><a href="<?php echo $this->baseUrl."/users/login/$lang";?>">login</a></div>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Users/notice.php b/Application/Views/Desktop/Users/notice.php
new file mode 100644
index 0000000..9322adf
--- /dev/null
+++ b/Application/Views/Desktop/Users/notice.php
@@ -0,0 +1,96 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; notice
+ </div>
+
+ <?php if ( isset($_SESSION['status']) ) { ?>
+
+ <?php if ( strcmp($_SESSION['status'],'sent') === 0 ) { ?>
+ <div class="confirm_notice">
+ <p>An e-mail has been sent to your mailbox.</p>
+ <p>If you have received no mail, then check inside the spam too</p>
+ <p>Click on the confirmation link in the e-mail in order to confirm the registration of the new account.</p>
+ <p>The confirmation link will expire in a hour.</p>
+ <p>If you don't want to confirm the account registration then wait one hour and your username and e-mail will be deleted from the database.</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else if (strcmp($_SESSION['status'],'regerror') === 0) { ?>
+
+ <div class="confirm_notice">
+ <p>Registration failed</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else if (strcmp($_SESSION['status'],'sent_new') === 0) { ?>
+
+ <div class="confirm_notice">
+ <p>An e-mail has been sent to your mailbox.</p>
+ <p>If you have received no mail, then check inside the spam too</p>
+ <p>Click on the confirmation link in the e-mail in order to change the password of your account.</p>
+ <p>The confirmation link will expire in a hour.</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else if (strcmp($_SESSION['status'],'sent_new_error') === 0) { ?>
+
+ <div class="confirm_notice">
+ <p>Registration failed</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else if (strcmp($_SESSION['status'],'sent_new_password') === 0) { ?>
+
+ <div class="confirm_notice">
+ <p>The new password has been sent to you by mail!</p>
+ <p>If you have received no mail, then check inside the spam too</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else if (strcmp($_SESSION['status'],'sent_new_password_error') === 0) { ?>
+
+ <div class="confirm_notice">
+ <p>Operation failed</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } else if (strcmp($_SESSION['status'],'deleted') === 0) { ?>
+
+ <div class="confirm_notice">
+ <p>Your account has been successfully deleted</p>
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } ?>
+
+ <?php } else { ?>
+
+ <div class="confirm_notice">
+ <p>go to the <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">homepage</a></p>
+ </div>
+
+ <?php } ?>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/Wiki/climb.php b/Application/Views/Desktop/Wiki/climb.php
new file mode 100644
index 0000000..c648e7f
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/climb.php
@@ -0,0 +1,52 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+ <div id="left">
+
+ <?php if (!$isDeleted) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo $tree;?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext('Make this revision the current revision of the page'); ?> <b><?php echo $tree_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the page <?php echo $tree_name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/".$id_wiki.$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <div class="wiki_external_box">
+
+ <?php echo $notice;?>
+
+ <div class="climb_form_ext_box">
+
+ <form action="<?php echo $this->currPage."/$lang/$id_rev"; ?>" method="POST">
+ <?php echo gtext('I want to make this revision the current revision');?>: <input type="submit" name="confirmAction" value="<?php echo gtext('Confirm');?>">
+ </form>
+
+ </div>
+
+ </div>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/Wiki/differences.php b/Application/Views/Desktop/Wiki/differences.php
new file mode 100644
index 0000000..9c06714
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/differences.php
@@ -0,0 +1,64 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <?php if (!$isDeleted) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo $tree;?>
+ </div>
+
+ <?php if ($showDiff === true) { ?>
+ <div class="notebook_view_title">
+ <?php echo gtext("Differences between the revision of");?> <b><?php echo smartDate($update_new);?></b>, <?php echo gtext("created by");?> <b><?php echo getLinkToUser($u->getUser($created_by));?></b>, <?php echo gtext("and the revision of");?> <b><?php echo smartDate($update_old);?></b>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the page <?php echo $tree_name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/".$id_wiki.$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <div class="wiki_external_box">
+
+ <div class="diff_color_notice">
+ <?php echo gtext("<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed.");?>
+ </div>
+
+ <?php foreach ($diffArray as $label => $text) { ?>
+
+ <div class="diff_ext_box">
+
+ <div class="diff_item_label">
+ <?php echo gtext("differences in the entry");?>: <b><?php echo $label;?></b>
+ </div>
+
+ <div class="diff_item_text">
+ <?php echo in_array($label,$fieldsWithBreaks) ? nl2br($text) : $text;?>
+ </div>
+
+ </div>
+
+ <?php } ?>
+
+ </div>
+ <?php } ?>
diff --git a/Application/Views/Desktop/Wiki/form.php b/Application/Views/Desktop/Wiki/form.php
new file mode 100644
index 0000000..38a88c4
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/form.php
@@ -0,0 +1,105 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <div id="left">
+
+ <?php if ( strcmp($this->action,'insert') === 0 ) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a> &raquo; <?php echo gtext('Insert'); ?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext('Insert a new wiki page'); ?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the wiki main page" href="<?php echo $this->baseUrl."/".$this->controller."/page/$lang/Main-Page";?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if ( strcmp($this->action,'update') === 0 ) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/".encodeUrl($tree_name);?>"><?php echo $tree_name;?></a> &raquo; <?php echo gtext('Update'); ?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext('Edit the wiki page'); ?> <b><?php echo $tree_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the page <?php echo $tree_name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/page/$lang/".encodeUrl($tree_name);?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } ?>
+
+ <div class="top_licence_notice">
+ <div><b><?php echo gtext("License information");?>:</b></div>
+ <?php echo License::getSubmissionNotice();?>
+ </div>
+
+ <?php echo $notice;?>
+
+ <div class="notebooks_insert_form">
+
+ <form action="<?php echo $this->baseUrl."/".$this->controller."/".$this->action."/$lang";?>" method="POST">
+
+ <div class="edit_form">
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("the title");?>:</div>
+ <?php echo Html_Form::input('title',$values['title'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("the text of the wiki page");?>:<br /><a href="<?php echo $this->baseUrl."/help/index/$lang#wiki-syntax";?>"><?php echo gtext("discover all the wiki tags");?></a></div>
+
+ <?php if (isset($pagePreview)) { ?>
+ <div class="description_preview_title"><?php echo gtext("Page preview");?>:</div>
+ <div class="description_preview">
+ <?php echo decodeWikiText($pagePreview); ?>
+ </div>
+ <?php } ?>
+
+ <?php echo Html_Form::textarea('page',$values['page'],'textarea_entry','bb_code');?>
+ </div>
+
+ <?php echo $hiddenInput;?>
+
+ <input type="submit" name="previewAction" value="<?php echo gtext("Preview");?>">
+ <input type="submit" name="<?php echo $submitName;?>" value="<?php echo gtext("Save");?>">
+
+ </div>
+
+ </form>
+ </div>
+
diff --git a/Application/Views/Desktop/Wiki/history.php b/Application/Views/Desktop/Wiki/history.php
new file mode 100644
index 0000000..08fa4ac
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/history.php
@@ -0,0 +1,74 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <?php if (!$isDeleted) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang";?>">Wiki</a> &raquo; <a href="<?php echo $wiki->toWikiPage($id);?>"><?php echo $tree_name;?></a> &raquo; <?php echo gtext('History');?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext('History of the wiki page'); ?> <b><?php echo $tree_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the page <?php echo $tree_name;?>" href="<?php echo $wiki->toWikiPage($id);?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <div class="wiki_external_box">
+
+ <ul class="page_history">
+
+ <?php if ($this->viewArgs['page'] === 1) { ?>
+ <?php foreach ($rev1 as $rev) { ?>
+ <li class="page_history_current_item"><b><?php echo gtext("Current revision");?>:</b> <?php echo smartDate($rev['wiki']['update_date']);?> <?php echo gtext("by");?> <?php echo $u->getLinkToUserFromId($rev['wiki']['created_by']);?> (<a href="<?php echo $this->baseUrl."/".$this->controller."/differences/$lang/$id/0".$this->viewStatus;?>">diff</a>)</li>
+ <?php } ?>
+ <?php } ?>
+
+ <?php foreach ($rev2 as $rev) { ?>
+ <li class="page_history_item">
+
+ <a href="<?php echo $this->baseUrl."/".$this->controller."/revision/$lang/".$rev['wiki_revisions']['id_rev'].$this->viewStatus;?>"><?php echo smartDate($rev['wiki_revisions']['update_date']);?></a> <?php echo gtext("by");?> <?php echo $u->getLinkToUserFromId($rev['wiki_revisions']['created_by']);?>
+
+ <?php if (strcmp($rev['wiki_revisions']['id_rev'],$firstRev) !== 0) {?>
+ (<a href="<?php echo $this->baseUrl."/".$this->controller."/differences/$lang/$id/".$rev['wiki_revisions']['id_rev'].$this->viewStatus;?>">diff</a>)
+ <?php } ?>
+
+ <?php if ($islogged === 'yes' and !$isBlocked) { ?>
+ (<a href="<?php echo $this->baseUrl.'/'.$this->controller.'/climb/'.$lang.'/'.$rev['wiki_revisions']['id_rev'].$this->viewStatus;?>"><?php echo gtext('Make current'); ?></a>)
+ <?php } ?>
+
+ </li>
+ <?php } ?>
+
+ </ul>
+
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ <?php } ?>
+
diff --git a/Application/Views/Desktop/Wiki/modifications.php b/Application/Views/Desktop/Wiki/modifications.php
new file mode 100644
index 0000000..71e50c9
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/modifications.php
@@ -0,0 +1,45 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a> &raquo; <?php echo gtext('Wiki modifications');?>
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo gtext('List of the wiki modifications carried out by users');?>
+ </div>
+
+ <div class="notebooks_viewall">
+ <ul class="page_history">
+ <?php foreach ($table as $row) { ?>
+ <li class="page_history_item"><?php echo gtext('the text of the wiki page');?> <a href="<?php echo $wiki->toWikiPage($row['history']['id']);?>"><?php echo $wiki->getTheModelName($row['history']['id']);?></a> <?php echo gtext('has been '.$translations[$row['history']['action']].' by');?> <?php echo $u->getLinkToUserFromId($row['history']['created_by'])?> <?php echo gtext('at');?> <?php echo smartDate($row['history']['creation_date']);?></li>
+ <?php } ?>
+ </ul>
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Wiki/not_found.php b/Application/Views/Desktop/Wiki/not_found.php
new file mode 100644
index 0000000..cd435de
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/not_found.php
@@ -0,0 +1,34 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang";?>">Wiki</a> &raquo; <?php echo gtext('Page not-found'); ?>
+ </div>
+
+ <div class="wiki_external_box">
+ <div>
+ <?php echo gtext('the wiki page has not been found');?>. <a href="<?php echo $this->baseUrl."/wiki/insert/$lang";?>"><?php echo gtext('Would you like to insert it?');?></a>
+ </div>
+ </div>
+
diff --git a/Application/Views/Desktop/Wiki/page.php b/Application/Views/Desktop/Wiki/page.php
new file mode 100644
index 0000000..1716edc
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/page.php
@@ -0,0 +1,154 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <?php
+ $tableName = strcmp($this->action,'page') === 0 ? 'wiki' : 'wiki_revisions';
+ $displayClass = ($isDeleted) ? 'display_none' : null;
+ ?>
+
+ <?php if ( strcmp($this->action,'page') === 0 ) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a> &raquo; <?php echo $tree_name;?>
+ </div>
+
+ <!--block the page-->
+ <?php if ($isadmin) { ?>
+ <div class="moderator_box_deleted">
+ <?php if ($isBlocked) { ?>
+ <?php echo gtext('This wiki page has been blocked'); ?>
+
+ <a id="<?php echo $id_wiki;?>" class="pageunblock_page block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/unlock.png"><?php echo gtext('unblock the wiki page'); ?></a>
+
+ <?php } else { ?>
+
+ <a id="<?php echo $id_wiki;?>" class="pageblock_page block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/lock.png"><?php echo gtext('block the wiki page'); ?></a>
+
+ <?php } ?>
+
+ <?php if ($isDeleted) { ?>
+ <div class="wiki_hidden_notice"><?php echo gtext('This wiki page has been deleted'); ?></div>
+
+ <a id="<?php echo $id_wiki;?>" class="pageshow_page_del block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png"><?php echo gtext('restore the wiki page'); ?></a>
+
+ <?php } else { ?>
+
+ <a id="<?php echo $id_wiki;?>" class="pagehide_page_del block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png"><?php echo gtext('delete the wiki page'); ?></a>
+
+ <?php } ?>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">page</div>
+ <?php if ($isDeleted) { ?>
+ <a class="hidden_message_view_page" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><?php echo gtext("see the page");?></a> |
+ <?php } ?>
+ <a id="<?php echo $id_wiki;?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <div class="notebook_insert_link">
+ <div class="view_page_back_button">
+ <a title="Insert a new wiki page" href="<?php echo $this->baseUrl."/".$this->controller."/insert/$lang";?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/new-60.png"></a>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <div class="view_page_history_button">
+ <a title="talk page" href="<?php echo $this->baseUrl."/".$this->controller."/talk/$lang/$id_wiki";?>"><img class="top_left_note_image" src="<?php echo $this->baseUrl;?>/Public/Img/talk-60.png"></a>
+ </div>
+
+ <div class="view_page_history_button">
+ <a title="history page" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/$id_wiki";?>"><img class="top_left_note_image" src="<?php echo $this->baseUrl;?>/Public/Img/history-60.png"></a>
+ </div>
+ <?php } ?>
+
+ <?php if (!$isDeleted and !$isBlocked) { ?>
+ <div class="view_page_update_button">
+ <form action="<?php echo $this->baseUrl."/".$this->controller."/update/$lang";?>" method="POST">
+ <input title="edit page" class="update_submit_class" type="image" src="<?php echo $this->baseUrl;?>/Public/Img/edit-60.png" value="xedit">
+ <input type="hidden" name="id_wiki" value="<?php echo $id_wiki;?>">
+ </form>
+ </div>
+ <?php } ?>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <div class="talk_numb_ext_wiki">
+ <a href="<?php echo $this->baseUrl."/".$this->controller."/talk/$lang/$id_wiki";?>"><?php echo gtext("talk messages");?>: <?php echo $talk_number;?></a>
+ </div>
+ <?php } ?>
+
+ <?php } else if ( strcmp($this->action,'revision') === 0 ) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo $tree; ?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Revision of the wiki page");?> <b><?php echo $tree_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the page <?php echo $tree_name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/".$id_wiki.$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } ?>
+
+ <div class="wiki_external_box <?php echo $displayClass;?>">
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($created_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $this->baseUrl."/wiki/page/$lang/".encodeUrl($tree_name);?>"><?php echo gtext("Current revision");?></a></a>.
+ </div>
+ <?php } ?>
+
+ <?php foreach ($table as $page) { ?>
+ <div class="wiki_page_title">
+ <?php echo $page[$tableName]['title']?>
+ <?php if ( strcmp($this->action,'page') === 0 ) { ?>
+ <?php if ($isBlocked) { ?>
+ <span class="blocked_notice"><?php echo gtext('This wiki page has been blocked'); ?></span>
+ <?php } ?>
+ <?php } ?>
+ </div>
+ <div class="wiki_page_content">
+ <?php echo decodeWikiText($page[$tableName]['page'])?>
+ </div>
+ <?php } ?>
+
+ <? } ?>
+
+ </div>
+
+ <?php if ($isDeleted) { ?>
+ <div class="revision_alert">
+ <?php echo gtext('This wiki page has been deleted'); ?>
+ </div>
+ <?php } ?>
diff --git a/Application/Views/Desktop/Wiki/pages.php b/Application/Views/Desktop/Wiki/pages.php
new file mode 100644
index 0000000..7a6918a
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/pages.php
@@ -0,0 +1,45 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a> &raquo; <?php echo gtext($topString);?>
+ </div>
+
+ <div class="contrib_explain_box">
+ <?php echo gtext($topString);?>
+ </div>
+
+ <div class="notebooks_viewall">
+ <ul class="page_history">
+ <?php foreach ($table as $row) { ?>
+ <li class="page_history_item"><a href="<?php echo $wiki->toWikiPage($row['wiki']['id_wiki']);?>"><?php echo $row['wiki']['title'];?></a></li>
+ <?php } ?>
+ </ul>
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/Wiki/talk.php b/Application/Views/Desktop/Wiki/talk.php
new file mode 100644
index 0000000..4e93798
--- /dev/null
+++ b/Application/Views/Desktop/Wiki/talk.php
@@ -0,0 +1,173 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo $tree; ?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext('Talk page of the wiki page'); ?> <b><?php echo $tree_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the page <?php echo $tree_name;?>" href="<?php echo $wiki->toWikiPage($id_wiki);?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <?php if (!$isBlocked) { ?>
+
+ <div class="wiki_external_box">
+
+ <?php foreach ($table as $message) { ?>
+
+ <?php if (strcmp($message['wiki_talk']['deleted'],'no') === 0) { ?>
+
+ <a name="wiki-talk-<?php echo $message['wiki_talk']['id_talk'];?>"></a>
+ <div class="talk_message_item">
+
+ <div class="talk_message_item_title_date">
+ <?php if ($ismoderator) { ?>
+ <a id="<?php echo $message['wiki_talk']['id_talk'];?>" class="hide_wiki_talk hide_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png">hide</a>
+ <?php } ?>
+
+ <div class="talk_message_item_title">
+ <?php echo $message['wiki_talk']['title'];?>
+ </div>
+
+ <div class="talk_message_item_date">
+ <?php echo gtext("by");?> <?php echo getLinkToUser($u->getUser($message['wiki_talk']['created_by']));?>, <?php echo smartDate($message['wiki_talk']['creation_date']);?>
+ </div>
+ </div>
+
+ <div class="talk_message_item_content">
+ <?php echo decodeWikiText($message['wiki_talk']['message']);?>
+ </div>
+
+ <?php if ($ismoderator) { ?>
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">wiki_talk</div>
+ <a id="<?php echo $message['wiki_talk']['id_talk'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+ <?php } ?>
+
+ </div>
+
+ <?php } else { ?>
+
+ <?php if ($ismoderator) { ?>
+ <a name="wiki-talk-<?php echo $message['wiki_talk']['id_talk'];?>"></a>
+ <div class="talk_message_item_hidden">
+ this message has been deleted
+
+ <a id="<?php echo $message['wiki_talk']['id_talk'];?>" class="show_wiki_talk hide_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png">make visible</a>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">wiki_talk</div>
+
+ <a id="<?php echo $message['wiki_talk']['id_talk'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+
+ <div class="details_of_hidden_message">
+ <div class="details_of_hidden_message_inner">
+ <div class="talk_message_item_date">
+ submitted by <?php echo getLinkToUser($u->getUser($message['wiki_talk']['created_by']));?>, <?php echo smartDate($message['wiki_talk']['creation_date']);?>
+ </div>
+ <div class="message_view_description_hidden">
+ <?php echo decodeWikiText($message['wiki_talk']['message']);?>
+ </div>
+ </div>
+ <div class="moderation_details_box"></div>
+ </div>
+ </div>
+
+
+ </div>
+ <?php } ?>
+
+ <?php } ?>
+
+ <?php } ?>
+ </div>
+
+ <?php if ($islogged === 'yes') { ?>
+
+ <div class="talk_form_external_box">
+ <div class="talk_login_notice">
+ <a name="form"><?php echo gtext("Add a message");?></a>
+ </div>
+
+ <?php echo $notice;?>
+
+ <div class="notebooks_insert_form">
+ <form action="<?php echo $this->baseUrl."/".$this->controller."/talk/$lang/$id_wiki";?>#form" method="POST">
+
+ <div class="edit_form">
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("TITLE");?>:</div>
+ <?php echo Html_Form::input('title',$values['title'],'talk_input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("MESSAGE");?>:</div>
+ <?php echo Html_Form::textarea('message',$values['message'],'talk_textarea_entry','bb_code');?>
+ </div>
+
+ <input type="submit" name="insertAction" value="<?php echo gtext("Save");?>">
+
+ </div>
+
+ </form>
+ </div>
+ </div>
+
+ <?php } else { ?>
+
+ <div class="talk_login_notice">
+ <a name="form"><?php echo gtext("You have to");?> <a href="<?php echo $this->baseUrl."/users/login/$lang?redirect=".$currPos.$queryString;?>">login</a> <?php echo gtext("in order to add a message");?></a>
+ </div>
+
+ <?php } ?>
+
+ <?php } else { ?>
+ <!--is blocked-->
+ <div class="wiki_external_box">
+ <?php echo gtext('This wiki page has been blocked'); ?>
+ </div>
+ <?php } ?>
+ <!--close deleted-->
+ <?php } ?>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/bottom_left.php b/Application/Views/Desktop/bottom_left.php
new file mode 100644
index 0000000..545a6ea
--- /dev/null
+++ b/Application/Views/Desktop/bottom_left.php
@@ -0,0 +1,29 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (strcmp($this->action,'talk') !== 0) { ?>
+ <div class="bottom_licence_notice">
+ <?php echo License::getBottom();?>
+ </div>
+ <?php } ?>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/catalogue.php b/Application/Views/Desktop/catalogue.php
new file mode 100644
index 0000000..b89eed6
--- /dev/null
+++ b/Application/Views/Desktop/catalogue.php
@@ -0,0 +1,131 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div class="viewall_popup_menu_box_external">
+ <div class="viewall_popup_menu_box">
+ <?php echo $popup;?>
+ </div>
+ <div class="viewall_popup_menu_status">
+ <?php echo $popupLabel;?>
+ </div>
+ </div>
+
+ <?php if (strcmp($this->controller,'notebooks') === 0 ) { ?>
+ <div class="viewall_popup_menu_box_external more_filters">
+ <div class="viewall_popup_menu_box">
+ <?php echo $popupMore;?>
+ </div>
+ <div class="viewall_popup_menu_status">
+ <div class="viewall_popup_menu_status_item"><?php echo translate_and_gtext($this->viewArgs['bios'])?></div>
+ <div class="viewall_popup_menu_status_item"><?php echo translate_and_gtext($this->viewArgs['architecture']);?></div>
+ </div>
+ </div>
+ <?php } ?>
+
+ <div class="model_string_search_form">
+ <form action="<?php echo $this->currPage."/$lang".$clearViewStatus;?>" method="GET">
+ <?php echo gtext("model name");?> <input type="text" value="<?php echo $search_string_form_value;?>" name="search_string">
+ <a href="<?php echo $this->currPage."/$lang".$clearViewStatus;?>"><img src="<?php echo $this->baseUrl."/Public/Img/Crystal/button_cancel.png";?>" /></a>
+ <input type="submit" value="<?php echo gtext('Search');?>" name="submit">
+ </form>
+ </div>
+
+ <!--if no notebooks found-->
+ <?php if (strcmp($recordNumber,0) === 0) { ?>
+ <div class="viewall_no_items_found">
+ <?php echo gtext($notFoundString);?>...
+ </div>
+ <?php } ?>
+
+ <!--loop-->
+ <?php foreach ($table as $item) {?>
+ <div class="model_viewall">
+
+ <div class="notebook_model">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item['hardware']['type']);?>"> <span class="span_model_name"><?php echo gtext("model");?>: <b><?php echo $item['hardware']['model'];?></b></span>
+ </div>
+
+ <?php if ( strcmp($this->controller,'notebooks') !== 0 and strcmp($item['hardware']['other_names'],'') !== 0 ) { ?>
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("possible other names of the device");?>:</div>
+ <div class="inner_value"><?php echo nl2br($item['hardware']['other_names']);?></div>
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($this->controller,'notebooks') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?>
+ <div class="notebook_vendor">
+ <?php if (strcmp($this->controller,'notebooks') === 0) { ?>
+ <div class="inner_label"><?php echo gtext("subtype");?> (<?php echo gtext("notebook");?>, <?php echo gtext("netbook");?>, <?php echo gtext("motherboard");?>, <?php echo gtext("tablet");?>):</div>
+ <?php } else { ?>
+ <div class="inner_label"><?php echo gtext("subtype");?> (<?php echo $subtypeHelpLabel;?>):</div>
+ <?php } ?>
+ <div class="inner_value"><b><?php echo translate_and_gtext($item['hardware']['subtype']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("vendor");?>:</div>
+ <div class="inner_value"><?php echo betterVendor($item['hardware']['vendor']);?></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("year of commercialization");?>:</div>
+ <div class="inner_value"><b><?php echo gtext($item['hardware']['comm_year']);?></b></div>
+ </div>
+
+ <?php if (strcmp($this->controller,'notebooks') !== 0 ) { ?>
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("interface");?>:</div>
+ <div class="inner_value"><b><?php echo gtext(translate($item['hardware']['interface']));?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_kernel">
+ <?php if (strcmp($this->controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0 or strcmp($this->controller,'notebooks') === 0) { ?>
+ <div class="inner_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <?php } else if (strcmp($this->controller,'videocards') === 0 ) { ?>
+ <div class="inner_label"><?php echo gtext("how does it work with free software?");?></div>
+ <?php } else { ?>
+ <div class="inner_label"><?php echo gtext("does it work with free software?");?></div>
+ <?php } ?>
+ <div class="inner_value"><b><?php echo gtext(translate($item['hardware'][$worksField]));?></b></div>
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("does it adopt any techniques to track users?");?></div>
+ <div class="inner_value"><b><?php echo gtext($item['hardware']['it_tracks_users']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_view_link">
+ <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/".$item['hardware']['id_hard'].'/'.encodeUrl($item['hardware']['model']).$this->viewStatus;?>"><?php echo gtext("view the other specifications");?></a>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <?php if (strcmp($recordNumber,0) !== 0) { ?>
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/cleared.php b/Application/Views/Desktop/cleared.php
new file mode 100644
index 0000000..ef1cfb3
--- /dev/null
+++ b/Application/Views/Desktop/cleared.php
@@ -0,0 +1,28 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+
+ <div class="notebooks_viewall">
+ <div class="revision_alert">
+ <?php echo gtext('This page has been permanently deleted by an administrator of the website');?>
+ </div>
+ </div>
diff --git a/Application/Views/Desktop/climb.php b/Application/Views/Desktop/climb.php
new file mode 100644
index 0000000..ffcae52
--- /dev/null
+++ b/Application/Views/Desktop/climb.php
@@ -0,0 +1,37 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div class="notebooks_viewall">
+
+ <?php echo $notice;?>
+
+ <div class="climb_form_ext_box">
+
+ <?php if (!$isDeleted) { ?>
+ <form action="<?php echo $this->currPage."/$lang/$id_rev/$token".$this->viewStatus;?>" method="POST">
+ I want to make this revision the current revision: <input type="submit" name="confirmAction" value="confirm">
+ </form>
+ <?php } ?>
+
+ </div>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/dialog.php b/Application/Views/Desktop/dialog.php
new file mode 100644
index 0000000..bbbe1ae
--- /dev/null
+++ b/Application/Views/Desktop/dialog.php
@@ -0,0 +1,102 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<script type="text/javascript">
+
+ $(function(){
+
+ $("#dialog-form").css("display","block");
+
+ $('#n_dialog').dialog({
+ autoOpen: false,
+ width: 500
+ });
+
+ // Dialog
+ $('#dialog-form').dialog({
+ autoOpen: false,
+ width: 500,
+ buttons: {
+ "Send": function() {
+
+ var d_id_hard = $(".dialod_hidden_id_hard").attr("value");
+ var d_object = encodeURIComponent($("#object").attr("value"));
+ var d_message = encodeURIComponent($("#message").attr("value"));
+ var d_id_duplicate = encodeURIComponent($("#id_duplicate").attr("value"));
+
+ $.ajax({
+ type: "POST",
+ url: "<?php echo $this->baseUrl.'/generic/del/'.$lang.'/'.$token;?>",
+ data: "id_hard="+d_id_hard+"&object="+d_object+"&message="+d_message+"&id_duplicate="+d_id_duplicate+"&insertAction=save",
+ async: false,
+ cache:false,
+ dataType: "html",
+ success: function(html){
+ $(".n_dialog_inner").text(html);
+ $('#n_dialog').dialog('open');
+ }
+ });
+
+ $(this).dialog("close");
+ },
+ "Cancel": function() {
+ $(this).dialog("close");
+ }
+ }
+ });
+
+ // Dialog Link
+ $('.ask_for_removal_class_link').click(function(){
+ $('#dialog-form').dialog('open');
+ return false;
+ });
+
+ });
+</script>
+
+
+<div id="dialog-form" title="Ask for the removal of this device">
+<!-- <p class="validateTips">Ask for removal:</p> -->
+ <form>
+ <table>
+ <tr>
+ <td><label for="object">why?</label></td>
+ <td><?php echo Html_Form::select('object','duplicated','duplication,other',null,"object");?></td>
+ </tr>
+ <tr>
+ <td><label for="message">message</label></td>
+ <td><textarea name="message" id="message">Write here your message..</textarea></td>
+ </tr>
+ <tr>
+ <td><label for="id_duplicate">duplicated model (write the id)</label></td>
+ <td><input type="text" id="id_duplicate" type="hidden" name="id_duplicate" value=""></td>
+ </tr>
+ <input class="dialod_hidden_id_hard" type="hidden" name="id_hard" value="<?php echo $id_hard;?>">
+ </table>
+ </form>
+</div>
+
+<div id="n_dialog" title="Notice:">
+ <div class="n_dialog_inner">
+
+ </div>
+</div> \ No newline at end of file
diff --git a/Application/Views/Desktop/differences.php b/Application/Views/Desktop/differences.php
new file mode 100644
index 0000000..c634d19
--- /dev/null
+++ b/Application/Views/Desktop/differences.php
@@ -0,0 +1,49 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div class="notebooks_viewall">
+
+ <?php if (!$isDeleted) { ?>
+
+ <div class="diff_color_notice">
+ <?php echo gtext("<b>Notice</b>: the text in <del>red</del> has been deleted from the previous revision, the text in <ins>green</ins> has been added in this revision and the text in <span class='gray_text_notice'>gray</span> has not been changed.");?>
+ </div>
+
+ <?php foreach ($diffArray as $label => $text) { ?>
+
+ <div class="diff_ext_box">
+
+ <div class="diff_item_label">
+ <?php echo gtext("differences in the entry");?>: <b><?php echo $label;?></b>
+ </div>
+
+ <div class="diff_item_text">
+ <?php echo in_array($label,$fieldsWithBreaks) ? nl2br($text) : $text;?>
+ </div>
+
+ </div>
+
+ <?php } ?>
+
+ <?php } ?>
+
+ </div>
diff --git a/Application/Views/Desktop/footer.php b/Application/Views/Desktop/footer.php
new file mode 100644
index 0000000..8970590
--- /dev/null
+++ b/Application/Views/Desktop/footer.php
@@ -0,0 +1,45 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="footer">
+ <div class="copyright_notice_box">
+ The <a href="<?php echo $this->baseUrl."/project/index/$lang";?>"><?php echo Website::$projectName;?></a> Project
+ </div>
+
+ <div class="footer_credits_box">
+ <a href="<?php echo $this->baseUrl."/credits/index/$lang";?>">credits</a>
+ </div>
+
+ <div class="footer_credits_box">
+ <a href="<?php echo $this->baseUrl."/contact/index/$lang";?>">contact</a>
+ </div>
+ </div> <!--fine footer-->
+ <div style="padding:5px 0px;font-size:12px;">h-node.org is a hardware database project. It runs the <a href="http://savannah.nongnu.org/projects/h-source/">h-source</a> PHP software, version SVN-387, available under the GNU General Public (GPLv3) License.</div>
+ <div style="padding:5px 0px;font-size:12px;"><a href="<?php echo $this->baseUrl;?>/static/licenses.html" rel="jslicense">JavaScript license information</a>
+ </div>
+</div> <!--fine container-->
+
+<?php
+//$sid="23552";
+//include("/var/www/h-node.org/traffica/write_logs.php");
+?>
+
+</body>
+</html>
diff --git a/Application/Views/Desktop/form.php b/Application/Views/Desktop/form.php
new file mode 100644
index 0000000..a9e23af
--- /dev/null
+++ b/Application/Views/Desktop/form.php
@@ -0,0 +1,160 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ dist_list_helper();
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <?php echo $notice;?>
+
+ <div class="notebooks_insert_form">
+ <form action="<?php echo $this->baseUrl."/".$this->controller."/".$this->action."/$lang/$token".$this->viewStatus;?>" method="POST">
+
+ <div class="edit_form">
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("model name");?>: <b>*</b><?php echo $modelNameLabel;?><div class="entry_label_small"><?php echo gtext("Write here the model name obtained by the lspci or lsusb command.");?></div></div>
+ <?php echo Html_Form::input('model',$values['model'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("possible other names of the device");?>:<br /><span class="entry_label_small"><?php echo gtext("Add here the device name as written on the device itself or on the device box. Add it only if it is different from the <i>model name</i> already inserted inside the above entry. Add the new name in such a way that there is one name per row.");?></span></div>
+ <?php echo Html_Form::textarea('other_names',$values['other_names'],'device_textarea_entry');?>
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("subtype");?> (laser, inkjet, ..):</div>
+ <?php echo Html_Form::select('subtype',$values['subtype'],Printer::$subtype,"select_entry");?>
+ </div>
+ <?php } else if (strcmp($this->controller,'hostcontrollers') === 0 ) { ?>
+ <div class="entry_label"><?php echo gtext("subtype");?> (<?php echo $subtypeHelpLabel;?>):</div>
+ <?php echo Html_Form::select('subtype',$values['subtype'],Hostcontrollers::$subtype,"select_entry");?>
+ <?php } ?>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("VendorID:ProductID code of the device");?>: <b>*</b><?php echo $vendoridProductidLabel;?></div>
+ <?php echo Html_Form::input('pci_id',$values['pci_id'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("year of commercialization");?></div>
+ <?php echo Html_Form::select('comm_year',$values['comm_year'],Hardware::getCommYears(),"select_entry");?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("interface");?> (<?php echo gtext("set not-specified if not sure");?>)</div>
+ <?php echo Html_Form::select('interface',$values['interface'],$intefaceOptions,"select_entry");?>
+ </div>
+
+ <div class="form_entry td_with_distribution_checkboxes">
+ <div class="entry_label"><?php echo gtext("GNU/Linux distribution used for the test");?>: <b>*</b></div>
+ <?php include(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder. DS . 'noscript_distributions.php');?>
+ <?php echo Html_Form::input('distribution',$values['distribution'],'input_entry input_distribution');?>
+ <?php echo Distributions::getFormHtml();?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("tested with the following kernel libre");?>:<br /><span class="entry_label_small"><?php echo gtext("Write a comma-separated list of kernel versions");?><br /><?php echo gtext("Example");?>: 2.6.35-28-generic, 2.6.38-11 </span></div>
+ <?php echo Html_Form::input('kernel',$values['kernel'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label hidden_x_explorer">
+ <?php
+ if (strcmp($this->controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0 )
+ {
+ echo gtext("compatibility with free software").":";
+ }
+ else
+ {
+ echo gtext("does it work with free software?");
+ }
+ ?>
+ </div>
+ <?php echo Html_Form::select($worksField,$values[$worksField],$worksOptions,"select_entry hidden_x_explorer");?>
+ <?php if (strcmp($this->controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0) {
+ switch ($this->controller)
+ {
+ case 'printers':
+ $fragment = 'Printers';
+ break;
+ case 'scanners':
+ $fragment = 'Scanners';
+ break;
+ }
+ ?>
+ <!--if it is a printer-->
+ <a class="open_help_window" title="compatibility help page" target="blank" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#$fragment";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a>
+ <?php } ?>
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("does it adopt any techniques to track users?");?><?php echo $tracksHelpLabel;?></div>
+ <?php echo Html_Form::select('it_tracks_users',$values['it_tracks_users'],Hardware::$trackSelect,"select_entry");?>
+ </div>
+ <?php } ?>
+
+ <div class="form_entry">
+ <div class="entry_label hidden_x_explorer"><?php echo gtext("free driver used");?> (<?php echo gtext("see the help page or leave blank if you are not sure");?>):</div>
+ <?php echo Html_Form::input('driver',$values['driver'],'input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("Description: (write here all the useful information)");?><?php echo $descriptionLabel;?></div>
+ <?php if (strcmp($this->controller,'threegcards') === 0 ) { ?>
+ <!--if it is a 3G-card-->
+ <div class="isp_notice"><?php echo gtext("Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided");?></div>
+ <?php } ?>
+
+ <?php if (isset($descriptionPreview)) { ?>
+ <div class="description_preview_title"><?php echo gtext("Description entry preview");?>:</div>
+ <div class="description_preview">
+ <?php echo decodeWikiText($descriptionPreview); ?>
+ </div>
+ <?php } ?>
+
+ <?php echo Html_Form::textarea('description',$values['description'],'textarea_entry','bb_code');?>
+ </div>
+
+ <?php echo $hiddenInput;?>
+
+ <input type="submit" name="previewAction" value="Preview">
+ <input type="submit" name="<?php echo $submitName;?>" value="Save">
+
+ <div class="mandatory_fields_notice">
+ <?php echo gtext("Fields marked with <b>*</b> are mandatory");?>
+ </div>
+
+ </div>
+
+ </form>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Desktop/header.php b/Application/Views/Desktop/header.php
new file mode 100644
index 0000000..d153840
--- /dev/null
+++ b/Application/Views/Desktop/header.php
@@ -0,0 +1,120 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+<?php
+$u = new UsersModel();
+$hw = new HardwareModel();
+$wiki = new WikiModel();
+$translations = array('insert'=>'inserted','update'=>'updated');
+$currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index';
+?>
+<head>
+
+ <title><?php echo $title;?></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <meta name="description" content="free software project with the aim of collecting information about the hardware that works with a fully free operating system" />
+ <meta name="keywords" content="hardware database, free software, GNU/Linux distribution, wiki, users freedom" />
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl?>/Public/Css/main.css">
+ <link rel="Shortcut Icon" href="<?php echo $this->baseUrl?>/Public/Img/tab_icon_2.ico" type="image/x-icon">
+
+ <!--[if IE 7]>
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl;?>/Public/Css/explorer7.css">
+ <![endif]-->
+
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/jquery/jquery-1.7.1.min.js"></script>
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/functions.js"></script>
+
+ <!--markitup-->
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/markitup/jquery.markitup.js"></script>
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/markitup/sets/bbcode/set.js"></script>
+
+ <!-- markItUp! skin -->
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl;?>/Public/Js/markitup/skins/simple/style.css" />
+ <!-- markItUp! toolbar skin -->
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl;?>/Public/Js/markitup/sets/bbcode/style.css" />
+
+ <!-- jQuery ui -->
+ <link rel="stylesheet" href="<?php echo $this->baseUrl;?>/Public/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css" rel="stylesheet" />
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js"></script>
+
+ <script type="text/javascript">
+ /*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this page.
+
+ h-source, a web software to build a community of people that want to share their hardware information.
+ Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+
+ This file is part of h-source
+
+ h-source is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ h-source 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with h-source. If not, see <http://www.gnu.org/licenses/>.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this page.
+ */
+ </script>
+
+ <script type="text/javascript">
+
+ var base_url = "<?php echo $this->baseUrl;?>";
+ var curr_lang = "<?php echo $lang;?>";
+ var csrf_token = "<?php echo $token;?>";
+
+ $(document).ready(function() {
+
+ animateTabs(curr_lang);
+
+ });
+
+ </script>
+
+</head>
+<body>
+
+
+<div id="external_header">
+ <div id="header">
+ <img style="float:left;" src="<?php echo $this->baseUrl;?>/Public/Img/title.png">
+ <a href="http://www.fsf.org"><img style="float:right;" src="<?php echo $this->baseUrl;?>/Public/Img/fsf_logo.png"></a>
+ </div>
+</div>
+
+<div id="top_menu_external">
+ <div id="top_menu">
+ <ul>
+ <li<?php echo $tm['home']; ?>><a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a></li><li<?php echo $tm['hardware']; ?>><a href="<?php echo $this->baseUrl."/hardware/catalogue/$lang";?>"><?php echo gtext("Hardware");?></a></li><li<?php echo $tm['issues']; ?>><a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>"><?php echo gtext("Issues");?></a></li><li<?php echo $tm['search']; ?>><a href="<?php echo $this->baseUrl."/search/form/$lang";?>"><?php echo gtext("Search");?></a></li><li<?php echo $tm['download']; ?>><a href="<?php echo $this->baseUrl."/download/index/$lang";?>"><?php echo gtext("Download");?></a></li><?php echo $topMenuHelpLink;?><li<?php echo $tm['wiki']; ?>><a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a></li><?php echo $topMenuFaqLink;?>
+ </ul>
+ </div>
+</div>
+
+<div id="container">
diff --git a/Application/Views/Desktop/history.php b/Application/Views/Desktop/history.php
new file mode 100644
index 0000000..bacf28a
--- /dev/null
+++ b/Application/Views/Desktop/history.php
@@ -0,0 +1,63 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (!$isDeleted) { ?>
+
+ <div class="notebooks_viewall">
+
+ <ul class="page_history">
+
+ <?php if ($this->viewArgs['history_page'] === 1) { ?>
+ <?php foreach ($rev1 as $rev) { ?>
+ <li class="page_history_current_item"><b><?php echo gtext("Current revision");?>:</b> <?php echo smartDate($rev['hardware']['update_date']);?> <?php echo gtext('by');?> <?php echo $u->getLinkToUserFromId($rev['hardware']['updated_by']);?> (<a href="<?php echo $this->baseUrl."/".$this->controller."/differences/$lang/$id/0".$this->viewStatus;?>">diff</a>)</li>
+ <?php } ?>
+ <?php } ?>
+
+ <?php foreach ($rev2 as $rev) { ?>
+ <li class="page_history_item">
+
+ <a href="<?php echo $this->baseUrl."/".$this->controller."/revision/$lang/".$rev['revisions']['id_rev'].$this->viewStatus;?>"><?php echo smartDate($rev['revisions']['update_date']);?></a> <?php echo gtext('by');?> <?php echo $u->getLinkToUserFromId($rev['revisions']['updated_by']);?>
+
+ <?php if (strcmp($rev['revisions']['id_rev'],$firstRev) !== 0) {?>
+ (<a href="<?php echo $this->baseUrl."/".$this->controller."/differences/$lang/$id/".$rev['revisions']['id_rev'].$this->viewStatus;?>">diff</a>)
+ <?php } ?>
+
+ <?php if ($islogged === 'yes') { ?>
+ (<a href="<?php echo $this->baseUrl.'/'.$this->controller.'/climb/'.$lang.'/'.$rev['revisions']['id_rev'].'/'.$token.$this->viewStatus;?>"><?php echo gtext('Make current');?></a>)
+ <?php } ?>
+
+ </li>
+ <?php } ?>
+
+ </ul>
+
+ </div>
+
+ <div class="history_page_list">
+ <?php echo gtext("page list");?>: <?php echo $pageList;?>
+ </div>
+
+ <?php } else { ?>
+
+ <div style="clear:both;"></div>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/if_page_deleted.php b/Application/Views/Desktop/if_page_deleted.php
new file mode 100644
index 0000000..932d0dd
--- /dev/null
+++ b/Application/Views/Desktop/if_page_deleted.php
@@ -0,0 +1,60 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if ($isDeleted and $isApproved) { ?>
+
+ <div class="notebooks_viewall">
+ <div class="revision_alert">
+ <div>
+ This page has been deleted as requested by:
+ <?php foreach ($deletionUsers as $user) { ?>
+ <?php echo $u->getLinkToUserFromId($user);?>
+ <?php } ?>
+ </div>
+ </div>
+ <div class="deletion_motivations_title">
+ With the following motivations:
+ </div>
+ <div class="deletion_motivations_external">
+ <?php foreach ($deletion as $row) { ?>
+ <div class="deletion_motivations_iternal">
+ <div class="deletion_motivations_iternal_title">
+ motivation of <?php echo $u->getLinkToUserFromId($row['deletion']['created_by']);?>: <?php echo getMotivation($row,$this->controller);?>
+ </div>
+ <div class="deletion_motivations_iternal_message">
+ message: <i><?php echo $row['deletion']['message'];?></i>
+ </div>
+ </div>
+ <?php } ?>
+ </div>
+ </div>
+
+ <?php } else if ($isDeleted and !$isApproved) { ?>
+
+ <div class="notebooks_viewall">
+ <div class="revision_alert">
+ <?php echo gtext('Thanks for your contribution!'); ?><br />
+ <?php echo gtext('The device page has to be approved by an administrator of the website'); ?>
+ </div>
+ </div>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/license_notice.php b/Application/Views/Desktop/license_notice.php
new file mode 100644
index 0000000..6aec78c
--- /dev/null
+++ b/Application/Views/Desktop/license_notice.php
@@ -0,0 +1,32 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div class="top_licence_notice">
+ <div><b><?php echo gtext("License information");?>:</b></div>
+ <?php echo License::getSubmissionNotice();?>
+ </div>
+ <?php if ($islogged === 'no') { ?>
+ <div class="not_logged_license">
+ <?php echo gtext("You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account.");?>
+ </div>
+ <?php } ?>
+ <div class="box_module_how_to_compile"><?php echo $howToCompileLabel;?></div> \ No newline at end of file
diff --git a/Application/Views/Desktop/moderator_dialog.php b/Application/Views/Desktop/moderator_dialog.php
new file mode 100644
index 0000000..3b76c4b
--- /dev/null
+++ b/Application/Views/Desktop/moderator_dialog.php
@@ -0,0 +1,69 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<div id="delete_dialog" title="Manage this item">
+ <form>
+ <p>Write below your motivation</p>
+ <textarea name="md_message" id="md_message"></textarea>
+ </form>
+</div>
+
+<div id="notice_dialog" title="Notice:">
+ <div class="notice_dialog_inner">
+
+ </div>
+</div>
+
+<script>
+
+ $(document).ready(function() {
+
+ <?php echo $md_javascript;?>
+
+ $(".hidden_message_view_page").click(function(){
+ $(".display_none").css("display","block");
+ return false;
+ });
+
+ $(".hidden_message_view_details").click(function(){
+
+ var md_id_ext = $(this).attr("id");
+ var md_type_ext = $(this).parent().find(".md_type").text();
+ var that = $(this);
+
+ $.ajax({
+ url: base_url + "/history/viewall/" + curr_lang + "/" + md_type_ext + "/" + md_id_ext,
+ async: false,
+ cache: false,
+ dataType: "html",
+ success: function(html){
+ that.parent().find(".moderation_details_box").empty();
+ that.parent().find(".moderation_details_box").append(html);
+ }
+ });
+
+ that.parent().find(".details_of_hidden_message").show();
+ return false;
+ });
+ });
+
+</script> \ No newline at end of file
diff --git a/Application/Views/Desktop/noscript_distributions.php b/Application/Views/Desktop/noscript_distributions.php
new file mode 100644
index 0000000..11ae5a6
--- /dev/null
+++ b/Application/Views/Desktop/noscript_distributions.php
@@ -0,0 +1,33 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <noscript>
+ <div class="noscript_dist_alert">
+ <span>Allowed distributions:</span>
+ <div>
+ <?php echo Distributions::getList();?>
+ </div>
+ <div>
+ <span><b>Example</b>: blag_90001,gnewsense_3_0,trisquel_4_0</span>
+ </div>
+ </div>
+ </noscript> \ No newline at end of file
diff --git a/Application/Views/Desktop/not_found.php b/Application/Views/Desktop/not_found.php
new file mode 100644
index 0000000..cd435de
--- /dev/null
+++ b/Application/Views/Desktop/not_found.php
@@ -0,0 +1,34 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang";?>">Wiki</a> &raquo; <?php echo gtext('Page not-found'); ?>
+ </div>
+
+ <div class="wiki_external_box">
+ <div>
+ <?php echo gtext('the wiki page has not been found');?>. <a href="<?php echo $this->baseUrl."/wiki/insert/$lang";?>"><?php echo gtext('Would you like to insert it?');?></a>
+ </div>
+ </div>
+
diff --git a/Application/Views/Desktop/page.php b/Application/Views/Desktop/page.php
new file mode 100644
index 0000000..8da5a35
--- /dev/null
+++ b/Application/Views/Desktop/page.php
@@ -0,0 +1,141 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <?php
+ $tableName = (strcmp($this->action,'view') === 0) ? 'hardware' : 'revisions';
+ $displayClass = ($isDeleted) ? 'display_none' : null;
+ ?>
+
+ <?php foreach ($table as $item) { ?>
+ <div class="notebooks_viewall <?php echo $displayClass;?>">
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($updated_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>"><?php echo gtext("Current revision");?></a>.
+ </div>
+ <?php } ?>
+
+ <?php if ( strcmp($item[$tableName]['it_tracks_users'],'yes') === 0 ) { ?>
+ <?php echo $tracksHelpTop;?>
+ <?php } ?>
+
+ <div class="notebook_model">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item[$tableName]['type']);?>"> <span class="span_model_name"><?php echo gtext("model");?>: <b><?php echo $item[$tableName]['model'];?></b><span class="model_id">(<?php echo gtext("model id");?>: <?php echo $id_hard;?>)</span></span>
+ <?php if (strcmp($islogged,'yes') === 0 and strcmp($this->action,'view') === 0) { ?>
+ <span class="ask_for_removal_class"><a class="ask_for_removal_class_link" href="<?php echo $this->baseUrl;?>">ask for removal</a></span>
+ <?php } ?>
+ </div>
+
+ <?php if ( strcmp($item[$tableName]['other_names'],'') !== 0 ) { ?>
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("possible other names of the device");?>:</div>
+ <div class="inner_value"><?php echo nl2br($item[$tableName]['other_names']);?></div>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("vendor");?>:</div>
+ <div class="inner_value"><b><?php echo betterVendor($item[$tableName]['vendor']);?></b></div>
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?>
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("subtype");?> (<?php echo $subtypeHelpLabel;?>):</div>
+ <div class="inner_value"><b><?php echo translate_and_gtext($item[$tableName]['subtype']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("VendorID:ProductID code of the device");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['pci_id'];?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("year of commercialization");?>:</div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['comm_year']);?></b></div>
+ </div>
+
+ <div class="notebook_vendor">
+ <div class="inner_label"><?php echo gtext("interface");?>:</div>
+ <div class="inner_value"><b><?php echo gtext(translate($item[$tableName]['interface']));?></b></div>
+ </div>
+
+ <div class="model_tested_on">
+ <div class="inner_label"><?php echo gtext("tested on");?>:</div>
+ <div class="inner_value"><b><?php echo Distributions::getName($item[$tableName]['distribution']);?></b></div>
+ </div>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("tested with the following kernel libre");?>:</div>
+ <div class="inner_value"><b><?php echo implode("<br />",explode(',',$item[$tableName]['kernel']));?></b></div>
+ </div>
+
+ <div class="notebook_kernel">
+
+ <?php if (strcmp($this->controller,'videocards') === 0 ) { ?>
+
+ <div class="inner_label"><?php echo gtext("how does it work with free software?");?></div>
+ <div class="inner_value"><b><?php echo gtext(translate($item[$tableName][$worksField]));?></b></div>
+
+ <?php } else if (strcmp($this->controller,'printers') === 0 ) { ?>
+
+ <div class="inner_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <div class="inner_value"><b><?php echo gtext(translate($item[$tableName]['compatibility']));?></b> <a class="open_help_window" target="blank" title="compatibility help page" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#Printers";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a></div>
+
+ <?php } else if (strcmp($this->controller,'scanners') === 0 ) { ?>
+
+ <div class="inner_label"><?php echo gtext("compatibility with free software");?>:</div>
+ <div class="inner_value"><b><?php echo gtext(translate($item[$tableName]['compatibility']));?></b> <a class="open_help_window" target="blank" title="compatibility help page" href="<?php echo $this->baseUrl."/wiki/page/$lang/Compatibility-classes#Scanners";?>"><img class="top_left_images_help" src="<?php echo $this->baseUrl;?>/Public/Img/Acun/help_hint.png"></a></div>
+
+ <?php } else { ?>
+
+ <div class="inner_label"><?php echo gtext("does it work with free software?");?></div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName][$worksField]);?></b></div>
+
+ <?php } ?>
+
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("does it adopt any techniques to track users?");?><div class="box_module_label"><?php echo $tracksHelpLabel;?></div></div>
+ <div class="inner_value"><b><?php echo gtext($item[$tableName]['it_tracks_users']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_kernel">
+ <div class="inner_label"><?php echo gtext("free driver used");?>:</div>
+ <div class="inner_value"><b><?php echo $item[$tableName]['driver'];?></b></div>
+ </div>
+
+ <div class="notebook_description">
+ <div class="notebook_description_label"><?php echo gtext("Description");?>:</div>
+ <div class="notebook_description_value"><?php echo decodeWikiText($item[$tableName]['description']);?></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/right.php b/Application/Views/Desktop/right.php
new file mode 100644
index 0000000..0e6c22a
--- /dev/null
+++ b/Application/Views/Desktop/right.php
@@ -0,0 +1,165 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="right">
+
+ <?php if (strcmp($this->action,'update') !== 0 and strcmp($this->action,'pciid') !== 0 and strcmp($this->action,'lspci') !== 0) { ?>
+ <div class="language_links_box">
+ <?php echo $language_links;?>
+ </div>
+ <?php } ?>
+
+ <div class="version_div">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang?version=mobile";?>"><img src="<?php echo $this->baseUrl."/Public/Img/mobile.png";?>"></a>
+ </div>
+
+ <div class="login_table_box">
+
+ <?php if ($islogged === 'yes') { ?>
+ <div class="login_box_logged">
+ <div class="who_you_are_and_logout">
+ <?php echo gtext("Hello");?> <b><?php echo $username; ?></b> (<a href="<?php echo $this->baseUrl."/users/logout/$lang?redirect=".$currPos.$queryString;?>">logout</a>)
+ </div>
+ <div class="your_panel_link">
+ <?php echo gtext("Your");?> <a href="<?php echo $this->baseUrl."/my/home/$lang";?>"><?php echo gtext("control panel");?></a>
+ </div>
+ </div>
+ <?php } else { ?>
+
+ <div class="who_you_are_and_logout">
+ <?php echo gtext("Login form:");?>
+ </div>
+ <!--login form-->
+ <form action="<?php echo $this->baseUrl."/users/login/$lang?redirect=".$currPos.$queryString;?>" method="POST">
+
+ <div class="login_right_box">
+ <div class="login_right_item">
+ <div class="login_right_label">
+ <?php echo gtext("username");?>
+ </div>
+ <div class="login_right_form">
+ <input class="login_input" type="text" name="username" value="">
+ </div>
+ </div>
+ <div class="login_right_item">
+ <div class="login_right_label">
+ <?php echo gtext("password");?>
+ </div>
+ <div class="login_right_form">
+ <input class="login_input" type="password" name="password" value="">
+ </div>
+ </div>
+ <div>
+ <input type="submit" name="login" value="<?php echo gtext("login");?>">
+ </div>
+ </div>
+ </form>
+
+ <div class="manage_account_link_box">
+ <a href="<?php echo $this->baseUrl."/users/add/$lang";?>"><?php echo gtext("create new account");?></a>
+ </div>
+
+ <div class="manage_account_link_box">
+ <a href="<?php echo $this->baseUrl."/users/forgot/$lang";?>"><?php echo gtext("request new password");?></a>
+ </div>
+
+ <?php } ?>
+
+ </div>
+
+ <?php echo $discoverYourHardwareLink;?>
+
+ <div class="download_database">
+ <a href="<?php echo $this->baseUrl."/download/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/download.png"></a>
+ </div>
+
+ <?php if ( strcmp($this->controller,'wiki') === 0 ) { ?>
+ <div class="wiki_control_box">
+ <div class="last_modifications_title">
+ <?php echo gtext('special pages');?>
+ </div>
+ <ul>
+ <li><a href="<?php echo $this->baseUrl."/wiki/pages/$lang";?>"><?php echo gtext('list of pages'); ?></a></li>
+ <?php if ($isadmin) { ?>
+ <li><a href="<?php echo $this->baseUrl."/wiki/deleted/$lang";?>"><?php echo gtext('list of deleted pages'); ?></a></li>
+ <li><a href="<?php echo $this->baseUrl."/wiki/blocked/$lang";?>"><?php echo gtext('list of blocked pages'); ?></a></li>
+ <?php } ?>
+ <li><a href="<?php echo $this->baseUrl."/wiki/modifications/$lang";?>"><?php echo gtext('last modifications'); ?></a></li>
+ </ul>
+ </div>
+ <?php } ?>
+
+ <?php if ( strcmp($this->controller,'wiki') !== 0 ) { ?>
+ <div class="last_modifications">
+ <div class="last_modifications_title">
+ <?php echo gtext('last modifications');?>
+ </div>
+ <ul>
+ <?php foreach ($lastModif as $row) { ?>
+ <li><a class="last_modifications_model" href="<?php echo Go::toHardwarePage($row['history']['id']);?>"><?php echo $hw->getTheModelName($row['history']['id']);?></a> <?php echo gtext('by');?> <?php echo $u->getLinkToUserFromId($row['history']['created_by'])?></li>
+ <?php } ?>
+ </ul>
+ <div class="last_modifications_all">
+ <span>
+ <a href="<?php echo $this->baseUrl."/special/modifications/$lang";?>"><?php echo gtext('watch all modifications');?></a>
+ </span>
+ </div>
+ </div>
+ <?php } ?>
+
+ <div class="statistics_ext_box">
+ <div class="statistics_int_title">
+ <?php echo gtext("website statistics");?>:
+ </div>
+
+ <div class="statistics_hard_title">
+ <?php echo gtext("hardware in the database");?>:
+ </div>
+
+ <table width="100%">
+ <?php $total_number=0;foreach ($stat as $type => $number) { $total_number+=$number; $type=displayName($type);?>
+ <tr>
+ <td><?php echo gtext($type);?></td>
+ <td align="right"><?php echo "<b>".$number."</b>";?></td>
+ </tr>
+ <?php } ?>
+ <tr>
+ <td><?php echo gtext("<b>TOTAL</b>");?></td>
+ <td align="right"><?php echo "<b>".$total_number."</b>";?></td>
+ </tr>
+ </table>
+
+ <div class="statistics_hard_title">
+ <?php echo gtext("users logged");?>: <span class="user_logged"><?php echo $numbLogged;?></span>
+ </div>
+ </div>
+
+
+ <div class="rss_right_box">
+ <a href="<?php echo $this->baseUrl."/rss/modifications/$lang";?>"><img src="<?php echo $this->baseUrl."/Public/Img/rss.png";?>"></a>
+ </div>
+
+ <div class="right_box_ext_box">
+ <?php echo $htmlRightBox;?>
+ </div>
+
+ </div>
diff --git a/Application/Views/Desktop/suggest_dialog.php b/Application/Views/Desktop/suggest_dialog.php
new file mode 100644
index 0000000..3e9ad14
--- /dev/null
+++ b/Application/Views/Desktop/suggest_dialog.php
@@ -0,0 +1,43 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+<script type="text/javascript">
+
+ $(function(){
+
+ $("#suggest_dialog").css("display","block");
+
+ // Dialog
+ $('#suggest_dialog').dialog({
+ autoOpen: false,
+ width: 500,
+ });
+
+ $('#suggest_dialog').dialog('open');
+
+ });
+</script>
+
+<div id="suggest_dialog" title="Insert new hardware">
+ <p><?php echo gtext("Thanks for helping the h-node project and the free software movement!");?></p>
+ <p><?php echo gtext("You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!");?></p>
+</div> \ No newline at end of file
diff --git a/Application/Views/Desktop/talk.php b/Application/Views/Desktop/talk.php
new file mode 100644
index 0000000..ac02490
--- /dev/null
+++ b/Application/Views/Desktop/talk.php
@@ -0,0 +1,163 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <script>
+
+ $(document).ready(function() {
+
+ $("#bb_code").markItUp(mySettings);
+
+ });
+
+ </script>
+
+ <?php if (!$isDeleted) { ?>
+
+ <div class="notebooks_viewall">
+
+ <?php foreach ($table as $message) { ?>
+
+ <?php if (strcmp($message['talk']['deleted'],'no') === 0) { ?>
+
+ <a name="talk-<?php echo $message['talk']['id_talk'];?>"></a>
+ <div class="talk_message_item">
+
+ <div class="talk_message_item_title_date">
+ <?php if ($ismoderator) { ?>
+ <a id="<?php echo $message['talk']['id_talk'];?>" class="hide_talk hide_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png">hide</a>
+ <?php } ?>
+
+ <div class="talk_message_item_title">
+ <?php echo $message['talk']['title'];?>
+ </div>
+
+ <div class="talk_message_item_date">
+ <?php echo gtext("by");?> <?php echo getLinkToUser($u->getUser($message['talk']['created_by']));?>, <?php echo smartDate($message['talk']['creation_date']);?>
+ </div>
+ </div>
+
+ <div class="talk_message_item_content">
+ <?php echo decodeWikiText($message['talk']['message']);?>
+ </div>
+
+ <?php if ($ismoderator) { ?>
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">talk</div>
+ <a id="<?php echo $message['talk']['id_talk'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+ <?php } ?>
+
+ </div>
+
+ <?php } else { ?>
+
+ <?php if ($ismoderator) { ?>
+ <a name="talk-<?php echo $message['talk']['id_talk'];?>"></a>
+ <div class="talk_message_item_hidden">
+ this message has been deleted
+
+ <a id="<?php echo $message['talk']['id_talk'];?>" class="show_talk hide_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png">make visible</a>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">talk</div>
+
+ <a id="<?php echo $message['talk']['id_talk'];?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+
+ <div class="details_of_hidden_message">
+ <div class="details_of_hidden_message_inner">
+ <div class="talk_message_item_date">
+ submitted by <?php echo getLinkToUser($u->getUser($message['talk']['created_by']));?>, <?php echo smartDate($message['talk']['creation_date']);?>
+ </div>
+ <div class="message_view_description_hidden">
+ <?php echo decodeWikiText($message['talk']['message']);?>
+ </div>
+ </div>
+ <div class="moderation_details_box"></div>
+ </div>
+ </div>
+
+
+ </div>
+ <?php } ?>
+
+ <?php } ?>
+
+ <?php } ?>
+ </div>
+
+ <?php if ($islogged === 'yes') { ?>
+
+ <div class="talk_form_external_box">
+ <div class="talk_login_notice">
+ <a name="form"><?php echo gtext("Add a message");?></a>
+ </div>
+
+ <?php echo $notice;?>
+
+ <!--preiview-->
+ <?php if (isset($preview_message)) { ?>
+ <div class="message_preview_notice">
+ <?php echo gtext("preview of the message");?>:
+ </div>
+ <div class="issues_message_item_preview">
+ <div class="message_view_description">
+ <?php echo decodeWikiText($preview_message);?>
+ </div>
+ </div>
+ <?php } ?>
+
+ <div class="notebooks_insert_form">
+ <form action="<?php echo $this->baseUrl."/".$this->controller."/talk/$lang/$id_hard/$token".$this->viewStatus;?>#form" method="POST">
+
+ <div class="edit_form">
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("TITLE");?>:</div>
+ <?php echo Html_Form::input('title',$values['title'],'talk_input_entry');?>
+ </div>
+
+ <div class="form_entry">
+ <div class="entry_label"><?php echo gtext("MESSAGE");?>:</div>
+ <?php echo Html_Form::textarea('message',$values['message'],'talk_textarea_entry','bb_code');?>
+ </div>
+
+ <input type="submit" name="previewAction" value="<?php echo gtext("Preview");?>">
+ <input type="submit" name="insertAction" value="<?php echo gtext("Save");?>">
+
+ </div>
+
+ </form>
+ </div>
+ </div>
+
+ <?php } else { ?>
+
+ <div class="talk_login_notice">
+ <a name="form"><?php echo gtext("You have to");?> <a href="<?php echo $this->baseUrl."/users/login/$lang?redirect=".$currPos.$queryString;?>">login</a> <?php echo gtext("in order to add a message");?></a>
+ </div>
+
+ <?php } ?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/top_left.php b/Application/Views/Desktop/top_left.php
new file mode 100644
index 0000000..33ef4d2
--- /dev/null
+++ b/Application/Views/Desktop/top_left.php
@@ -0,0 +1,190 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/hardware/catalogue/$lang";?>">Hardware</a> &raquo; <?php echo $tree;?>
+ </div>
+
+ <?php if (strcmp($this->action,'view') === 0) { ?>
+
+ <!--delete the page-->
+ <?php if ($isadmin) { ?>
+ <div class="moderator_box_deleted clear_right">
+ <?php if ($isDeleted) { ?>
+
+ <?php if ($isApproved) { ?>
+
+ <?php echo gtext('This device page has been hidden'); ?>
+
+ <a id="<?php echo $id_hard;?>" class="deviceshow_device block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png"><?php echo gtext('restore the device page'); ?></a>
+
+ <?php } else { ?>
+
+ <?php echo gtext("This device page has not been approved yet");?>
+
+ <a id="<?php echo $id_hard;?>" class="deviceapprove_device_app block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png"><?php echo gtext('approve the device page'); ?></a>
+
+ <?php } ?>
+
+ <?php } else { ?>
+
+ <a id="<?php echo $id_hard;?>" class="devicehide_device block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png"><?php echo gtext('hide the device page'); ?></a>
+
+ <?php } ?>
+
+ <a id="<?php echo $id_hard;?>" class="deviceclear_device_cl block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/clear.png"><?php echo gtext('permanently delete the device page'); ?></a>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">device</div>
+ <?php if ($isDeleted) { ?>
+ <a class="hidden_message_view_page" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><?php echo gtext("see the page");?></a> |
+ <?php } ?>
+ <a id="<?php echo $id_hard;?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="details_of_hidden_message">
+ <div class="moderation_details_box"></div>
+ </div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <div class="notebook_view_title">
+ <?php echo singular($this->controller);?> <b><?php echo $ne_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <div class="view_page_back_button">
+ <a title="Back to the list of <?php echo plural($this->controller);?>" href="<?php echo $this->baseUrl."/".$this->controller."/catalogue/$lang".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <div class="view_page_history_button">
+ <a title="talk page" href="<?php echo $this->baseUrl."/".$this->controller."/talk/$lang/$id_hard/$token".$this->viewStatus;?>"><img class="top_left_note_image" src="<?php echo $this->baseUrl;?>/Public/Img/talk-60.png"></a>
+ </div>
+
+ <div class="view_page_history_button">
+ <a title="history page" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/$id_hard".$this->viewStatus;?>"><img class="top_left_note_image" src="<?php echo $this->baseUrl;?>/Public/Img/history-60.png"></a>
+ </div>
+
+ <div class="view_page_update_button">
+ <form action="<?php echo $this->baseUrl."/".$this->controller."/update/$lang/$token".$this->viewStatus;?>" method="POST">
+ <input title="edit page" class="update_submit_class" type="image" src="<?php echo $this->baseUrl;?>/Public/Img/edit-60.png" value="xedit">
+ <input type="hidden" name="id_hard" value="<?php echo $id_hard;?>">
+ </form>
+ </div>
+ <?php } ?>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <div class="talk_numb_ext">
+ <a href="<?php echo $this->baseUrl."/".$this->controller."/talk/$lang/$id_hard/$token".$this->viewStatus;?>"><?php echo gtext("talk messages");?>: <?php echo $talk_number;?></a>
+ </div>
+ <?php } ?>
+
+ <?php } else if (strcmp($this->action,'catalogue') === 0) { ?>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("List of");?> <b><?php echo plural($this->controller);?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Insert a new <?php echo singular($this->controller);?>" href="<?php echo $this->baseUrl."/".$this->controller."/insert/$lang/$token".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/new-60.png"></a>
+ </div>
+
+ <?php echo $topNotice;?>
+
+ <?php } else if (strcmp($this->action,'history') === 0) { ?>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("History");?> - <?php echo singular($this->controller).' <b>'.$ne_name.'</b>';?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the specifications of the <?php echo singular($this->controller).' '.$name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/$id/$name".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if (strcmp($this->action,'differences') === 0) { ?>
+
+ <?php if ($showDiff === true) { ?>
+ <div class="notebook_view_title">
+ <?php echo gtext("Differences between the revision of");?> <b><?php echo smartDate($update_new);?></b>, <?php echo gtext("created by");?> <b><?php echo getLinkToUser($u->getUser($updated_by));?></b>, <?php echo gtext("and the revision of");?> <b><?php echo smartDate($update_old);?></b>
+ </div>
+ <?php } ?>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the <?php echo singular($this->controller);?> <?php echo $name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/$id_hard".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if (strcmp($this->action,'climb') === 0) { ?>
+
+ <div class="notebook_view_title">
+ Make current this revision of the <?php echo singular($this->controller).' <b>'.$ne_name.'</b>';?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the <?php echo singular($this->controller);?> <?php echo $name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/$id_hard".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if (strcmp($this->action,'revision') === 0) { ?>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Revision");?> - <?php echo singular($this->controller).' <b>'.$ne_name.'</b>';?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the <?php echo singular($this->controller);?> <?php echo $name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/$id_hard".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if (strcmp($this->action,'insert') === 0) { ?>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Insert");?> - <?php echo singular($this->controller);?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the list of <?php echo plural($this->controller);?>" href="<?php echo $this->baseUrl."/".$this->controller."/catalogue/$lang".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if (strcmp($this->action,'update') === 0) { ?>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Edit");?> - <?php echo singular($this->controller).' <b>'.$ne_name.'</b>';?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the <?php echo singular($this->controller);?> specifications" href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/".$id_hard."/$name".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } else if (strcmp($this->action,'talk') === 0) { ?>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Talk page");?> - <?php echo singular($this->controller).' <b>'.$ne_name.'</b>';?>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the <?php echo singular($this->controller);?> specifications" href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/".$id_hard."/$name".$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Desktop/wiki_page.php b/Application/Views/Desktop/wiki_page.php
new file mode 100644
index 0000000..48f7b96
--- /dev/null
+++ b/Application/Views/Desktop/wiki_page.php
@@ -0,0 +1,153 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="left">
+
+ <?php
+ $tableName = strcmp($this->action,'page') === 0 ? 'wiki' : 'wiki_revisions';
+ $displayClass = ($isDeleted) ? 'display_none' : null;
+ ?>
+
+ <?php if ( strcmp($this->action,'page') === 0 ) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/wiki/page/$lang/Main-Page";?>">Wiki</a> &raquo; <?php echo $tree_name;?>
+ </div>
+
+ <!--block the page-->
+ <?php if ($isadmin) { ?>
+ <div class="moderator_box_deleted">
+ <?php if ($isBlocked) { ?>
+ <?php echo gtext('This wiki page has been blocked'); ?>
+
+ <a id="<?php echo $id_wiki;?>" class="pageunblock_page block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/unlock.png"><?php echo gtext('unblock the wiki page'); ?></a>
+
+ <?php } else { ?>
+
+ <a id="<?php echo $id_wiki;?>" class="pageblock_page block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/lock.png"><?php echo gtext('block the wiki page'); ?></a>
+
+ <?php } ?>
+
+ <?php if ($isDeleted) { ?>
+ <div class="wiki_hidden_notice"><?php echo gtext('This wiki page has been deleted'); ?></div>
+
+ <a id="<?php echo $id_wiki;?>" class="pageshow_page_del block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_ok.png"><?php echo gtext('restore the wiki page'); ?></a>
+
+ <?php } else { ?>
+
+ <a id="<?php echo $id_wiki;?>" class="pagehide_page_del block_general" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><img src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/button_cancel.png"><?php echo gtext('delete the wiki page'); ?></a>
+
+ <?php } ?>
+
+ <!--view details-->
+ <div class="show_hidden_box_ext">
+ <div class="md_type">page</div>
+ <?php if ($isDeleted) { ?>
+ <a class="hidden_message_view_page" href="<?php echo $this->baseUrl."/home/index/$lang";?>"><?php echo gtext("see the page");?></a> |
+ <?php } ?>
+ <a id="<?php echo $id_wiki;?>" class="hidden_message_view_details" href="<?php echo $this->baseUrl."/home/index/$lang";?>">view details</a>
+ <div class="moderation_details_box"></div>
+ </div>
+
+ </div>
+ <?php } ?>
+
+ <div class="notebook_insert_link">
+ <div class="view_page_back_button">
+ <a title="Insert a new wiki page" href="<?php echo $this->baseUrl."/wiki/insert/$lang";?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/new-60.png"></a>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <div class="view_page_history_button">
+ <a title="talk page" href="<?php echo $this->baseUrl."/wiki/talk/$lang/$id_wiki";?>"><img class="top_left_note_image" src="<?php echo $this->baseUrl;?>/Public/Img/talk-60.png"></a>
+ </div>
+
+ <div class="view_page_history_button">
+ <a title="history page" href="<?php echo $this->baseUrl."/wiki/history/$lang/$id_wiki";?>"><img class="top_left_note_image" src="<?php echo $this->baseUrl;?>/Public/Img/history-60.png"></a>
+ </div>
+ <?php } ?>
+
+ <?php if (!$isDeleted and !$isBlocked) { ?>
+ <div class="view_page_update_button">
+ <form action="<?php echo $this->baseUrl."/wiki/update/$lang";?>" method="POST">
+ <input title="edit page" class="update_submit_class" type="image" src="<?php echo $this->baseUrl;?>/Public/Img/edit-60.png" value="xedit">
+ <input type="hidden" name="id_wiki" value="<?php echo $id_wiki;?>">
+ </form>
+ </div>
+ <?php } ?>
+ </div>
+
+ <?php if (!$isDeleted) { ?>
+ <div class="talk_numb_ext_wiki">
+ <a href="<?php echo $this->baseUrl."/wiki/talk/$lang/$id_wiki";?>"><?php echo gtext("talk messages");?>: <?php echo $talk_number;?></a>
+ </div>
+ <?php } ?>
+
+ <?php } else if ( strcmp($this->action,'revision') === 0 ) { ?>
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <?php echo $tree; ?>
+ </div>
+
+ <div class="notebook_view_title">
+ <?php echo gtext("Revision of the wiki page");?> <b><?php echo $tree_name;?></b>
+ </div>
+
+ <div class="notebook_insert_link">
+ <a title="Back to the history of the page <?php echo $tree_name;?>" href="<?php echo $this->baseUrl."/".$this->controller."/history/$lang/".$id_wiki.$this->viewStatus;?>"><img class="top_left_images" src="<?php echo $this->baseUrl;?>/Public/Img/back-60.png"></a>
+ </div>
+
+ <?php } ?>
+
+ <div class="wiki_external_box <?php echo $displayClass;?>">
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($created_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $wiki->toWikiPage($id_wiki);?>"><?php echo gtext("Current revision");?></a></a>.
+ </div>
+ <?php } ?>
+
+ <?php foreach ($table as $page) { ?>
+ <div class="wiki_page_title">
+ <?php echo $page[$tableName]['title']?>
+ <?php if ( strcmp($this->action,'page') === 0 ) { ?>
+ <?php if ($isBlocked) { ?>
+ <span class="blocked_notice"><?php echo gtext('This wiki page has been blocked'); ?></span>
+ <?php } ?>
+ <?php } ?>
+ </div>
+ <div class="wiki_page_content">
+ <?php echo decodeWikiText($page[$tableName]['page']);?>
+ </div>
+ <?php } ?>
+
+ <?php } ?>
+
+ </div>
+
+ <?php if ($isDeleted) { ?>
+ <div class="revision_alert">
+ <?php echo gtext('This wiki page has been deleted'); ?>
+ </div>
+ <?php } ?>
diff --git a/Application/Views/Desktop/xml_response.php b/Application/Views/Desktop/xml_response.php
new file mode 100644
index 0000000..2c51b88
--- /dev/null
+++ b/Application/Views/Desktop/xml_response.php
@@ -0,0 +1,28 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<?php echo "<?xml version='1.0' encoding='UTF-8'?>\n";?>
+<user_info>
+ <status><?php echo $submission_response;?></status>
+ <notice>
+ <![CDATA[<?php echo strip_tags($notice); ?>]]>
+ </notice>
+</user_info>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
diff --git a/Application/Views/Mobile/Contact/index.php b/Application/Views/Mobile/Contact/index.php
new file mode 100644
index 0000000..20faef1
--- /dev/null
+++ b/Application/Views/Mobile/Contact/index.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ You can suggest to implement new features or add new types of hardware in the <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">issues</a> page
+ </div>
+
+ <div class="contact_div">
+ Discussions about <b><?php echo Website::$generalName;?></b> also take place on the <a href="https://lists.nongnu.org/mailman/listinfo/h-source-users">h-source-users mailing list</a> and <a href="irc://libera.chat/h-node">#h-node libera.chat IRC channel</a>.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Contact/index_de.php b/Application/Views/Mobile/Contact/index_de.php
new file mode 100644
index 0000000..cb273af
--- /dev/null
+++ b/Application/Views/Mobile/Contact/index_de.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Sie können neu zu implementierende Funktionen vorschlagen oder neue Hardware-Typen in der Seite <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">Web-Log</a> hinzufügen
+ </div>
+
+ <div class="contact_div">
+ Wenn Sie das <b>h-node-Team</b> direkt kontaktieren möchten: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Contact/index_es.php b/Application/Views/Mobile/Contact/index_es.php
new file mode 100644
index 0000000..8c79aa8
--- /dev/null
+++ b/Application/Views/Mobile/Contact/index_es.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Puede sugerir el implementar nuevas caracteriticas o agregar nuevo hardware en la página de <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">incidencias</a>
+ </div>
+
+ <div class="contact_div">
+ Si desea contactar directamente al equipo de <b><?php echo Website::$generalName;?></b> use esta dirección de correo electronico: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Contact/index_fr.php b/Application/Views/Mobile/Contact/index_fr.php
new file mode 100644
index 0000000..2b2b7dd
--- /dev/null
+++ b/Application/Views/Mobile/Contact/index_fr.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Vous pouvez suggérez l’implémentation de nouvelles fonctionnalitée ou l’ajout d’un nouveau type de matériel dans la page <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">problème</a>.
+ </div>
+
+ <div class="contact_div">
+ Si vous voulez contatez directement l’équipe <b><?php echo Website::$generalName;?></b>, utilisez cette adresse mail : <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Contact/index_gr.php b/Application/Views/Mobile/Contact/index_gr.php
new file mode 100644
index 0000000..069d14d
--- /dev/null
+++ b/Application/Views/Mobile/Contact/index_gr.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Μπορείτε να εισηγηθείτε την υλοποίηση νέων χαρακτηριστικών ή την προσθήκη νέων τύπων υλικού (hardware) στην ιστοσελίδα <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">issues</a>
+ </div>
+
+ <div class="contact_div">
+ Αν θέλετε να έρθετε σε άμεση επαφή με την ομάδα του <b><?php echo Website::$generalName;?></b>, χρησιμοποιείστε αυτή την ηλεκτρονική διεύθυνση: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Contact/index_it.php b/Application/Views/Mobile/Contact/index_it.php
new file mode 100644
index 0000000..d96d767
--- /dev/null
+++ b/Application/Views/Mobile/Contact/index_it.php
@@ -0,0 +1,41 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; contact
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="contact_div">
+ Potete suggerire nuove caratteristiche da implementare o aggiungere nuovi tipi di hardware nella pagina <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">issues</a>
+ </div>
+
+ <div class="contact_div">
+ Se volete direttamente contattare il team di <b><?php echo Website::$generalName;?></b> potete farlo a questo indirizzo e-mail: <b>info@h-node.com</b>
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Credits/index.php b/Application/Views/Mobile/Credits/index.php
new file mode 100644
index 0000000..c54f231
--- /dev/null
+++ b/Application/Views/Mobile/Credits/index.php
@@ -0,0 +1,65 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Icons:
+ </div>
+
+ <div class="credits_item_description">
+ The icons used inside <?php echo Website::$generalName;?> are taken from the <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> icon theme and from the <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, both licensed under the GNU GPL license, from the <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a> icons, licensed under the LGPL, from the <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL) and from the <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). The flag icons are taken from the <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM flag icons set</a> (Public Domain).
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ The <a href="http://jquery.com/">jQuery</a>, the <a href="http://jqueryui.com/home">jQuery UI</a> and the <a href="http://jquerymobile.com/">jQuery Mobile</a> javascript libraries (licensed under MIT/GPL) have been used through the website
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ The <a href="http://markitup.jaysalvat.com/home/">markitup</a> jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags
+ </div>
+
+ <div class="credits_item_title">
+ php diff algorithm:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">This</a> algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hardware model.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Credits/index_es.php b/Application/Views/Mobile/Credits/index_es.php
new file mode 100644
index 0000000..3be6fbf
--- /dev/null
+++ b/Application/Views/Mobile/Credits/index_es.php
@@ -0,0 +1,65 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Iconos:
+ </div>
+
+ <div class="credits_item_description">
+ Los iconos usados dentro de <?php echo Website::$generalName;?> son tomados de el tema de iconos <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> y de <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, ambos licenciados bajo la licencia GNU GPL, de <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a>, licenciado bajo la LGPL, de <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL) y de <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). Los iconos de las banderas son tomados la colección de iconos de banderas <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM</a> (Dominio Público)
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ Las bibliotecas javascript <a href="http://jquery.com/">jQuery</a>, <a href="http://jqueryui.com/home">jQuery UI</a> y <a href="http://jquerymobile.com/">jQuery Mobile</a> (licenciadas bajo MIT/GPL) han sido usadas en el sitio
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ El complemento <a href="http://markitup.jaysalvat.com/home/">markitup</a> jQuery (licenciado bajo MIT/GPL) ha sido usado en orden de ayudar al usuario a insertar etiquetas wiki
+ </div>
+
+ <div class="credits_item_title">
+ php diff algorithm:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">Este</a> algoritmo (licenciado bajo la licencia libre de zlib) ha sido usado en orden de remarcar las diferencias entre dos diferentes revisiones del mismo modelo de hardware.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Credits/index_fr.php b/Application/Views/Mobile/Credits/index_fr.php
new file mode 100644
index 0000000..022aa70
--- /dev/null
+++ b/Application/Views/Mobile/Credits/index_fr.php
@@ -0,0 +1,63 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Icons:
+ </div>
+
+ <div class="credits_item_description">
+ Les icones utilisées sur <?php echo Website::$generalName;?> sont tirées du thème <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> et du thème <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, les deux sont licensée sous license GPL, d’autres sont aussi tirée des thèmes <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a> (LGPL), <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL), <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). Les icones de drapeau sont tirés du thème <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM flag icons set</a> distribué dans le domaine publique.
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://jquery.com/">jQuery</a> , <a href="http://jqueryui.com/home">jQuery UI</a> et la librairie javascript <a href="http://jquerymobile.com/">jQuery Mobile</a> (licensé sous MIT/GPL) sont utilisés sur le site.
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ Le plugin jQuery <a href="http://markitup.jaysalvat.com/home/">markitup</a> (licensé sous MIT/GPL) a été utilisé afin d’aider les utilisateurs à insérer des tags wiki.
+ </div>
+
+ <div class="credits_item_title">
+ Algorithme diff php:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">Cet</a> algorithme (Licensé sous license libre zlib) a été utiliser afin de souligner les différences entre deux révisions d’un même modèle matériel.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Credits/index_gr.php b/Application/Views/Mobile/Credits/index_gr.php
new file mode 100644
index 0000000..424ded1
--- /dev/null
+++ b/Application/Views/Mobile/Credits/index_gr.php
@@ -0,0 +1,65 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Εικόνες:
+ </div>
+
+ <div class="credits_item_description">
+ Οι εικόνες που χρησιμοποιούνται μέσα στο <?php echo Website::$generalName;?> πάρθηκαν από το θέμα εικόνας <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> και από το <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, που είναι αδειοδοτημένα και τα δύο υπό την Άδεια GNU GPL, από τις εικόνες <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a>, που είναι αδειοδοτημένες υπό την LGPL, από το <a href="http://www.notmart.org/index.php/Graphics">glaze icons set</a> (LGPL) και από το <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked icons theme</a> (GPL). Οι εικόνες flag πάρθηκαν από το <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM flag icons set</a> (Public Domain).
+ </div>
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ Σε όλο τον ιστότοπο χρησιμοποιήθηκαν οι βιβλιοθήκες javascript <a href="http://jquery.com/">jQuery</a> και η <a href="http://jqueryui.com/home">jQuery UI</a> (που αδειοδοτούνται υπό την MIT/GPL).
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ Χρησιμοποιήθηκε το <a href="http://markitup.jaysalvat.com/home/">markitup</a> jQuery plugin (που αδειοδοτείται υπό την MIT/GPL), για να βοηθηθεί ο χρήστης να εισαγάγει wiki tags
+ </div>
+
+ <div class="credits_item_title">
+ php diff algorithm:
+ </div>
+
+ <div class="credits_item_description">
+ Χρησιμοποιήθηκε ο αλγόριθμος <a href="http://compsci.ca/v3/viewtopic.php?p=142539">This</a> algorithm (που αδειοδοτείται υπό την ελεύθερη άδεια zlib), για να αναδειχθούν οι διαφορές ανάμεσα στις δύο διαφορετικές αναθεωρήσεις του ίδιου μοντέλου υλικού (hadrware).
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Credits/index_it.php b/Application/Views/Mobile/Credits/index_it.php
new file mode 100644
index 0000000..6b1a512
--- /dev/null
+++ b/Application/Views/Mobile/Credits/index_it.php
@@ -0,0 +1,66 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; credits
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Icone:
+ </div>
+
+ <div class="credits_item_description">
+ Le icone utilizzate nel sito h-node.com appartengono ai temi di icone <a href="http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018">ACUN Simgeleri 0.7</a> e <a href="http://kde-look.org/content/show.php/H2O+Icon+Theme?content=127149">H2O Icon Theme 0.0.5</a>, entrambi sotto licenza GNU GPL, e al tema <a href="http://www.everaldo.com/crystal/?action=downloads">Crystal Projects</a>, sotto licenza LGPL, al <a href="http://www.notmart.org/index.php/Graphics">set di icone glaze</a> (LGPL) e al tema <a href="http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902">DarkGlass_Reworked</a> (GPL). Le icone bandiere derivano dal set di icone <a href="http://www.famfamfam.com/lab/icons/flags/">FAMFAMFAM</a> (Public Domain).
+ </div>
+
+
+ <div class="credits_item_title">
+ jQuery:
+ </div>
+
+ <div class="credits_item_description">
+ Le librerie javascript <a href="http://jquery.com/">jQuery</a> , <a href="http://jqueryui.com/home">jQuery UI</a> e <a href="http://jquerymobile.com/">jQuery Mobile</a> (sotto licenza MIT/GPL) sono state usate nel sito
+ </div>
+
+ <div class="credits_item_title">
+ markitup:
+ </div>
+
+ <div class="credits_item_description">
+ Il plugin jQuery <a href="http://markitup.jaysalvat.com/home/">markitup</a> (sotto licenza MIT/GPL) è stato usato per aiutare gli utenti a inserire i tag della wiki </div>
+
+ <div class="credits_item_title">
+ Algoritmo php diff:
+ </div>
+
+ <div class="credits_item_description">
+ <a href="http://compsci.ca/v3/viewtopic.php?p=142539">Questo</a> algoritmo (sotto licenza libera zlib) è stato usato per sottolineare la differenza tra due diverse revisioni dello stesso modello di hardware.
+ </div>
+
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Hardware/left.php b/Application/Views/Mobile/Hardware/left.php
new file mode 100644
index 0000000..d0c17b9
--- /dev/null
+++ b/Application/Views/Mobile/Hardware/left.php
@@ -0,0 +1,127 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; Hardware
+ </div>
+
+ <ul id="hardware_list" data-role="listview" data-theme="c" style="overflow:hidden;">
+ <li>
+ <a href="<?php echo $this->baseUrl?>/notebooks/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Notebooks");?>, <?php echo gtext("netbooks");?>, <?php echo gtext("tablet PC");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/computer-laptop.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/wifi/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Wifi cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/network-wireless.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/videocards/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Video cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/1282042718_hardware.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/printers/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Printers and multifunction");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/printer.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/scanners/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Scanners");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/scanner.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/threegcards/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("3G cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/usb.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/soundcards/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Sound cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/audio-card.png">
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/webcams/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Webcams");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/camera-web.png">
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/bluetooth/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Bluetooth devices");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/preferences-system-bluetooth.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/acquisitioncards/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("TV/Video/FM acquisition cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/cam_mount.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/fingerprintreaders/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Fingerprint readers");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/fingerprint_icon.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/ethernetcards/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Ethernet cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/network-wired.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/sdcardreaders/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("SD card readers");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/media-flash-sd-mmc.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/modems/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Modems and ADSL cards");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/modem.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/raidadapters/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("RAID adapters");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/1282042718_hardware.png" />
+ </a>
+ </li>
+ <li>
+ <a href="<?php echo $this->baseUrl?>/hostcontrollers/catalogue/<?php echo $lang;?>">
+ <?php echo gtext("Host Controllers");?>
+ <img class="image_thumb_list" src="<?php echo $this->baseUrl;?>/Public/Img/Crystal/1282042718_hardware.png" />
+ </a>
+ </li>
+ </ul>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Mobile/Home/left.php b/Application/Views/Mobile/Home/left.php
new file mode 100644
index 0000000..b4ec21e
--- /dev/null
+++ b/Application/Views/Mobile/Home/left.php
@@ -0,0 +1,87 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Objectives:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png"> The <b><?php echo Website::$projectName;?></b> project aims at the construction of a hardware database in order to identify what devices work with a <a href="http://www.gnu.org/distros/free-distros.html">fully free operating system</a>. The <?php echo Website::$generalName;?> website is structured like a wiki in which all the users can modify or insert new contents. The h-node project is developed in collaboration and as an activity of the <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribute:
+ </div>
+ <div class="home_objectives_description">
+ You can contribute by creating an account at <?php echo Website::$generalName;?> and editing its user-generated contents. All your modification will be saved in the history of the product you are editing/adding. Each revision (the current one or the old ones) will be marked by the name of the user who created it.<br />You can also contribute by <b>suggesting new hardware</b> that should be added to the database or <b>features that should be implemented</b>.
+ </div>
+
+ <div class="home_objectives_title">
+ Free software:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ License:
+ </div>
+ <div class="home_objectives_description">
+ Any text submitted by you will be put in the Public Domain (see the <a href="http://creativecommons.org/publicdomain/zero/1.0/">CC0 page</a> for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text you have submitted to h-node.org, for any purpose, commercial or non-commercial, and by any means.
+ </div>
+
+ <div class="home_objectives_title">
+ Other resources on the net:
+ </div>
+ <div class="home_objectives_description">
+ <p>Here is a list of other archives collecting information about hardware working with free software:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ About the <?php echo Website::$generalName;?> website:
+ </div>
+ <div class="home_objectives_description">
+ The <?php echo Website::$generalName;?> has to be considered in <b>beta version</b>. It is constantly growing and many features have not been implemented yet (for example new hardware devices have to be inserted in the database). Some problems may occur: if you find out a bug please add an issue <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">here</a> with the topic <b>maybe a bug</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Mobile/Home/left_de.php b/Application/Views/Mobile/Home/left_de.php
new file mode 100644
index 0000000..75467ea
--- /dev/null
+++ b/Application/Views/Mobile/Home/left_de.php
@@ -0,0 +1,86 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Ziele:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png"> Mit dem Projekt <b><?php echo Website::$projectName;?></b> soll eine Hardwaredatenbank mit Peripheriegeräten aufgebaut werdem, die mit einem <a href="http://www.gnu.org/distros/free-distros.html">vollständig freien Betriebssystem</a> arbeiten. Die Webseite von h-node.org ist wie ein Wiki aufgebaut, dessen Inhalte von allen Benutzer geändert und ergänzt werden können. Das Projekt <b>h-node</b> wird in Zusammenarbeit und als eine Aktivität der <a href="http://www.fsf.org">FSF</a> entwickelt.
+ </div>
+
+ <div class="home_objectives_title">
+ Mithelfen:
+ </div>
+ <div class="home_objectives_description">
+ Sie können nach Ihrer Anmeldung bei h-node.org dazu beitragen und die benutzergenerierten Inhalte bearbeiten. Alle Änderungen die Sie bearbeiten oder hinzufügen, werden im Produktverlauf protokolliert. Jede Version (die aktuelle oder die alte) wird der/dem BenutzerIn zugeordnet, die/der sie erstellte.<br />
+ <b>Neue Hardware</b>, die in die Datenbank aufgenommen, oder <b>neue Funktionen</b>, die hinzugefügt werden sollten, können Sie ebenfalls vorschlagen.
+ </div>
+
+ <div class="home_objectives_title">
+ Freie Software:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ Lizenz:
+ </div>
+ <div class="home_objectives_description">
+ Jeder von Ihnen übermittelte Text wird in die Gemeinfreiheit („Public Domain“) entlassen (siehe <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.de">CC0 1.0 Universell (CC0 1.0)</a> für detaillierte Informationen). Jede Person darf das Werk/den Inhalt, den Sie an h-node.org übermittelt haben, kopieren, verändern, verbreiten und aufführen, sogar zu kommerziellen Zwecken, ohne um weitere Erlaubnis bitten zu müssen und auf jedem Medium.
+ </div>
+
+ <div class="home_objectives_title">
+ Weitere Ressourcen im Internet:
+ </div>
+ <div class="home_objectives_description">
+ <p>Weitere Archive mit gesammelten Informationen über Hardware, die mit Freie Software arbeitet:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ Über h-node.org:
+ </div>
+ <div class="home_objectives_description">
+ <b>h-node</b> muss als im Beta-Stadium betrachtet werden. Es wird ständig ergänzt haben und viele Funktionen wurden noch nicht implementiert (z. B. müssen neue Hardware-Geräte in die Datenbank eingepflegt werden). Es können Probleme auftreten: Wenn Sie einen Fehler finden, melden Sie diesen bitte im <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">Web-Log</a> mit dem Thema <b>evtl. ein Fehler</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Mobile/Home/left_es.php b/Application/Views/Mobile/Home/left_es.php
new file mode 100644
index 0000000..4b310c7
--- /dev/null
+++ b/Application/Views/Mobile/Home/left_es.php
@@ -0,0 +1,86 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Objetivos:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png"> El proyecto <b><?php echo Website::$projectName;?></b> tiene como meta la construcción de una base de datos de todo el hardware de manera que se pueda identificar que dispositivos funcionan con un <a href="http://www.gnu.org/distros/free-distros.es.html">sistema operativo completamente libre</a>. El sitio <?php echo Website::$generalName;?> esta estructurado como un wiki, en el cual todos los usuarios pueden modificar o integrar nuevos contenidos. El proyecto h-node es desarrollado en colaboración y como una actividad de la <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribuir:
+ </div>
+ <div class="home_objectives_description">
+ Puede contribuir creando una cuenta en <?php echo Website::$generalName;?> y editar los contenidos generados. Todas sus modificaciones serás guardadas en el historial del producto que edite/agregue. Cada revisión (actual o previa) será marcada con el nombre del usuario que la creo.<br />También puede contribuir al <b>sugerir nuevo hardware</b> que deba ser agregado a la base de datos o <b>características que deberían ser implementadas.</b>
+ </div>
+
+ <div class="home_objectives_title">
+ Software Libre:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ Licencias:
+ </div>
+ <div class="home_objectives_description">
+ Cualquier texto agregado por usted sera colocado en Dominio Publico (vea la <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.es_CL">página CC0</a> para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto que ha integrado a h-node.org, para cualquier propósito, comercial o no comercial, y por cualquier método.
+ </div>
+
+ <div class="home_objectives_title">
+ Otros recursos en la red:
+ </div>
+ <div class="home_objectives_description">
+ <p>Aquí una lista de otras actividades recolectando información acerca de hardware funcionando con software libre:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ Acerca del sitio <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ El sitio <?php echo Website::$generalName;?> debe ser considerado una <b>versión beta</b>. Esta en constantemente crecimiento y varias características no han sido implementadas aun (por ejemplo, nuevos dispositivos de hardware tienen que ser incluidos en la base de datos). Algunos problemas pueden ocurrir: Si encuentra un error por favor agregue una incidencia <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">aquí</a> bajo el tema <b>maybe a bug</b>.
+ </div>
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Home/left_fr.php b/Application/Views/Mobile/Home/left_fr.php
new file mode 100644
index 0000000..f68a53f
--- /dev/null
+++ b/Application/Views/Mobile/Home/left_fr.php
@@ -0,0 +1,88 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Objectifs:
+ </div>
+
+ <div class="home_objectives_description">
+ <img src="https://www.h-node.org/Public/Img/H2O/applications-internet.png"> Le but du projet <b>h-node est</b> de créer une base de données de matériel afin d'identifier les dispositifs qui fonctionne avec un <a href="http://www.gnu.org/distros/free-distros.fr.html">système d’exploitation entièrement libre</a>. Le site h-node est structuré comme un wiki, dont tout les utilisateurs peuvent modifier ou insérer des contenus. Le projet h-node est dévellopé en collaboration et en tant qu'activitée de la <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribution:
+ </div>
+ <div class="home_objectives_description">
+ Vous pouvez contribuer en créant un compte sur h-node et modifier le contenus créé par les utilisateurs. Toutes vos modifications seront enregistrées dans l’historique de l’élément que vous modifiez ou ajouter. Toutes versions (l’actuelle ou les précédentes) seront marquées au nom de l’utilisateur qui les a crées. <br />Vous pouvez aussi contribuer en <b>suggérant un autre type de matériel</b> qui devrais être ajouté à la base de données ou une nouvelle <b>fonctionnalitée qui devrais être implémentée</b>
+ </div>
+
+ <div class="home_objectives_title">
+ Logiciel libre:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ License:
+ </div>
+
+ <div class="home_objectives_description">
+ Tout les textes que vous publierez sur le site seront dans le Domain public (Consultez la <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.fr">page CC0</a> pour plus d'informations). Tout un chacun est autorisé à copier, modifier, publier, utiliser, vendre ou distribuer le texte que vous avez envoyé sur h-node.org, pour quelque utilisation que ce soit et par tout les moyens.
+ </div>
+
+ <div class="home_objectives_title">
+ Ressource supplémentaire sur Internet:
+ </div>
+ <div class="home_objectives_description">
+ <p>Voici une liste d'autres archives qui collecte des informations à propos du matériel fonctionnant avec du logiciel libre:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ A propos du site <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ Le site doit être considéré comme en <b>version beta</b>, il s’aggrandit constamment et beaucoup de fonctionnalitée n’ont pas encore été implémentée ( par exemple, de nouveau type d’appareil doivent être ajouter dans la base de données) . Des problèmes peuvent arriver, si vous trouver un bug, merci de remplir un <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">ticket bug</a> (<b>maybe a bug</b>).
+ </div>
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Home/left_gr.php b/Application/Views/Mobile/Home/left_gr.php
new file mode 100644
index 0000000..5e15b4c
--- /dev/null
+++ b/Application/Views/Mobile/Home/left_gr.php
@@ -0,0 +1,87 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Σκοποί:
+ </div>
+ <div class="home_objectives_description">
+ <img src="<?php echo $this->baseUrl;?>/Public/Img/H2O/applications-internet.png">
+ Το <b><?php echo Website::$projectName;?></b> project έχει ως σκοπό την κατασκευή μίας βάσης δεδομένων υλικού, έτσι ώστε να μπορεί να εντοπισθεί ποιες συσκευές δουλεύουν με ένα <a href="http://www.gnu.org/distros/free-distros.html">πλήρως ελεύθερο Λειτουργικό Σύστημα</a>. Ο ιστότοπος <?php echo Website::$generalName;?> είναι δομημένος σαν ένα wiki, εντός του οποίου όλοι οι χρήστες μπορούν να τροποποιούν ή να εισαγάγουν νέα περιεχόμενα. Το h-node project αναπτύχθηκε σε συνεργασία με και σαν δραστηριότητα του <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Συνεισφέρετε:
+ </div>
+ <div class="home_objectives_description">
+ Μπορείτε να συνεισφέρετε φτιάχνοντας έναν λογαριασμό στο <?php echo Website::$generalName;?> και τροποποιώντας τα περιεχόμενα που δημιούργησαν οι ίδιοι οι χρήστες. Όλες σας οι τροποποιήσεις θα αποθηκεύονται στο ιστορικό του προϊόντος το οποίο επεξεργάζεσθε/εμπλουτίζετε. Κάθε αναθεώρηση (τόσο η τρέχουσα όσο και οι παλιές) θα επισημαίνεται με το όνομα του χρήστη που την δημιούργησε. Μπορείτε, επίσης, να συνεισφέρετε <b>προτείνοντας νέο υλικό</b> που θα έπρεπε να προστεθεί στη βάση δεδομένων, ή <b>εισηγούμενοι χαρακτηριστικά που θα έπρεπε να υλοποιηθούν</b>.
+ </div>
+
+ <div class="home_objectives_title">
+ Ελεύθερο Λογισμικό
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">
+ In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either:
+
+ <p>1) A GNU/Linux distribution that is on the <a href="http://www.gnu.org/distros/free-distros.html">FSF's list of endorsed distributions</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>with only the main archive area enabled</strong>. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running <code>apt-cache policy</code>. The only package archive area mentioned in the output should be <strong>main</strong>.</p>
+
+ <p>h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ Άδεια:
+ </div>
+ <div class="home_objectives_description">
+ Οποιοδήποτε κείμενο που υποβάλετε, θα μπαίνει σε Δημόσια Διάθεση/Public Domain (δείτε τη σελίδα <a href="http://creativecommons.org/publicdomain/zero/1.0/">CC0 page</a> για πιο λεπτομερείς πληροφορίες). Οποιοσδήποτε είναι ελεύθερος να αντιγράφει, να τροποποιεί, να δημοσιεύει, να χρησιμοποιεί, να πωλεί, ή και να ανδιανέμει το κείμενο που εσείς υποβάλλατε στο h-node.com, για οποιοδήποτε λόγο, εμπορικό ή μη-εμπορικό, και με οποιονδήποτε τρόπο.
+ </div>
+
+ <div class="home_objectives_title">
+ Άλλοι πόροι στο Διαδίκτυο:
+ </div>
+ <div class="home_objectives_description">
+ <p>Ακολουθεί, εδώ, ένας κατάλογος άλλων αρχείων που συγκεντρώνουν πληροφορίες σχετικά με υλικό που δουλεύει με ελεύθερο λογισμικό:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ Σχετικά με τον ιστότοπο <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ Το <?php echo Website::$generalName;?> πρέπει να θεωρείται πως βρίκεται σε <b>έκδοση beta</b>. Αναπτύσσεται συνεχώς και πολλά χαρακτηριστικά δεν έχουν ακόμη υλοποιηθεί (π.χ. πρέπει ακόμη να προστεθούν νέες συσκευές υλικού στη βάση δεδομένων). Μπορεί να παρατηρηθούν ορισμένα προβλήματα: αν εντοπίσετε ένα σφάλμα (bug), παρακαλώ προσθέστε μία αναφορά προβλήματος <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">εδώ</a> με θέμα <b>ίσως να πρόκειται για ένα bug</b>.
+ </div>
+ </div>
+ </div>
diff --git a/Application/Views/Mobile/Home/left_it.php b/Application/Views/Mobile/Home/left_it.php
new file mode 100644
index 0000000..dc9a6bb
--- /dev/null
+++ b/Application/Views/Mobile/Home/left_it.php
@@ -0,0 +1,88 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ Home
+ </div>
+
+ <?php echo $htmlNewsBox;?>
+
+ <div class="home_container">
+ <div class="home_objectives_title">
+ Obiettivi:
+ </div>
+
+ <div class="home_objectives_description">
+ <img src="https://www.h-node.org/Public/Img/H2O/applications-internet.png"> Il progetto <b>h-node</b> mira alla costruzione di un database di hardware allo scopo di identificare quali dispositivi funzionino con un <a href="http://www.gnu.org/distros/free-distros.it.html">sistema operativo completamente libero</a>. Il sito h-node.org è strutturato come una wiki in cui tutti gli utenti possono inserire nuovi contenuti o modificare i contenuti già presenti. Il progetto h-node è sviluppato in collaborazione e come attività della <a href="http://www.fsf.org">FSF</a>.
+ </div>
+
+ <div class="home_objectives_title">
+ Contribuire:
+ </div>
+ <div class="home_objectives_description">
+ Puoi contribuire creandoti un account su h-node.org e modificando i suoi contenuti generati dagli utenti. Tutte le tue modifiche saranno salvate nella storia del prodotto che stai modificando/aggiungendo. Ogni revisione (quella attuale o le precedenti) sarà contrassegnata col nome dell'utente che l'ha creata.<br />Puoi inoltre contribuire <b>suggerendo del nuovo hardware</b> da aggiungere al database o delle <b>caratteristiche da implementare</b>.
+ </div>
+
+ <div class="home_objectives_title">
+ Software libero:
+ </div>
+ <div class="home_objectives_description">
+ <img height="100px" src="https://savannah.nongnu.org/images/Savannah.theme/floating.png">Per poter aggiungere un dispositivo nel database di h-node, devi verificare che funzioni usando solo software libero. Per questo scopo, puoi unicamente utilizzare:
+
+ <p>1) Una delle distribuzioni GNU/Linux elencate <a href="http://www.gnu.org/distros/free-distros.html">nella lista delle distribuzioni approvate dalla FSF</a></p>
+
+ <p>2) <a href="http://www.debian.org">Debian GNU/Linux</a>, <strong>con solo la zona archivio main attivata</strong>. Le aree "contrib" e "non-free" non devono essere abilitate durante il test dell'hardware. Controlla che sia così lanciando <code>apt-cache policy</code>. La sola zona archivio dei pacchetti deve essere <strong>main</strong>.</p>
+
+ <p>h-node elenca solo hardware che funziona con driver liberi e senza firmware non libero. Le altre distribuzioni GNU/Linux (oppure Debian con contrib, non-free, o archivi di terze parti abilitati) includono file di firmware non liberi, quindi non possono essere utilizzate per i test.</p>
+ </div>
+
+ <div class="home_objectives_title">
+ Licenza:
+ </div>
+
+ <div class="home_objectives_description">
+ Qualsiasi testo da te inserito diventerà di Pubblico Dominio (visita la <a href="http://creativecommons.org/publicdomain/zero/1.0/deed.it">pagina CC0</a> per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere o distribuire il testo che hai inserito su h-node.org, per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.
+ </div>
+
+ <div class="home_objectives_title">
+ Altre risorse in rete:
+ </div>
+ <div class="home_objectives_description">
+ <p>Di seguito una lista di altri archivi contenenti informazioni sull' hardware funzionante con software libero:</p>
+ <ul>
+<!-- <li><a href="http://www.fsf.org/resources/hw">Free Software Foundation archive</a></li> -->
+ <li><a href="http://libreplanet.org/wiki/Hardware/Freest">LibrePlanet Freest Hardware Page</a></li>
+ <li><a href="http://libreplanet.org/wiki/Group:LibrePlanet_Italia/Progetti/hardware_libero">LibrePlanet Italia - progetti hardware database</a></li>
+ </ul>
+ </div>
+
+ <div class="home_objectives_title">
+ A proposito del sito <?php echo Website::$generalName;?>:
+ </div>
+ <div class="home_objectives_description">
+ <?php echo Website::$generalName;?> deve essere considerato una <b>versione beta</b>. E' in costante sviluppo e molte caratteristiche non sono ancora state implementate (per esempio nuovi dispositivi hardware devono essere aggiunti al database). Potrebbero esserci dei problemi: se scopri un bug per favore invia una segnalazione <a href="<?php echo $this->baseUrl."/issues/viewall/$lang/1/$token";?>">qui</a> con l'argomento <b>maybe a bug</b>.
+ </div>
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Notebooks/page.php b/Application/Views/Mobile/Notebooks/page.php
new file mode 100644
index 0000000..c7cafef
--- /dev/null
+++ b/Application/Views/Mobile/Notebooks/page.php
@@ -0,0 +1,119 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <?php
+ $tableName = (strcmp($this->action,'view') === 0) ? 'hardware' : 'revisions';
+ $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null;
+ ?>
+
+ <?php foreach ($table as $item) { ?>
+ <div class="notebooks_viewall <?php echo $displayClass;?>">
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($updated_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>"><?php echo gtext("Current revision");?></a>.
+ </div>
+ <?php } ?>
+
+ <h3 class="model_name">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item[$tableName]['type']);?>"> <b><?php echo $item[$tableName]['model'];?></b>
+ </h3>
+
+ <div class="model_id">(<?php echo gtext("model id");?>: <b><?php echo $id_hard;?>)</b></div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("subtype");?> (<?php echo gtext("notebook");?>, <?php echo gtext("netbook");?>, <?php echo gtext("motherboard");?>, <?php echo gtext("tablet");?>):</div>
+ <div class="ui-block-b"><b><?php echo gtext($item[$tableName]['subtype']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("vendor");?>:</div>
+ <div class="ui-block-b"><b><?php echo betterVendor($item[$tableName]['vendor']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("architecture");?>:</div>
+ <div class="ui-block-b"><b><?php echo gtext(translate($item[$tableName]['architecture']));?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("does it have a free boot firmware (BIOS,UEFI,...) ?");?></div>
+ <div class="ui-block-b"><b><?php echo translate_and_gtext($item[$tableName]['bios']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("can free operating systems be installed?");?></div>
+ <div class="ui-block-b"><b><?php echo gtext($item[$tableName]['can_free_systems_be_installed']);?></b> <?php if (strcmp($item[$tableName]['can_free_systems_be_installed'],'no') === 0) echo "<span class='no_bold'>(".gtext("see the details inside the description entry").")</span>";?></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("does the device prevent installing wifi cards not-approved by the vendor?");?></div>
+ <div class="ui-block-b"><b><?php echo translate_and_gtext($item[$tableName]['prevent_wifi']);?></b> <?php if (strcmp($item[$tableName]['prevent_wifi'],'yes') === 0) echo "<span class='no_bold'>(".gtext("see the details inside the description entry").")</span>";?></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("year of commercialization");?>:</div>
+ <div class="ui-block-b"><b><?php echo gtext($item[$tableName]['comm_year']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("compatibility with free software");?>:</div>
+ <div class="ui-block-b"><b><?php echo gtext($item[$tableName]['compatibility']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("tested on");?>:</div>
+ <div class="ui-block-b"><b><?php echo Distributions::getName($item[$tableName]['distribution']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("tested with the following kernel libre");?>:</div>
+ <div class="ui-block-b"><b><?php echo implode("<br />",explode(',',$item[$tableName]['kernel']));?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("video card model");?>:</div>
+ <div class="ui-block-b"><b><?php echo $item[$tableName]['video_card_type'];?></b> (<?php echo gtext(Notebooks::$videoReverse[$item[$tableName]['video_card_works']]);?>)</div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("wifi model");?>:</div>
+ <div class="ui-block-b"><b><?php echo $item[$tableName]['wifi_type'];?></b> (<?php echo gtext(Notebooks::$wifiReverse[$item[$tableName]['wifi_works']]);?>)</div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("webcam model");?>:</div>
+ <div class="ui-block-b"><b><?php echo $item[$tableName]['webcam_type'];?></b> (<?php echo gtext(Notebooks::$webcamReverse[$item[$tableName]['webcam_works']]);?>)</div>
+ </div>
+
+ <?php if (strcmp($item[$tableName]['description'],'') !== 0) { ?>
+ <h4><?php echo gtext("Description");?></h4>
+ <div class="device_description"><?php echo decodeWikiText($item[$tableName]['description']);?></div>
+ <?php } ?>
+
+ </div>
+ <?php } ?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Mobile/Project/index.php b/Application/Views/Mobile/Project/index.php
new file mode 100644
index 0000000..c194a3b
--- /dev/null
+++ b/Application/Views/Mobile/Project/index.php
@@ -0,0 +1,50 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Why:
+ </div>
+
+ <div class="credits_item_description">
+ The h-node project has been created to help the free software movement by creating an archive of all the hardware that can work with a <a href="http://www.gnu.org/distros/free-distros.html">fully free operating system</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Who:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), designer of the website layout and icons (thanks for your advice and support), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), member of the Spanish translation team (thanks for all of your useful ideas and suggestions), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), member of the French translation team, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), member of the German translation team, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), member of the French translation team, Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />Also thanks to all of you who have believed in the project since it was born and to all of you who gave, give and will give their contribution.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Project/index_de.php b/Application/Views/Mobile/Project/index_de.php
new file mode 100644
index 0000000..ea32f1f
--- /dev/null
+++ b/Application/Views/Mobile/Project/index_de.php
@@ -0,0 +1,51 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Warum:
+ </div>
+
+ <div class="credits_item_description">
+ Das Projekt „h-node“ wurde ins Leben gerufen, um für die Freie-Software-Bewegung ein umfassendes Hardware-Archiv für <a href="http://www.gnu.org/distros/free-distros.html">vollkommen Freie Betriebssysteme</a> aufzubauen.
+ </div>
+
+ <div class="credits_item_title">
+ Wer:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), Designer des Website-Layout und Symbole (Danke für die Ratschläge und Unterstützung), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), Mitglied des spanischen Übersetzungsteams (Danke für all die Ideen und nützlichen Anregungen), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), Mitglied des französischen Übersetzungsteams, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), Mitglied des deutschen Übersetzungsteams, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), Mitglied des französischen Übersetzungsteams, , Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />
+ Vielen Dank auch an alle, die an das Projekt, seit es ins Leben gerufen wurde, geglaubt haben und an alle, die ihren Beitrag geleistet haben, leisten und leisten werden.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Project/index_es.php b/Application/Views/Mobile/Project/index_es.php
new file mode 100644
index 0000000..1520ae5
--- /dev/null
+++ b/Application/Views/Mobile/Project/index_es.php
@@ -0,0 +1,51 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Por que:
+ </div>
+
+ <div class="credits_item_description">
+ El proyecto h-node ha sido creado para ayudar al movimiento de software libre al crear un archivo de todo el hardware que puede funcionar con un <a href="http://www.gnu.org/distros/free-distros.es.html">sistema operativo completamente libre</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Quien:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), diseñadora del tema e iconos del sitio, (gracias por su consejo y apoyo), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), miembro del equipo de traducción al Español (gracias por sus útiles ideas y sugerencias), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), miembro del equipo de traducción al Francés, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), miembro del equipo de traducción al Alemán, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), miembro del equipo de traducción al Francés, , Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />
+ También gracias a todos aquellos que han creído en el proyecto desde que nació y a todos aquellos que dieron, dan y darán su contribución.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Project/index_fr.php b/Application/Views/Mobile/Project/index_fr.php
new file mode 100644
index 0000000..90e3706
--- /dev/null
+++ b/Application/Views/Mobile/Project/index_fr.php
@@ -0,0 +1,50 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Pourquoi:
+ </div>
+
+ <div class="credits_item_description">
+ Le projet h-node a été créer pour aider le mouvement du logiciel libre en créant une archive de matériel fonctionnel avec des <a href="http://www.gnu.org/distros/free-distros.fr.html">systèmes entièrement libres</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Qui:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com source code developer, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), graphiste du site et des icones (merci pour tes conseils et ton support), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), membre de l’équipe de traduction espagnole (merci pour toutes vos bonnes idée et suggestion), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), membre de l’équipe de traduction française, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), membre de l’équipe de traduction allemande, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), membre de l’équipe de traduction française, Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />Remerciement également à tout ceux qui ont crus à ce projet depuis sa naissance et à tout ceux qui ont donné, donne ou donnerons leurs contributions.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Project/index_gr.php b/Application/Views/Mobile/Project/index_gr.php
new file mode 100644
index 0000000..ddcee3f
--- /dev/null
+++ b/Application/Views/Mobile/Project/index_gr.php
@@ -0,0 +1,50 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Γιατί:
+ </div>
+
+ <div class="credits_item_description">
+ Το h-node project στήθηκε για να βοηθήσει το Κίνημα Ελεύθερου Λογισμικού, με τη δημιουργία ενός αρχείου για όλο το υλικό (hardware) που μπορεί να δουλέψει με ένα <a href="http://www.gnu.org/distros/free-distros.html">πλήρως ελεύθερο Λειτουργικό Σύστημα</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Ποιος:
+ </div>
+
+ <div class="credits_item_description">
+ Ο Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), h-node.com developer πηγαίου κώδικα, η Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>, designer του layout και των εικόνων αυτού του ιστοτόπου (ευχαριστούμε για τις συμβουλές σου και την υποστήριξή σου), ο Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), μέλος της Ισπανικής μεταφραστικής ομάδας (ευχαριστούμε για όλες τις χρήσιμες ιδέες σου και τις προτάσεις σου), ο Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), μέλος της Γαλλικής μεταφραστικής ομάδας, ο Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), μέλος της Γερμανικής μεταφραστικής ομάδας, ο Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), μέλος της Γαλλικής μεταφραστικής ομάδας, Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), member of the Greek translation team.
+ <br />Ευχαριστούμε, επίσης, όλους εσάς που πιστέψατε σε αυτό το project από τη γέννησή του, καθώς και όλους εσάς που δώσατε, δίνετε και θα δίνετε την συνεισφορά σας.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/Project/index_it.php b/Application/Views/Mobile/Project/index_it.php
new file mode 100644
index 0000000..44fb50d
--- /dev/null
+++ b/Application/Views/Mobile/Project/index_it.php
@@ -0,0 +1,50 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; h-project
+ </div>
+
+ <div class="credits_external_box">
+
+ <div class="credits_item_title">
+ Why:
+ </div>
+
+ <div class="credits_item_description">
+ Il progetto h-node è stato creato per aiutare il movimento del software libero creando un archivio di tutto l' hardware che funzioni con un <a href="http://www.gnu.org/distros/free-distros.it.html">sistema operativo completamente libero</a>.
+ </div>
+
+ <div class="credits_item_title">
+ Who:
+ </div>
+
+ <div class="credits_item_description">
+ Antonio Gallo (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>tonicucoz">tonicucoz</a>), sviluppatore del codice di h-node.com, Giulia Fanin (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Julia">Julia</a>), designer del layout del sito e delle icone (grazie per i consigli e il supporto), Luis Alberto Guzman Garcia (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Ark74">Ark74</a>), membro del team di traduzione spagnolo (grazie per tutte le idee e gli utili suggerimenti), Henri (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>Hardisk">Hardisk</a>), membro del team di traduzione francese, Joerg Kohne (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>joeko">joeko</a>), membro del team di traduzione tedesco, Benjamin Rochefort (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>oysterboy">oysterboy</a>), membro del team di traduzione francese, , Kostas Mousafiris (<a href="<?php echo $this->baseUrl."/meet/user/$lang/";?>kosmous">kosmous</a>), membro del team di traduzione greco.
+ <br />Grazie anche a tutti Voi che avete creduto nel progetto sin dalla sua nascita e a tutti quelli che hanno dato, danno e daranno il loro contributo.
+ </div>
+
+ </div>
+
+ </div>
diff --git a/Application/Views/Mobile/bottom_left.php b/Application/Views/Mobile/bottom_left.php
new file mode 100644
index 0000000..545a6ea
--- /dev/null
+++ b/Application/Views/Mobile/bottom_left.php
@@ -0,0 +1,29 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (strcmp($this->action,'talk') !== 0) { ?>
+ <div class="bottom_licence_notice">
+ <?php echo License::getBottom();?>
+ </div>
+ <?php } ?>
+
+ </div> \ No newline at end of file
diff --git a/Application/Views/Mobile/catalogue.php b/Application/Views/Mobile/catalogue.php
new file mode 100644
index 0000000..199d661
--- /dev/null
+++ b/Application/Views/Mobile/catalogue.php
@@ -0,0 +1,105 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div class="back_button">
+ <a rel="external" href="<?php echo $this->baseUrl."/hardware/catalogue/$lang/"?>" data-inline="true" data-icon="arrow-l" data-iconpos="left" data-theme="b" data-role="button"><?php echo gtext('back');?></a>
+ </div>
+
+ <div class="ui-body ui-body-c">
+ <form action="<?php echo $this->currPage."/$lang".$clearViewStatus;?>" method="GET">
+
+ <input type="search" name="search_string" id="basic" data-mini="true" value="<?php echo $search_string_form_value;?>"/>
+
+ <button type="submit" data-theme="d"><?php echo gtext('Search');?></button>
+ </form>
+ </div>
+
+ <!--if no device is found-->
+ <?php if (strcmp($recordNumber,0) === 0) { ?>
+ <div class="viewall_no_items_found">
+ <?php echo gtext($notFoundString);?>...
+ </div>
+ <?php } ?>
+
+ <!--loop-->
+ <ul class="devices_list" data-dividertheme="b" data-role="listview">
+ <?php if (count($table) > 0) { ?>
+ <li data-role="list-divider"><h5><?php echo gtext("List of");?> <b><?php echo plural($this->controller);?></b></h5></li>
+ <?php } ?>
+ <?php foreach ($table as $item) {?>
+ <li><a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/".$item['hardware']['id_hard'].'/'.encodeUrl($item['hardware']['model']).$this->viewStatus;?>">
+ <img src="<?php echo Hardware::getIconFromType($item['hardware']['type']);?>" alt="France" class="ui-li-icon" />
+ <h3><?php echo $item['hardware']['model'];?></h3>
+
+ <?php if ( strcmp($this->controller,'notebooks') !== 0 and strcmp($item['hardware']['other_names'],'') !== 0 ) { ?>
+ <p><?php echo gtext("possible other names of the device");?>: <b><?php echo nl2br($item['hardware']['other_names']);?></b></p>
+ <?php } ?>
+
+ <?php if (strcmp($this->controller,'notebooks') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?>
+ <p>
+ <?php if (strcmp($this->controller,'notebooks') === 0) { ?>
+ <?php echo gtext("subtype");?> (<?php echo gtext("notebook");?>, <?php echo gtext("netbook");?>, <?php echo gtext("motherboard");?>, <?php echo gtext("tablet");?>)
+ <?php } else { ?>
+ <?php echo gtext("subtype");?> (<?php echo $subtypeHelpLabel;?>)
+ <?php } ?>
+ : <b><?php echo translate_and_gtext($item['hardware']['subtype']);?></b>
+ </p>
+ <?php } ?>
+
+ <p><?php echo gtext("vendor");?>: <b><?php echo betterVendor($item['hardware']['vendor']);?></b></p>
+
+ <p><?php echo gtext("year of commercialization");?>: <b><?php echo gtext($item['hardware']['comm_year']);?></b></p>
+
+ <?php if (strcmp($this->controller,'notebooks') !== 0 ) { ?>
+ <p><?php echo gtext("interface");?>: <b><?php echo gtext(translate($item['hardware']['interface']));?></b></p>
+ <?php } ?>
+
+ <p>
+ <?php if (strcmp($this->controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0 or strcmp($this->controller,'notebooks') === 0) { ?>
+ <?php echo gtext("compatibility with free software");?>:
+ <?php } else if (strcmp($this->controller,'videocards') === 0 ) { ?>
+ <?php echo gtext("how does it work with free software?");?>
+ <?php } else { ?>
+ <?php echo gtext("does it work with free software?");?>
+ <?php } ?>
+ <b><?php echo gtext(translate($item['hardware'][$worksField]));?></b>
+ </p>
+
+ <?php if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <p><?php echo gtext("does it adopt any techniques to track users?");?> <b><?php echo gtext($item['hardware']['it_tracks_users']);?></b>
+ </p>
+ <?php } ?>
+ </a>
+ </li>
+ <?php } ?>
+ </ul>
+
+ <div class="ui-grid-a page_list">
+ <?php if ( $recordNumber > 10 ) { ?>
+ <?php if ($this->viewArgs['page'] > 1) { ?>
+ <div class="ui-block-a"><a rel="external" href="<?php echo $this->baseUrl."/".$this->controller."/catalogue/$lang/".($this->viewArgs['page']-1)."?search_string=".$this->viewArgs['search_string'];?>" data-inline="true" data-icon="arrow-l" data-theme="b" data-role="button"><?php echo gtext('previous');?></a></div>
+ <?php } ?>
+ <?php if ($this->viewArgs['page'] < $numberOfPages) { ?>
+ <div style="text-align:right;" class="ui-block-b"><a rel="external" href="<?php echo $this->baseUrl."/".$this->controller."/catalogue/$lang/".($this->viewArgs['page']+1)."?search_string=".$this->viewArgs['search_string'];?>" data-inline="true" data-icon="arrow-r" data-iconpos="right" data-theme="b" data-role="button"><?php echo gtext('next');?></a></div>
+ <?php } ?>
+ <?php } ?>
+ </div> \ No newline at end of file
diff --git a/Application/Views/Mobile/dialog.php b/Application/Views/Mobile/dialog.php
new file mode 100644
index 0000000..55225a6
--- /dev/null
+++ b/Application/Views/Mobile/dialog.php
@@ -0,0 +1,22 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
diff --git a/Application/Views/Mobile/footer.php b/Application/Views/Mobile/footer.php
new file mode 100644
index 0000000..8a414f2
--- /dev/null
+++ b/Application/Views/Mobile/footer.php
@@ -0,0 +1,64 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div id="footer" data-role="footer">
+
+ <div data-theme='b' data-role="navbar">
+ <ul>
+ <li><a <?php echo $tm['contact']; ?> rel='external' href="<?php echo $this->baseUrl."/contact/index/$lang";?>"><?php echo gtext("contact us");?></a></li>
+ <li><a <?php echo $tm['credits']; ?> rel='external' href="<?php echo $this->baseUrl."/credits/index/$lang";?>"><?php echo gtext("credits");?></a></li>
+ <li><a <?php echo $tm['project']; ?> rel='external' href="<?php echo $this->baseUrl."/project/index/$lang";?>">The <?php echo Website::$projectName;?> Project</a></li>
+ </ul>
+ </div><!-- /navbar -->
+ <div data-role="navbar">
+ <ul>
+ <li><a href="<?php echo $this->baseUrl."/home/index/$lang?version=desktop";?>"><?php echo gtext("desktop version");?></a></li>
+ </ul>
+ </div><!-- /navbar -->
+
+<?php
+//$sid="23552";
+//include("/var/www/h-node.org/traffica/write_logs.php");
+?>
+
+ </div> <!--fine footer-->
+
+</div> <!--fine page-->
+
+<!-- Start of second page: language dialog -->
+<div data-role="page" id="language-dialog">
+
+ <div data-role="header" data-theme="a">
+ <h1><?php echo gtext('Choose the language');?></h1>
+ </div><!-- /header -->
+
+ <div data-role="content" data-theme="d">
+ <?php echo $language_links;?>
+ </div><!-- /content -->
+
+ <div data-role="footer">
+ <p><?php echo gtext('list of languages');?></p>
+ </div><!-- /footer -->
+</div><!-- /page popup -->
+
+</body>
+</html>
diff --git a/Application/Views/Mobile/header.php b/Application/Views/Mobile/header.php
new file mode 100644
index 0000000..446f820
--- /dev/null
+++ b/Application/Views/Mobile/header.php
@@ -0,0 +1,104 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+<!DOCTYPE html>
+<html>
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+<?php
+$u = new UsersModel();
+$hw = new HardwareModel();
+$wiki = new WikiModel();
+$translations = array('insert'=>'inserted','update'=>'updated');
+$currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index';
+?>
+<head>
+
+ <title><?php echo $title;?></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <meta name="description" content="free software project with the aim of collecting information about the hardware that works with a fully free operating system" />
+ <meta name="keywords" content="hardware database free software GNU Linux distribution wiki users freedom" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/jquery/jquery-1.7.1.min.js"></script>
+
+ <script type="text/javascript">
+ $(document).bind("mobileinit", function(){
+ $.mobile.ajaxEnabled = false;
+ });
+ </script>
+
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/jquery/jquery.mobile-1.1.0.js"></script>
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl;?>/Public/Js/jquery/jquery.mobile-1.1.0.css">
+
+ <script type="text/javascript" src="<?php echo $this->baseUrl;?>/Public/Js/functions.js"></script>
+
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl?>/Public/Css/mobile.css">
+
+ <style type='text/css'>
+ .ui-icon-current-lang
+ {
+ background-image: url(<?php echo $this->baseUrl;?>/Public/Img/Famfamfam/<?php echo $langIcon;?>);
+ background-position:1px 4px;
+ }
+ .ui-icon-go-to-hardware
+ {
+ background-image: url(<?php echo $this->baseUrl;?>/Public/Img/Crystal/hardware.png);
+ background-position:1px 0px;
+ }
+ .ui-icon-go-to-home
+ {
+ background-image: url(<?php echo $this->baseUrl;?>/Public/Img/Crystal/home.png);
+ background-position:1px 1px;
+ }
+ </style>
+
+ <script type="text/javascript">
+
+ var base_url = "<?php echo $this->baseUrl;?>";
+ var curr_lang = "<?php echo $lang;?>";
+ var csrf_token = "<?php echo $token;?>";
+
+ $(document).ready(function() {
+
+ animateTabs(curr_lang);
+
+ });
+
+ </script>
+
+</head>
+<body>
+
+
+<div data-role="page" data-theme="d">
+ <div data-role="header">
+ <div class="ui-grid-a">
+ <div class="ui-block-a"><img style="padding-top:5px;" width="110px" src="<?php echo $this->baseUrl;?>/Public/Img/title.png"></div>
+ <div class="ui-block-b"><a href="http://www.fsf.org"><img style="padding-top:10px;" width="150px" src="<?php echo $this->baseUrl;?>/Public/Img/fsf_logo.png"></a></div>
+ </div><!-- /grid-a -->
+
+ <div data-theme='b' data-role="navbar" data-iconpos="left">
+ <ul>
+ <li><a data-icon="go-to-home" <?php echo $tm['home']; ?> href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a></li>
+ <li><a data-icon="go-to-hardware" <?php echo $tm['hardware']; ?> href="<?php echo $this->baseUrl."/hardware/catalogue/$lang";?>">Hardware</a></li>
+ <li><a data-icon="current-lang" data-rel="dialog" href="#language-dialog"><?php echo $langLabel;?></a></li>
+ </ul>
+ </div><!-- /navbar -->
+
+ </div>
diff --git a/Application/Views/Mobile/if_page_deleted.php b/Application/Views/Mobile/if_page_deleted.php
new file mode 100644
index 0000000..932d0dd
--- /dev/null
+++ b/Application/Views/Mobile/if_page_deleted.php
@@ -0,0 +1,60 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if ($isDeleted and $isApproved) { ?>
+
+ <div class="notebooks_viewall">
+ <div class="revision_alert">
+ <div>
+ This page has been deleted as requested by:
+ <?php foreach ($deletionUsers as $user) { ?>
+ <?php echo $u->getLinkToUserFromId($user);?>
+ <?php } ?>
+ </div>
+ </div>
+ <div class="deletion_motivations_title">
+ With the following motivations:
+ </div>
+ <div class="deletion_motivations_external">
+ <?php foreach ($deletion as $row) { ?>
+ <div class="deletion_motivations_iternal">
+ <div class="deletion_motivations_iternal_title">
+ motivation of <?php echo $u->getLinkToUserFromId($row['deletion']['created_by']);?>: <?php echo getMotivation($row,$this->controller);?>
+ </div>
+ <div class="deletion_motivations_iternal_message">
+ message: <i><?php echo $row['deletion']['message'];?></i>
+ </div>
+ </div>
+ <?php } ?>
+ </div>
+ </div>
+
+ <?php } else if ($isDeleted and !$isApproved) { ?>
+
+ <div class="notebooks_viewall">
+ <div class="revision_alert">
+ <?php echo gtext('Thanks for your contribution!'); ?><br />
+ <?php echo gtext('The device page has to be approved by an administrator of the website'); ?>
+ </div>
+ </div>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Mobile/moderator_dialog.php b/Application/Views/Mobile/moderator_dialog.php
new file mode 100644
index 0000000..47e9af9
--- /dev/null
+++ b/Application/Views/Mobile/moderator_dialog.php
@@ -0,0 +1,21 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?> \ No newline at end of file
diff --git a/Application/Views/Mobile/page.php b/Application/Views/Mobile/page.php
new file mode 100644
index 0000000..9d994b4
--- /dev/null
+++ b/Application/Views/Mobile/page.php
@@ -0,0 +1,134 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <?php if (!$isDeleted or $isadmin) { ?>
+
+ <?php
+ $tableName = (strcmp($this->action,'view') === 0) ? 'hardware' : 'revisions';
+ $displayClass = ($isDeleted) ? 'display_none' : null;
+ ?>
+
+ <?php foreach ($table as $item) { ?>
+ <div class="notebooks_viewall <?php echo $displayClass;?>">
+
+ <!--if revision-->
+ <?php if (strcmp($this->action,'revision') === 0) { ?>
+ <div class="revision_alert">
+ <?php echo gtext("This is an old revision of this page, as edited by");?> <b><?php echo $u->getLinkToUserFromId($updated_by);?></b> <?php echo gtext('at');?> <b><?php echo smartDate($update_date); ?></b>. <?php echo gtext("It may differ significantly from the");?> <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>"><?php echo gtext("Current revision");?></a>.
+ </div>
+ <?php } ?>
+
+ <?php if ( strcmp($item[$tableName]['it_tracks_users'],'yes') === 0 ) { ?>
+ <?php echo $tracksHelpTop;?>
+ <?php } ?>
+
+ <h3 class="model_name">
+ <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item[$tableName]['type']);?>"> <b><?php echo $item[$tableName]['model'];?></b>
+ </h3>
+
+ <div class="model_id">(<?php echo gtext("model id");?>: <b><?php echo $id_hard;?>)</b></div>
+
+ <?php if ( strcmp($item[$tableName]['other_names'],'') !== 0 ) { ?>
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("possible other names of the device");?>:</div>
+ <div class="ui-block-b"><b><?php echo nl2br($item[$tableName]['other_names']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("type");?>:</div>
+ <div class="ui-block-b"><b><?php echo singular($this->controller);?></b></div>
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?>
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("subtype");?> (<?php echo $subtypeHelpLabel;?>):</div>
+ <div class="ui-block-b"><b><?php echo translate_and_gtext($item[$tableName]['subtype']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("vendor");?>:</div>
+ <div class="ui-block-b"><b><?php echo betterVendor($item[$tableName]['vendor']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("VendorID:ProductID code of the device");?>:</div>
+ <div class="ui-block-b"><b><?php echo $item[$tableName]['pci_id'];?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("year of commercialization");?>:</div>
+ <div class="ui-block-b"><b><?php echo gtext($item[$tableName]['comm_year']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("interface");?>:</div>
+ <div class="ui-block-b"><b><?php echo gtext(translate($item[$tableName]['interface']));?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("tested on");?>:</div>
+ <div class="ui-block-b"><b><?php echo Distributions::getName($item[$tableName]['distribution']);?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("tested with the following kernel libre");?>:</div>
+ <div class="ui-block-b"><b><?php echo implode("<br />",explode(',',$item[$tableName]['kernel']));?></b></div>
+ </div>
+
+ <div class="ui-grid-a main_content_element">
+ <?php if (strcmp($this->controller,'videocards') === 0 ) { ?>
+ <div class="ui-block-a"><?php echo gtext("tested with the following kernel libre");?>:</div>
+ <?php } else if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <div class="ui-block-a"><?php echo gtext("compatibility with free software");?>:</div>
+ <?php } else if (strcmp($this->controller,'scanners') === 0 ) { ?>
+ <div class="ui-block-a"><?php echo gtext("compatibility with free software");?>:</div>
+ <?php } else { ?>
+ <div class="ui-block-a"><?php echo gtext("does it work with free software?");?></div>
+ <?php } ?>
+ <div class="ui-block-b"><b><?php echo gtext(translate($item[$tableName][$worksField]));?></b></div>
+ </div>
+
+ <?php if (strcmp($this->controller,'printers') === 0 ) { ?>
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("does it adopt any techniques to track users?");?><div class="box_module_label"><?php echo $tracksHelpLabel;?></div></div>
+ <div class="ui-block-b"><b><?php echo gtext($item[$tableName]['it_tracks_users']);?></b></div>
+ </div>
+ <?php } ?>
+
+ <div class="ui-grid-a main_content_element">
+ <div class="ui-block-a"><?php echo gtext("free driver used");?>:</div>
+ <div class="ui-block-b"><b><?php echo $item[$tableName]['driver'];?></b></div>
+ </div>
+
+ <?php if (strcmp($item[$tableName]['description'],'') !== 0) { ?>
+ <h4><?php echo gtext("Description");?></h4>
+ <div class="device_description"><?php echo decodeWikiText($item[$tableName]['description']);?></div>
+ <?php } ?>
+
+
+
+ </div>
+ <?php } ?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/Views/Mobile/right.php b/Application/Views/Mobile/right.php
new file mode 100644
index 0000000..55225a6
--- /dev/null
+++ b/Application/Views/Mobile/right.php
@@ -0,0 +1,22 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
diff --git a/Application/Views/Mobile/top_left.php b/Application/Views/Mobile/top_left.php
new file mode 100644
index 0000000..7bfcf27
--- /dev/null
+++ b/Application/Views/Mobile/top_left.php
@@ -0,0 +1,43 @@
+<?php if (!defined('EG')) die('Direct access not allowed!'); ?>
+
+<?php
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This file is part of h-source
+//
+// h-source is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// h-source 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with h-source. If not, see <http://www.gnu.org/licenses/>.
+?>
+
+ <div data-role="content">
+
+ <div class="position_tree_box">
+ <a href="<?php echo $this->baseUrl."/home/index/$lang";?>">Home</a> &raquo; <a href="<?php echo $this->baseUrl."/hardware/catalogue/$lang";?>">Hardware</a> &raquo; <?php echo $tree;?>
+ </div>
+
+ <?php if (strcmp($this->action,'view') === 0) { ?>
+
+ <div class="back_button">
+ <a rel="external" href="<?php echo $this->baseUrl."/".$this->controller."/catalogue/$lang".$this->viewStatus;?>" data-inline="true" data-icon="arrow-l" data-iconpos="left" data-theme="b" data-role="button"><?php echo gtext('back');?></a>
+ </div>
+
+ <!--<div class="device_view_title">
+ <?php echo singular($this->controller);?> <b><?php echo $ne_name;?></b>
+ </div>-->
+
+ <?php } else if (strcmp($this->action,'catalogue') === 0) { ?>
+
+ <?php echo $topNotice;?>
+
+ <?php } ?> \ No newline at end of file
diff --git a/Application/index.html b/Application/index.html
new file mode 100755
index 0000000..8d1c8b6
--- /dev/null
+++ b/Application/index.html
@@ -0,0 +1 @@
+