* Fixed bug #12425: Give modfunc1 a better name
authormichael.miousse <michael.miousse@infoglobe.ca>
Fri, 21 Jan 2011 05:15:35 +0000 (05:15 +0000)
committermichael.miousse <michael.miousse@infoglobe.ca>
Fri, 21 Jan 2011 05:15:35 +0000 (05:15 +0000)
changed modreport to modfuncreport

git-svn-id: https://svn.typo3.org/TYPO3v4/Extensions/linkvalidator/trunk@42423 735d13b6-9817-0410-8766-e36946ffe9aa

13 files changed:
typo3/sysext/linkvalidator/classes/class.tx_linkvalidator_processing.php
typo3/sysext/linkvalidator/ext_emconf.php
typo3/sysext/linkvalidator/ext_tables.php
typo3/sysext/linkvalidator/modfuncreport/class.tx_linkvalidator_modfuncreport.php [new file with mode: 0644]
typo3/sysext/linkvalidator/modfuncreport/locallang.xml [new file with mode: 0644]
typo3/sysext/linkvalidator/modfuncreport/locallang_csh.xml [new file with mode: 0644]
typo3/sysext/linkvalidator/modfuncreport/locallang_mod.xml [new file with mode: 0644]
typo3/sysext/linkvalidator/modfuncreport/mod_template.html [new file with mode: 0644]
typo3/sysext/linkvalidator/modreport/class.tx_linkvalidator_modreport.php [deleted file]
typo3/sysext/linkvalidator/modreport/locallang.xml [deleted file]
typo3/sysext/linkvalidator/modreport/locallang_csh.xml [deleted file]
typo3/sysext/linkvalidator/modreport/locallang_mod.xml [deleted file]
typo3/sysext/linkvalidator/modreport/mod_template.html [deleted file]

index 37538f3..22da9e4 100644 (file)
@@ -31,7 +31,7 @@
  * @subpackage linkvalidator
  */
 
  * @subpackage linkvalidator
  */
 
-$GLOBALS['LANG']->includeLLFile('EXT:linkvalidator/modreport/locallang.xml');
+$GLOBALS['LANG']->includeLLFile('EXT:linkvalidator/modfuncreport/locallang.xml');
 
 class tx_linkvalidator_processing {
 
 
 class tx_linkvalidator_processing {
 
index ba06902..31c4f8b 100644 (file)
@@ -41,7 +41,7 @@ $EM_CONF[$_EXTKEY] = array(
                'suggests' => array(
                ),
        ),
                'suggests' => array(
                ),
        ),
-       '_md5_values_when_last_written' => 'a:26:{s:9:"ChangeLog";s:4:"ed60";s:16:"ext_autoload.php";s:4:"619e";s:12:"ext_icon.gif";s:4:"6bc7";s:17:"ext_localconf.php";s:4:"0598";s:14:"ext_tables.php";s:4:"6d40";s:14:"ext_tables.sql";s:4:"317e";s:13:"locallang.xml";s:4:"ec0a";s:45:"classes/class.tx_linkvalidator_processing.php";s:4:"611a";s:63:"classes/linktypes/class.tx_linkvalidator_linktypes_abstract.php";s:4:"7f7e";s:63:"classes/linktypes/class.tx_linkvalidator_linktypes_external.php";s:4:"bdfa";s:59:"classes/linktypes/class.tx_linkvalidator_linktypes_file.php";s:4:"ee97";s:64:"classes/linktypes/class.tx_linkvalidator_linktypes_interface.php";s:4:"c385";s:63:"classes/linktypes/class.tx_linkvalidator_linktypes_internal.php";s:4:"6bf5";s:66:"classes/linktypes/class.tx_linkvalidator_linktypes_linkhandler.php";s:4:"cef8";s:55:"classes/tasks/class.tx_linkvalidator_tasks_validate.php";s:4:"d684";s:78:"classes/tasks/class.tx_linkvalidator_tasks_validateadditionalfieldprovider.php";s:4:"12af";s:14:"doc/manual.sxw";s:4:"6694";s:14:"doc/manual.txt";s:4:"d46d";s:44:"modreport/class.tx_linkvalidator_modreport.php";s:4:"cb5b";s:22:"modreport/locallang.xml";s:4:"2319";s:26:"modreport/locallang_csh.xml";s:4:"efa4";s:26:"modreport/locallang_mod.xml";s:4:"e370";s:26:"modreport/mod_template.html";s:4:"7ed2";s:21:"res/linkvalidator.css";s:4:"2f4e";s:21:"res/mailtemplate.html";s:4:"c425";s:20:"res/pagetsconfig.txt";s:4:"ab0f";}',
+       '_md5_values_when_last_written' => 'a:26:{s:9:"ChangeLog";s:4:"ed60";s:16:"ext_autoload.php";s:4:"619e";s:12:"ext_icon.gif";s:4:"6bc7";s:17:"ext_localconf.php";s:4:"0598";s:14:"ext_tables.php";s:4:"6d40";s:14:"ext_tables.sql";s:4:"317e";s:13:"locallang.xml";s:4:"ec0a";s:45:"classes/class.tx_linkvalidator_processing.php";s:4:"611a";s:63:"classes/linktypes/class.tx_linkvalidator_linktypes_abstract.php";s:4:"7f7e";s:63:"classes/linktypes/class.tx_linkvalidator_linktypes_external.php";s:4:"bdfa";s:59:"classes/linktypes/class.tx_linkvalidator_linktypes_file.php";s:4:"ee97";s:64:"classes/linktypes/class.tx_linkvalidator_linktypes_interface.php";s:4:"c385";s:63:"classes/linktypes/class.tx_linkvalidator_linktypes_internal.php";s:4:"6bf5";s:66:"classes/linktypes/class.tx_linkvalidator_linktypes_linkhandler.php";s:4:"cef8";s:55:"classes/tasks/class.tx_linkvalidator_tasks_validate.php";s:4:"d684";s:78:"classes/tasks/class.tx_linkvalidator_tasks_validateadditionalfieldprovider.php";s:4:"12af";s:14:"doc/manual.sxw";s:4:"6694";s:14:"doc/manual.txt";s:4:"d46d";s:44:"modfuncreport/class.tx_linkvalidator_modfuncreport.php";s:4:"cb5b";s:22:"modfuncreport/locallang.xml";s:4:"2319";s:26:"modfuncreport/locallang_csh.xml";s:4:"efa4";s:26:"modfuncreport/locallang_mod.xml";s:4:"e370";s:26:"modfuncreport/mod_template.html";s:4:"7ed2";s:21:"res/linkvalidator.css";s:4:"2f4e";s:21:"res/mailtemplate.html";s:4:"c425";s:20:"res/pagetsconfig.txt";s:4:"ab0f";}',
        'suggests' => array(
        ),
 );
        'suggests' => array(
        ),
 );
index 6bef566..f0686d8 100644 (file)
@@ -7,13 +7,13 @@ if (TYPO3_MODE == 'BE') {
                // add module
        t3lib_extMgm::insertModuleFunction(
                'web_info',
                // add module
        t3lib_extMgm::insertModuleFunction(
                'web_info',
-               'tx_linkvalidator_modreport',
-               t3lib_extMgm::extPath('linkvalidator') . 'modreport/class.tx_linkvalidator_modreport.php',
+               'tx_linkvalidator_modfuncreport',
+               t3lib_extMgm::extPath('linkvalidator') . 'modfuncreport/class.tx_linkvalidator_modfuncreport.php',
                'LLL:EXT:linkvalidator/locallang.xml:mod_linkvalidator'
        );
 }
 
        // Initialize Context Sensitive Help (CSH)
                'LLL:EXT:linkvalidator/locallang.xml:mod_linkvalidator'
        );
 }
 
        // Initialize Context Sensitive Help (CSH)
-t3lib_extMgm::addLLrefForTCAdescr('linkvalidator', 'EXT:linkvalidator/modreport/locallang_csh.xml');
+t3lib_extMgm::addLLrefForTCAdescr('linkvalidator', 'EXT:linkvalidator/modfuncreport/locallang_csh.xml');
 
 ?>
\ No newline at end of file
 
 ?>
\ No newline at end of file
diff --git a/typo3/sysext/linkvalidator/modfuncreport/class.tx_linkvalidator_modfuncreport.php b/typo3/sysext/linkvalidator/modfuncreport/class.tx_linkvalidator_modfuncreport.php
new file mode 100644 (file)
index 0000000..d9a2088
--- /dev/null
@@ -0,0 +1,655 @@
+<?php
+/***************************************************************
+ *  Copyright notice
+ *
+ *  (c) 2005 - 2010 Jochen Rieger (j.rieger@connecta.ag) 
+ *  (c) 2010 - 2011 Michael Miousse (michael.miousse@infoglobe.ca)
+ *  All rights reserved
+ *
+ *  This script is part of the TYPO3 project. The TYPO3 project 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 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The GNU General Public License can be found at
+ *  http://www.gnu.org/copyleft/gpl.html.
+ *
+ *  This script 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.
+ *
+ *  This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+/**
+ * Module 'Link Validator' for the 'linkvalidator' extension.
+ *
+ * @author Michael Miousse <michael.miousse@infoglobe.ca>
+ * @author Jochen Rieger <j.rieger@connecta.ag>
+ * @package TYPO3
+ * @subpackage linkvalidator
+ */
+class tx_linkvalidator_modfuncreport extends t3lib_extobjbase {
+
+       /**
+        * @var template
+        */
+       public $doc;
+
+       /**
+        * @var string
+        */
+       protected $relativePath;
+
+       /**
+        * Information about the current page record.
+        *
+        * @var array
+        */
+       protected $pageRecord = array();
+
+       /**
+        * Information, if the module is accessible for the current user or not.
+        *
+        * @var boolean
+        */
+       protected $isAccessibleForCurrentUser = FALSE;
+
+       /**
+        * Depth for the recursivity of the link validation.
+        *
+        * @var integer
+        */
+       protected $search_level;
+
+       /**
+        * Link validation class.
+        *
+        * @var tx_linkvalidator_processing
+        */
+       protected $processing;
+
+       /**
+        * TSconfig of the current module.
+        *
+        * @var array
+        */
+       protected $modTS = array();
+
+       /**
+        * List of available link types to check defined in the TSconfig.
+        *
+        * @var array
+        */
+       protected $availableOptions = array();
+
+       /**
+        * List of link types currently chosen in the Statistics table.
+        * Used to show broken links of these types only.
+        *
+        * @var array
+        */
+       protected $checkOpt = array();
+
+       /**
+        * Hint message displayed on top of the module.
+        *
+        * @var string
+        */
+       protected $firstSteps;
+
+       /**
+        * Html for the button "Check Links".
+        *
+        * @var string
+        */
+       protected $updateListHtml;
+
+       /**
+        * Html for the button "Refresh Display".
+        *
+        * @var string
+        */
+       protected $refreshListHtml;
+
+       /**
+        * Html for the Statistics table with the checkboxes of the link types and the numbers of broken links.
+        *
+        * @var string
+        */
+       protected $checkOptHtml;
+
+       /**
+        * Complete content (html) to be displayed.
+        *
+        * @var string
+        */
+       protected $content;
+
+       /**
+        * Main method of modfuncreport
+        *
+        * @return string Module content
+        */
+       public function main() {
+               $GLOBALS['LANG']->includeLLFile('EXT:linkvalidator/modfuncreport/locallang.xml');
+
+               $this->search_level = t3lib_div::_GP('search_levels');
+
+               if (isset($this->pObj->id)) {
+                       $this->modTS = t3lib_BEfunc::getModTSconfig($this->pObj->id, 'mod.linkvalidator');
+                       $this->modTS = $this->modTS['properties'];
+               }
+
+               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
+                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $value) {
+                                       // Compile list of all available types. Used for checking with button "Check Links".
+                               if (strpos($this->modTS['linktypes'], $linkType) !== FALSE) {
+                                       $this->availableOptions[$linkType] = 1;
+                               }
+                                       // Compile list of types currently selected by the checkboxes.
+                               if ($this->pObj->MOD_SETTINGS[$linkType]) {
+                                       $this->checkOpt[$linkType] = 1;
+                               }
+                       }
+               }
+
+               $this->initialize();
+
+               $this->firstSteps = $GLOBALS['LANG']->getLL('first.steps');
+
+               if ($this->modTS['showUpdateButton'] == 1) {
+                       $this->firstSteps .= ' ' . $GLOBALS['LANG']->getLL('first.steps.info.update.button');
+                       $this->updateListHtml = '<input type="submit" name="updateLinkList" value="' . $GLOBALS['LANG']->getLL('label_update') . '"/>';
+               }
+
+               if (t3lib_extMgm::isLoaded('scheduler')) {
+                       if ($GLOBALS['BE_USER']->isAdmin()) {
+                               $this->firstSteps .= ' ' . 
+                               sprintf($GLOBALS['LANG']->getLL('first.steps.info.scheduler'),
+                                       '<a href="' . t3lib_div::getIndpEnv('TYPO3_SITE_URL') . 'typo3/mod.php?M=tools_txschedulerM1">', '</a>'
+                               );
+                       } else {
+                               $this->firstSteps .= ' ' . $GLOBALS['LANG']->getLL('first.steps.info.scheduler.admin');
+                       }
+               }
+
+               $this->refreshListHtml = '<input type="submit" name="refreshLinkList" value="' . $GLOBALS['LANG']->getLL('label_refresh') . '"/>';
+
+               $this->processing = t3lib_div::makeInstance('tx_linkvalidator_processing');
+               $this->updateBrokenLinks();
+
+               $brokenLinkOverView = $this->processing->getLinkCounts($this->pObj->id);
+               $this->checkOptHtml = $this->getCheckOptions($brokenLinkOverView);
+
+               $this->render();
+
+
+               return $this->flush();
+       }
+
+
+       /**
+        * Initializes the menu array internally.
+        *
+        * @return array Module menu
+        */
+       public function modMenu() {
+               $modMenu = array (
+                       'checkAllLink' => 0,
+               );
+
+               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
+                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $value) {
+                               $modMenu[$linkType] = 1;
+                       }
+               }
+
+               return $modMenu;
+       }
+
+
+       /**
+        * Initializes the Module.
+        *
+        * @return void
+        */
+       protected function initialize() {
+               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
+                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $classRef) {
+                               $this->hookObjectsArr[$linkType] = &t3lib_div::getUserObj($classRef);
+                       }
+               }
+
+               $this->doc = t3lib_div::makeInstance('template');
+               $this->doc->setModuleTemplate(t3lib_extMgm::extPath('linkvalidator') . 'modfuncreport/mod_template.html');
+               $this->doc->backPath = $GLOBALS['BACK_PATH'];
+
+               $this->relativePath = t3lib_extMgm::extRelPath('linkvalidator');
+               $this->pageRecord = t3lib_BEfunc::readPageAccess($this->pObj->id, $this->perms_clause);
+
+               $this->isAccessibleForCurrentUser = FALSE;
+               if ($this->pObj->id && is_array($this->pageRecord) || !$this->pObj->id && $this->isCurrentUserAdmin()) {
+                       $this->isAccessibleForCurrentUser = TRUE;
+               }
+
+               $this->loadHeaderData();
+
+                       // Don't access in workspace
+               if ($GLOBALS['BE_USER']->workspace !== 0) {
+                       $this->isAccessibleForCurrentUser = FALSE;
+               }
+       }
+
+
+       /**
+        * Updates the table of stored broken links.
+        *
+        * @return void
+        */
+       protected function updateBrokenLinks() {
+               $searchFields = array();
+
+                       // get the searchFields from TypoScript
+               foreach ($this->modTS['searchFields.'] as $table => $fieldList) {
+                       $fields = t3lib_div::trimExplode(',', $fieldList);
+                       foreach ($fields as $field) {
+                               if (!$searchFields || !is_array($searchFields[$table]) || array_search($field, $searchFields[$table]) == FALSE) {
+                                       $searchFields[$table][] = $field;
+                               }
+                       }
+               }
+                       // get children pages
+               $pageList = $this->processing->extGetTreeList(
+                       $this->pObj->id,
+                       $this->search_level,
+                       0,
+                       $GLOBALS['BE_USER']->getPagePermsClause(1)
+               );
+               $pageList .= $this->pObj->id;
+
+               $this->processing->init($searchFields, $pageList);
+
+                       // check if button press
+               $update = t3lib_div::_GP('updateLinkList');
+
+               if (!empty($update)) {
+                       $this->processing->getLinkStatistics($this->availableOptions, $this->modTS['checkhidden']);
+               }
+       }
+
+
+       /**
+        * Renders the content of the module.
+        *
+        * @return void
+        */
+       protected function render() {
+               if ($this->isAccessibleForCurrentUser) {
+                       $this->content = $this->drawBrokenLinksTable();
+               } else {
+                               // If no access or if ID == zero
+                       $message = t3lib_div::makeInstance(
+                               't3lib_FlashMessage',
+                               $GLOBALS['LANG']->getLL('no.access'),
+                               $GLOBALS['LANG']->getLL('no.access.title'),
+                               t3lib_FlashMessage::ERROR
+                       );
+                       $this->content .= $message->render();
+               }
+       }
+
+
+       /**
+        * Flushes the rendered content to the browser.
+        *
+        * @return void
+        */
+       protected function flush() {
+               $content.= $this->doc->moduleBody(
+                       $this->pageRecord,
+                       $this->getDocHeaderButtons(),
+                       $this->getTemplateMarkers()
+               );
+
+               return $content;
+       }
+
+
+       /**
+        * Builds the selector for the level of pages to search.
+        *
+        * @return string Html code of that selector
+        */
+       private function getLevelSelector() {
+                       // Make level selector:
+               $opt = array();
+               $parts = array(
+                       0 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_0'),
+                       1 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_1'),
+                       2 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_2'),
+                       3 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_3'),
+                       999 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_infi'),
+               );
+
+               foreach ($parts as $kv => $label) {
+                       $opt[] = '<option value="' . $kv . '"' . ($kv == intval($this->search_level) ? ' selected="selected"' : '') . '>' . htmlspecialchars($label) . '</option>';
+               }
+               $lMenu = '<select name="search_levels">' . implode('', $opt) . '</select>';
+               return $lMenu;
+       }
+
+       /**
+        * Displays the table of broken links or a note if there were no broken links.
+        *
+        * @return html Content of the table or of the note
+        */
+       private function drawBrokenLinksTable() {
+               $content = '';
+               $items = array();
+               $brokenLinkItems = '';
+               $keyOpt = array();
+
+               if (is_array($this->checkOpt)) {
+                       $keyOpt = array_keys($this->checkOpt);
+               }
+
+               $pageList = $this->processing->extGetTreeList(
+                       $this->pObj->id,
+                       $this->search_level,
+                       0,
+                       $GLOBALS['BE_USER']->getPagePermsClause(1)
+               );
+               $pageList .= $this->pObj->id;
+
+               if (($res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                       '*',
+                       'tx_linkvalidator_link',
+                       'record_pid in (' . $pageList . ') and link_type in (\'' . implode("','", $keyOpt) . '\')',
+                       '',
+                       'record_uid ASC, uid ASC')
+               )) {
+                               // Display table with broken links
+                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) > 0) {
+                               $brokenLinksTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###BROKENLINKS_CONTENT###');
+
+                               $brokenLinksItemTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###BROKENLINKS_ITEM###');
+
+                                       // Table header
+                               $brokenLinksMarker = $this->startTable();
+
+                                       // Table rows containing the broken links
+                               while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) {
+                                       $items[] = $this->drawTableRow($row['table_name'], $row, $brokenLinksItemTemplate);
+                               }
+                               $brokenLinkItems = implode(chr(10), $items);
+
+                               // Display note that there are no broken links to display
+                       } else {
+                               $brokenLinksTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###NOBROKENLINKS_CONTENT###');
+
+                               $brokenLinksMarker['LIST_HEADER'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('list.header'));
+                               $message = t3lib_div::makeInstance(
+                                       't3lib_FlashMessage',
+                                       $GLOBALS['LANG']->getLL('list.no.broken.links'),
+                                       $GLOBALS['LANG']->getLL('list.no.broken.links.title'),
+                                       t3lib_FlashMessage::OK
+                               );
+                               $brokenLinksMarker['NO_BROKEN_LINKS'] = $message->render();
+                       }
+               }
+               $brokenLinksTemplate = t3lib_parsehtml::substituteMarkerArray($brokenLinksTemplate, $brokenLinksMarker, '###|###', TRUE);
+
+               $content = t3lib_parsehtml::substituteSubpart($brokenLinksTemplate, '###BROKENLINKS_ITEM', $brokenLinkItems);
+
+               return $content;
+       }
+
+
+
+       /**
+        * Displays the table header of the table with the broken links.
+        *
+        * @return string Code of content
+        */
+       private function startTable() {
+               global $TYPO3_CONF_VARS;
+
+                       // Listing head
+               $makerTableHead = array();
+
+               $makerTableHead['tablehead_path'] = $GLOBALS['LANG']->getLL('list.tableHead.path');
+               $makerTableHead['tablehead_element'] = $GLOBALS['LANG']->getLL('list.tableHead.element');
+               $makerTableHead['tablehead_headlink'] = $GLOBALS['LANG']->getLL('list.tableHead.headlink');
+               $makerTableHead['tablehead_linktarget'] = $GLOBALS['LANG']->getLL('list.tableHead.linktarget');
+               $makerTableHead['tablehead_linkmessage'] = $GLOBALS['LANG']->getLL('list.tableHead.linkmessage');
+               $makerTableHead['tablehead_lastcheck'] = $GLOBALS['LANG']->getLL('list.tableHead.lastCheck');
+
+                       // Add CSH to the header of each column
+               foreach($makerTableHead as $column => $label) {
+                       $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $column, $label);
+                       $makerTableHead[$column] = $label;
+               }
+
+                       // Add section header
+               $makerTableHead['list_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('list.header'));
+
+               return $makerTableHead;
+       }
+
+
+       /**
+        * Displays one line of the broken links table.
+        *
+        * @param string $table Name of database table
+        * @param array $row Record row to be processed
+        * @param string $brokenLinksItemTemplate Markup of the template to be used
+        * @return string HTML of the rendered row
+        */
+       private function drawTableRow($table, array $row, $brokenLinksItemTemplate) {
+               $markerArray = array();
+               if (is_array($row) && !empty($row['link_type'])) {
+                       if (($hookObj = $this->hookObjectsArr[$row['link_type']])) {
+                               $brokenUrl = $hookObj->getBrokenUrl($row);
+                       }
+               }
+
+               $params = '&edit[' . $table . '][' . $row['record_uid'] . ']=edit';
+               $actionLinks = '<a href="#" onclick="' .
+                               t3lib_BEfunc::editOnClick(
+                                       $params,
+                                       $GLOBALS['BACK_PATH'],
+                                       t3lib_div::getIndpEnv('REQUEST_URI') . '?id=' . $this->pObj->id . '&search_levels=' . $this->search_level
+                               ) . '"' .
+                               ' title="' . $GLOBALS['LANG']->getLL('list.edit') . '">' .
+                               t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>';
+
+               $elementHeadline = $row['headline'];
+               if (empty($elementHeadline)) {
+                       $elementHeadline = '<i>' . $GLOBALS['LANG']->getLL('list.no.headline') . '</i>';
+               }
+
+                       // Get the language label for the field from TCA
+               if ($GLOBALS['TCA'][$table]['columns'][$row['field']]['label']) {
+                       $fieldName = $GLOBALS['TCA'][$table]['columns'][$row['field']]['label'];
+                       $fieldName = $GLOBALS['LANG']->sL($fieldName);
+                               // Crop colon from end if present.
+                       if (substr($fieldName, '-1', '1') === ':') {
+                               $fieldName = substr($fieldName, '0', strlen($fieldName)-1);
+                       }
+               }
+                       // Fallback, if there is no label
+               $fieldName = $fieldName ? $fieldName : $row['field'];
+
+                       // column "Element"
+               $element = t3lib_iconWorks::getSpriteIconForRecord($table, $row, array('title' => $table . ':' . $row['record_uid']));
+               $element .= $elementHeadline;
+               $element .= ' ' . sprintf($GLOBALS['LANG']->getLL('list.field'), $fieldName);
+
+               $markerArray['actionlink'] = $actionLinks;
+               $markerArray['path'] = t3lib_BEfunc::getRecordPath($row['record_pid'], '', 0, 0);
+               $markerArray['element'] = $element; 
+               $markerArray['headlink'] = $row['link_title'];
+               $markerArray['linktarget'] = $brokenUrl;
+
+               $response = unserialize($row['url_response']);
+               if ($response['valid']) {
+                       $linkMessage = '<span style="color: green;">' . $GLOBALS['LANG']->getLL('list.msg.ok') . '</span>';
+               } else {
+                       $linkMessage = '<span style="color: red;">' . $hookObj->getErrorMessage($response['errorParams']) . '</span>';
+               }
+               $markerArray['linkmessage'] = $linkMessage;
+
+               $lastRunDate = date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'], $row['last_check']);
+               $lastRunTime = date($GLOBALS['TYPO3_CONF_VARS']['SYS']['hhmm'], $row['last_check']);
+               $message = sprintf($GLOBALS['LANG']->getLL('list.msg.lastRun'), $lastRunDate, $lastRunTime);
+               $markerArray['lastcheck'] = $message;
+
+                       // Return the table html code as string
+               return t3lib_parsehtml::substituteMarkerArray($brokenLinksItemTemplate, $markerArray, '###|###', TRUE, TRUE);
+       }
+
+
+       /**
+        * Builds the checkboxes out of the hooks array.
+        *
+        * @param array $brokenLinkOverView array of broken links information
+        * @return string code content
+        */
+       private function getCheckOptions(array $brokenLinkOverView) {
+               $content = '';
+               $checkOptionsTemplate = '';
+               $checkOptionsTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###CHECKOPTIONS_SECTION###');
+
+               $hookSectionContent = '';
+               $hookSectionTemplate = t3lib_parsehtml::getSubpart($checkOptionsTemplate, '###HOOK_SECTION###');
+
+               $markerArray['statistics_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('overviews.statistics.header'));
+
+               $totalCountLabel = $GLOBALS['LANG']->getLL('overviews.nbtotal');
+               $totalCountLabel = t3lib_BEfunc::wrapInHelp('linkvalidator', 'checkboxes', $totalCountLabel);
+               $markerArray['total_count_label'] = $totalCountLabel;
+
+               if (empty($brokenLinkOverView['brokenlinkCount'])) {
+                       $markerArray['total_count'] = '0';
+               } else {
+                       $markerArray['total_count'] = $brokenLinkOverView['brokenlinkCount'];
+               }
+
+               $linktypes = t3lib_div::trimExplode(',', $this->modTS['linktypes'], 1);
+               $hookSectionContent = '';
+
+               if (is_array($linktypes)) {
+                       if (!empty($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])
+                               && is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])
+                       ) {
+                               foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $type => $value) {
+                                       if (in_array($type, $linktypes)) {
+                                               $hookSectionMarker = array();
+                                               if (empty($brokenLinkOverView[$type])) {
+                                                       $hookSectionMarker['count'] = '0';
+                                               } else {
+                                                       $hookSectionMarker['count'] = $brokenLinkOverView[$type];
+                                               }
+                                               $translation = $GLOBALS['LANG']->getLL('hooks.' . $type);
+                                               $translation = $translation ? $translation : $type;
+                                               $option = t3lib_BEfunc::getFuncCheck(
+                                                       array('id' => $this->pObj->id, 'search_levels' => $this->search_level),
+                                                       'SET[' . $type . ']',
+                                                       $this->pObj->MOD_SETTINGS[$type],
+                                                       '',
+                                                       '',
+                                                       'id="SET[' . $type . ']"'
+                                               ) . '<label for="SET[' . $type . ']">' . $translation . '</label>';
+                                               $hookSectionMarker['option'] = $option;
+                                               $hookSectionContent .= t3lib_parsehtml::substituteMarkerArray($hookSectionTemplate, $hookSectionMarker, '###|###', TRUE, TRUE);
+                                       }
+                               }
+                       }
+               }
+
+               $checkOptionsTemplate = t3lib_parsehtml::substituteSubpart($checkOptionsTemplate, '###HOOK_SECTION###', $hookSectionContent);
+
+               return t3lib_parsehtml::substituteMarkerArray($checkOptionsTemplate, $markerArray, '###|###', TRUE, TRUE);
+       }
+
+
+       /**
+        * Loads data in the HTML head section (e.g. JavaScript or stylesheet information).
+        *
+        * @return void
+        */
+       private function loadHeaderData() {
+               $this->doc->addStyleSheet('linkvalidator', $this->relativePath . 'res/linkvalidator.css', 'linkvalidator');
+       }
+
+
+       /**
+        * Gets the buttons that shall be rendered in the docHeader.
+        *
+        * @return array Available buttons for the docHeader
+        */
+       private function getDocHeaderButtons() {
+               $buttons = array(
+                       'csh' => t3lib_BEfunc::cshItem('_MOD_web_func', '', $GLOBALS['BACK_PATH']),
+                       'shortcut' => $this->getShortcutButton(),
+                       'save' => ''
+               );
+               return $buttons;
+       }
+
+
+       /**
+        * Gets the button to set a new shortcut in the backend (if current user is allowed to).
+        *
+        * @return string HTML representiation of the shortcut button
+        */
+       private function getShortcutButton() {
+               $result = '';
+               if ($GLOBALS['BE_USER']->mayMakeShortcut()) {
+                       $result = $this->doc->makeShortcutIcon('', 'function', $this->MCONF['name']);
+               }
+               return $result;
+       }
+
+
+       /**
+        * Gets the filled markers that are used in the HTML template.
+        *
+        * @return array The filled marker array
+        */
+       private function getTemplateMarkers() {
+
+               $markers = array(
+                       'FIRST_STEPS'           => $this->firstSteps,
+                       'FUNC_MENU'             => $this->getLevelSelector(),
+                       'CONTENT'               => $this->content,
+                       'TITLE'                 => $GLOBALS['LANG']->getLL('title'),
+                       'CHECKALLLINK'          => $this->checkAllHtml,
+                       'CHECKOPTIONS'          => $this->checkOptHtml,
+                       'ID'                    => '<input type="hidden" name="id" value="' . $this->pObj->id . '"/>',
+                       'REFRESH'               => $this->refreshListHtml,
+                       'UPDATE'                => $this->updateListHtml
+               );
+
+               return $markers;
+       }
+
+
+       /**
+        * Determines whether the current user is an admin.
+        *
+        * @return boolean Whether the current user is admin
+        */
+       private function isCurrentUserAdmin() {
+               return ((bool) $GLOBALS['BE_USER']->user['admin']);
+       }
+}
+
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/modfuncreport/class.tx_linkvalidator_modfuncreport.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/modfuncreport/class.tx_linkvalidator_modfuncreport.php']);
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/linkvalidator/modfuncreport/locallang.xml b/typo3/sysext/linkvalidator/modfuncreport/locallang.xml
new file mode 100644 (file)
index 0000000..a6388a0
--- /dev/null
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3locallang>
+       <meta type="array">
+               <description>Labels for the linkvalidator Backend module.</description>
+               <type>module</type>
+               <csh_table></csh_table>
+               <labelContext type="array">
+               </labelContext>
+       </meta>
+       <data type="array">
+               <languageKey index="default" type="array">
+                       <label index="title">Check Links</label>
+                       <label index="menu.introduction">Introduction</label>
+                       <label index="menu.checkLinks">Check Links for validity</label>
+                       <label index="menu.overview">Overview of links on website</label>
+                       <label index="overview.header">Overview - choose options to check the links</label>
+                       <label index="overview.all.header">Total amounts in tt_content</label>
+                       <label index="overview.all.records">Records with ext. links:</label>
+                       <label index="overview.all.links">External links:</label>
+                       <label index="overview.branch.header">Amounts from actual branch in tt_content</label>
+                       <label index="overview.branch.records">Records with ext. links:</label>
+                       <label index="overview.branch.links">External links:</label>
+                       <label index="overview.attention.header">Attention:</label>
+                       <label index="overview.attention.text">Checking links may take up to several minutes. Checking ONE link can last up to 3 seconds.</label>
+                       <label index="first.steps">Choose the level of pages to check and press "Refresh display" to show the results.</label>
+                       <label index="first.steps.info.update.button">You can update the stored results by pressing "Check links". Note that this process can take some time.</label>
+                       <label index="first.steps.info.scheduler">Alternatively you can also configure the %sTYPO3 Scheduler%s to update the stored results regularly.</label>
+                       <label index="first.steps.info.scheduler.admin">Alternatively your administrator can also configure the TYPO3 Scheduler to update the stored results regularly.</label>
+                       <label index="label_refresh">Refresh display</label>
+                       <label index="label_update">Check links</label>
+                       <label index="overviews.statistics.header">Statistics of broken Links</label>
+                       <label index="overviews.nbtotal">Broken links total:</label>
+                       <label index="hooks.db">Internal Links:</label>
+                       <label index="hooks.file">File Links:</label>
+                       <label index="hooks.external">External Links:</label>
+                       <label index="hooks.linkhandler">Linkhandler Links:</label>
+                       <label index="list.header">Listing of broken links</label>
+                       <label index="list.tableHead.path">Path</label>
+                       <label index="list.tableHead.element">Element</label>
+                       <label index="list.tableHead.headlink">Link</label>
+                       <label index="list.tableHead.linktarget">URL / Link Target</label>
+                       <label index="list.tableHead.linkmessage">Error message</label>
+                       <label index="list.tableHead.lastCheck">Last check</label>
+                       <label index="list.edit">Edit element containing this broken link</label>
+                       <label index="list.field">(Field: %s)</label>
+                       <label index="list.no.headline">no headline</label>
+                       <label index="list.report.pagedeleted">Page '###title###' (###uid###) is deleted.</label>
+                       <label index="list.report.pagenotvisible">Page '###title###' (###uid###) is not visible.</label>
+                       <label index="list.report.pagenotexisting">Page (###uid###) does not exist.</label>
+                       <label index="list.report.contentmoved">Element '###title###' (###uid###) is not located on page ###wrongpage###, but on page ###rightpage###.</label>
+                       <label index="list.report.contentdeleted">Element '###title###' (###uid###) is deleted.</label>
+                       <label index="list.report.contentnotvisible">Element '###title###' (###uid###) is not visible.</label>
+                       <label index="list.report.contentnotexisting">Element (###uid###) does not exist.</label>
+                       <label index="list.report.rowdeleted">###title### row (###uid###) is deleted.</label>
+                       <label index="list.report.rowdeleted.default.title">Linked</label>
+                       <label index="list.report.rownotexisting">Row (###uid###) does not exist.</label>
+                       <label index="list.report.noresponse">External Link not reachable.</label>
+                       <label index="list.report.redirectloop">A redirect loop occurred. (%s: %s)</label>
+                       <label index="list.report.pageforbidden403">Accessing this address is not allowed (403).</label>
+                       <label index="list.report.pagenotfound404">The requested url was not found (404).</label>
+                       <label index="list.report.externalerror">External Link returned HTTP error code (%s).</label>
+                       <label index="list.report.filenotexisting">File doesn't exist.</label>
+                       <label index="list.report.timeout">Operation timeout. The specified time-out period was reached according to the conditions.</label>
+                       <label index="list.report.internalerror500">Internal Server Error (500)</label>
+                       <label index="list.report.couldnotresolvehost">Could not resolve host. The given remote host was not resolved.</label>
+                       <label index="list.report.errornetworkdata">Failure with receiving network data.</label>
+                       <label index="list.msg.ok">Ok</label>
+                       <label index="list.msg.lastRun">%1$s %2$s</label>
+                       <label index="list.no.broken.links.title">No broken links to show!</label>
+                       <label index="list.no.broken.links">There are no broken links to be displayed.</label>
+                       <label index="no.access.title">No access!</label>
+                       <label index="no.access">You do not have access to these listings.</label>
+               </languageKey>
+       </data>
+</T3locallang>
diff --git a/typo3/sysext/linkvalidator/modfuncreport/locallang_csh.xml b/typo3/sysext/linkvalidator/modfuncreport/locallang_csh.xml
new file mode 100644 (file)
index 0000000..3856287
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3locallang>
+       <meta type="array">
+               <description>CSH for linkvalidator labels</description>
+               <type>CSH</type>
+               <csh_table>linkvalidator</csh_table>
+       </meta>
+       <data type="array">
+               <languageKey index="default" type="array">
+                       <label index="checkboxes.description">Click the following checkboxes to display or to hide the corresponding broken links.</label>
+                       <label index="tablehead_path.description">Path to the content element, which contains the broken link.</label>
+                       <label index="tablehead_element.description">Type of the element containing the broken link, its headline and the field in which the broken link is located.</label>
+                       <label index="tablehead_headlink.description">The linking text.</label>
+                       <label index="tablehead_linktarget.description">URL to which the broken link is pointing.</label>
+                       <label index="tablehead_linkmessage.description">Status of that link.</label>
+                       <label index="tablehead_lastcheck.description">Date and time of the last update of the information in each table row.</label>
+                       <label index="task_page.alttitle">Start page of the task</label>
+                       <label index="task_page.description">UID of the start page for this task.</label>
+                       <label index="task_depth.alttitle">Depth of the task</label>
+                       <label index="task_depth.description">Level of pages the task should check.</label>
+                       <label index="task_configuration.alttitle">Special TSconfig code</label>
+                       <label index="task_configuration.description">TSconfig Code which defines settings for linkvalidator to be used for this task.</label>
+                       <label index="task_email.alttitle">Email address</label>
+                       <label index="task_email.description">Email address to which an email report is sent.</label>
+                       <label index="task_emailonbrokenlinkonly.alttitle">Mailing option</label>
+                       <label index="task_emailonbrokenlinkonly.description">Only send an email, if new broken links were found.</label>
+                       <label index="task_emailfile.alttitle">Email template file</label>
+                       <label index="task_emailfile.description">Define a template to be used for the email.</label>
+               </languageKey>
+       </data>
+</T3locallang>
\ No newline at end of file
diff --git a/typo3/sysext/linkvalidator/modfuncreport/locallang_mod.xml b/typo3/sysext/linkvalidator/modfuncreport/locallang_mod.xml
new file mode 100644 (file)
index 0000000..9631ef1
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3locallang>
+       <meta type="array">
+               <description>Labels for linkvalidator.</description>
+               <type>module</type>
+               <csh_table></csh_table>
+               <labelContext type="array">
+               </labelContext>
+       </meta>
+       <data type="array">
+               <languageKey index="default" type="array">
+                       <label index="mlang_tabs_tab">Check Links</label>
+                       <label index="mlang_labels_tabdescr">Checks the links in your website for validity.</label>
+                       <label index="mlang_labels_tablabel">Validates links</label>
+               </languageKey>
+       </data>
+</T3locallang>
diff --git a/typo3/sysext/linkvalidator/modfuncreport/mod_template.html b/typo3/sysext/linkvalidator/modfuncreport/mod_template.html
new file mode 100644 (file)
index 0000000..11f9cd3
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- ###FULLDOC### begin -->
+                       <h3>###TITLE###</h3>
+                       <p id="linkvalidator_firstSteps">###FIRST_STEPS###</p>
+                       <div class="linkvalidator_funcmenu">###FUNC_MENU######REFRESH######UPDATE###</div>
+                       <div class="linkvalidator_checkoptions">
+                               ###ID###
+                               ###CHECKALLLINK###
+                               ###CHECKOPTIONS###
+                       </div>
+                       ###CONTENT###
+<!-- ###FULLDOC### end -->
+
+
+<!-- ###CHECKOPTIONS_SECTION### begin -->
+       ###STATISTICS_HEADER###
+       <table class="typo3-dblist" id="linkvalidator_statsTable" cellspacing="0" cellpadding="0">
+               <tr class="t3-row-header">
+                       <td>
+                               ###TOTAL_COUNT_LABEL###
+                       </td>
+                       <td class="number">###TOTAL_COUNT###</td>
+               </tr>
+               <!-- ###HOOK_SECTION### begin -->
+               <tr class="db_list_normal">
+                       <td>
+                               <div class="linkvalidator_singleOption">###OPTION###</div>
+                       </td>
+                       <td class="number">###COUNT###</td>
+               </tr>
+               <!-- ###HOOK_SECTION### end -->
+       </table>
+<!-- ###CHECKOPTIONS_SECTION### end -->
+
+
+<!-- ###BROKENLINKS_CONTENT### begin -->
+       ###LIST_HEADER###
+       <table class="typo3-dblist" id="linkvalidator_brokenLinksTable" cellspacing="0" cellpadding="0">
+               <tr class="t3-row-header">
+                       <td></td>
+                       <td>###TABLEHEAD_PATH###</td>
+                       <td>###TABLEHEAD_ELEMENT###</td>
+                       <td>###TABLEHEAD_HEADLINK###</td>
+                       <td>###TABLEHEAD_LINKTARGET###</td>
+                       <td>###TABLEHEAD_LINKMESSAGE###</td>
+                       <td>###TABLEHEAD_LASTCHECK###</td>
+               </tr>
+               <!-- ###BROKENLINKS_ITEM### begin -->
+               <tr class="db_list_normal">
+                       <td>###ACTIONLINK###</td>
+                       <td>###PATH###</td>
+                       <td>###ELEMENT###</td>
+                       <td>###HEADLINK###</td>
+                       <td><a href="###LINKTARGET###" target="_blank">###LINKTARGET###</a></td>
+                       <td>###LINKMESSAGE###</td>
+                       <td>###LASTCHECK###</td>
+               </tr>
+               <!-- ###BROKENLINKS_ITEM### end -->
+       </table>
+<!-- ###BROKENLINKS_CONTENT### end -->
+
+<!-- ###NOBROKENLINKS_CONTENT### begin -->
+       ###LIST_HEADER###
+       ###NO_BROKEN_LINKS###
+<!-- ###NOBROKENLINKS_CONTENT### end -->
diff --git a/typo3/sysext/linkvalidator/modreport/class.tx_linkvalidator_modreport.php b/typo3/sysext/linkvalidator/modreport/class.tx_linkvalidator_modreport.php
deleted file mode 100644 (file)
index ffea934..0000000
+++ /dev/null
@@ -1,655 +0,0 @@
-<?php
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2005 - 2010 Jochen Rieger (j.rieger@connecta.ag) 
- *  (c) 2010 - 2011 Michael Miousse (michael.miousse@infoglobe.ca)
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *
- *  This script 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.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Module 'Link Validator' for the 'linkvalidator' extension.
- *
- * @author Michael Miousse <michael.miousse@infoglobe.ca>
- * @author Jochen Rieger <j.rieger@connecta.ag>
- * @package TYPO3
- * @subpackage linkvalidator
- */
-class tx_linkvalidator_modreport extends t3lib_extobjbase {
-
-       /**
-        * @var template
-        */
-       public $doc;
-
-       /**
-        * @var string
-        */
-       protected $relativePath;
-
-       /**
-        * Information about the current page record.
-        *
-        * @var array
-        */
-       protected $pageRecord = array();
-
-       /**
-        * Information, if the module is accessible for the current user or not.
-        *
-        * @var boolean
-        */
-       protected $isAccessibleForCurrentUser = FALSE;
-
-       /**
-        * Depth for the recursivity of the link validation.
-        *
-        * @var integer
-        */
-       protected $search_level;
-
-       /**
-        * Link validation class.
-        *
-        * @var tx_linkvalidator_processing
-        */
-       protected $processing;
-
-       /**
-        * TSconfig of the current module.
-        *
-        * @var array
-        */
-       protected $modTS = array();
-
-       /**
-        * List of available link types to check defined in the TSconfig.
-        *
-        * @var array
-        */
-       protected $availableOptions = array();
-
-       /**
-        * List of link types currently chosen in the Statistics table.
-        * Used to show broken links of these types only.
-        *
-        * @var array
-        */
-       protected $checkOpt = array();
-
-       /**
-        * Hint message displayed on top of the module.
-        *
-        * @var string
-        */
-       protected $firstSteps;
-
-       /**
-        * Html for the button "Check Links".
-        *
-        * @var string
-        */
-       protected $updateListHtml;
-
-       /**
-        * Html for the button "Refresh Display".
-        *
-        * @var string
-        */
-       protected $refreshListHtml;
-
-       /**
-        * Html for the Statistics table with the checkboxes of the link types and the numbers of broken links.
-        *
-        * @var string
-        */
-       protected $checkOptHtml;
-
-       /**
-        * Complete content (html) to be displayed.
-        *
-        * @var string
-        */
-       protected $content;
-
-       /**
-        * Main method of modreport
-        *
-        * @return string Module content
-        */
-       public function main() {
-               $GLOBALS['LANG']->includeLLFile('EXT:linkvalidator/modreport/locallang.xml');
-
-               $this->search_level = t3lib_div::_GP('search_levels');
-
-               if (isset($this->pObj->id)) {
-                       $this->modTS = t3lib_BEfunc::getModTSconfig($this->pObj->id, 'mod.linkvalidator');
-                       $this->modTS = $this->modTS['properties'];
-               }
-
-               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
-                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $value) {
-                                       // Compile list of all available types. Used for checking with button "Check Links".
-                               if (strpos($this->modTS['linktypes'], $linkType) !== FALSE) {
-                                       $this->availableOptions[$linkType] = 1;
-                               }
-                                       // Compile list of types currently selected by the checkboxes.
-                               if ($this->pObj->MOD_SETTINGS[$linkType]) {
-                                       $this->checkOpt[$linkType] = 1;
-                               }
-                       }
-               }
-
-               $this->initialize();
-
-               $this->firstSteps = $GLOBALS['LANG']->getLL('first.steps');
-
-               if ($this->modTS['showUpdateButton'] == 1) {
-                       $this->firstSteps .= ' ' . $GLOBALS['LANG']->getLL('first.steps.info.update.button');
-                       $this->updateListHtml = '<input type="submit" name="updateLinkList" value="' . $GLOBALS['LANG']->getLL('label_update') . '"/>';
-               }
-
-               if (t3lib_extMgm::isLoaded('scheduler')) {
-                       if ($GLOBALS['BE_USER']->isAdmin()) {
-                               $this->firstSteps .= ' ' . 
-                               sprintf($GLOBALS['LANG']->getLL('first.steps.info.scheduler'),
-                                       '<a href="' . t3lib_div::getIndpEnv('TYPO3_SITE_URL') . 'typo3/mod.php?M=tools_txschedulerM1">', '</a>'
-                               );
-                       } else {
-                               $this->firstSteps .= ' ' . $GLOBALS['LANG']->getLL('first.steps.info.scheduler.admin');
-                       }
-               }
-
-               $this->refreshListHtml = '<input type="submit" name="refreshLinkList" value="' . $GLOBALS['LANG']->getLL('label_refresh') . '"/>';
-
-               $this->processing = t3lib_div::makeInstance('tx_linkvalidator_processing');
-               $this->updateBrokenLinks();
-
-               $brokenLinkOverView = $this->processing->getLinkCounts($this->pObj->id);
-               $this->checkOptHtml = $this->getCheckOptions($brokenLinkOverView);
-
-               $this->render();
-
-
-               return $this->flush();
-       }
-
-
-       /**
-        * Initializes the menu array internally.
-        *
-        * @return array Module menu
-        */
-       public function modMenu() {
-               $modMenu = array (
-                       'checkAllLink' => 0,
-               );
-
-               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
-                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $value) {
-                               $modMenu[$linkType] = 1;
-                       }
-               }
-
-               return $modMenu;
-       }
-
-
-       /**
-        * Initializes the Module.
-        *
-        * @return void
-        */
-       protected function initialize() {
-               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
-                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $classRef) {
-                               $this->hookObjectsArr[$linkType] = &t3lib_div::getUserObj($classRef);
-                       }
-               }
-
-               $this->doc = t3lib_div::makeInstance('template');
-               $this->doc->setModuleTemplate(t3lib_extMgm::extPath('linkvalidator') . 'modreport/mod_template.html');
-               $this->doc->backPath = $GLOBALS['BACK_PATH'];
-
-               $this->relativePath = t3lib_extMgm::extRelPath('linkvalidator');
-               $this->pageRecord = t3lib_BEfunc::readPageAccess($this->pObj->id, $this->perms_clause);
-
-               $this->isAccessibleForCurrentUser = FALSE;
-               if ($this->pObj->id && is_array($this->pageRecord) || !$this->pObj->id && $this->isCurrentUserAdmin()) {
-                       $this->isAccessibleForCurrentUser = TRUE;
-               }
-
-               $this->loadHeaderData();
-
-                       // Don't access in workspace
-               if ($GLOBALS['BE_USER']->workspace !== 0) {
-                       $this->isAccessibleForCurrentUser = FALSE;
-               }
-       }
-
-
-       /**
-        * Updates the table of stored broken links.
-        *
-        * @return void
-        */
-       protected function updateBrokenLinks() {
-               $searchFields = array();
-
-                       // get the searchFields from TypoScript
-               foreach ($this->modTS['searchFields.'] as $table => $fieldList) {
-                       $fields = t3lib_div::trimExplode(',', $fieldList);
-                       foreach ($fields as $field) {
-                               if (!$searchFields || !is_array($searchFields[$table]) || array_search($field, $searchFields[$table]) == FALSE) {
-                                       $searchFields[$table][] = $field;
-                               }
-                       }
-               }
-                       // get children pages
-               $pageList = $this->processing->extGetTreeList(
-                       $this->pObj->id,
-                       $this->search_level,
-                       0,
-                       $GLOBALS['BE_USER']->getPagePermsClause(1)
-               );
-               $pageList .= $this->pObj->id;
-
-               $this->processing->init($searchFields, $pageList);
-
-                       // check if button press
-               $update = t3lib_div::_GP('updateLinkList');
-
-               if (!empty($update)) {
-                       $this->processing->getLinkStatistics($this->availableOptions, $this->modTS['checkhidden']);
-               }
-       }
-
-
-       /**
-        * Renders the content of the module.
-        *
-        * @return void
-        */
-       protected function render() {
-               if ($this->isAccessibleForCurrentUser) {
-                       $this->content = $this->drawBrokenLinksTable();
-               } else {
-                               // If no access or if ID == zero
-                       $message = t3lib_div::makeInstance(
-                               't3lib_FlashMessage',
-                               $GLOBALS['LANG']->getLL('no.access'),
-                               $GLOBALS['LANG']->getLL('no.access.title'),
-                               t3lib_FlashMessage::ERROR
-                       );
-                       $this->content .= $message->render();
-               }
-       }
-
-
-       /**
-        * Flushes the rendered content to the browser.
-        *
-        * @return void
-        */
-       protected function flush() {
-               $content.= $this->doc->moduleBody(
-                       $this->pageRecord,
-                       $this->getDocHeaderButtons(),
-                       $this->getTemplateMarkers()
-               );
-
-               return $content;
-       }
-
-
-       /**
-        * Builds the selector for the level of pages to search.
-        *
-        * @return string Html code of that selector
-        */
-       private function getLevelSelector() {
-                       // Make level selector:
-               $opt = array();
-               $parts = array(
-                       0 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_0'),
-                       1 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_1'),
-                       2 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_2'),
-                       3 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_3'),
-                       999 => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.depth_infi'),
-               );
-
-               foreach ($parts as $kv => $label) {
-                       $opt[] = '<option value="' . $kv . '"' . ($kv == intval($this->search_level) ? ' selected="selected"' : '') . '>' . htmlspecialchars($label) . '</option>';
-               }
-               $lMenu = '<select name="search_levels">' . implode('', $opt) . '</select>';
-               return $lMenu;
-       }
-
-       /**
-        * Displays the table of broken links or a note if there were no broken links.
-        *
-        * @return html Content of the table or of the note
-        */
-       private function drawBrokenLinksTable() {
-               $content = '';
-               $items = array();
-               $brokenLinkItems = '';
-               $keyOpt = array();
-
-               if (is_array($this->checkOpt)) {
-                       $keyOpt = array_keys($this->checkOpt);
-               }
-
-               $pageList = $this->processing->extGetTreeList(
-                       $this->pObj->id,
-                       $this->search_level,
-                       0,
-                       $GLOBALS['BE_USER']->getPagePermsClause(1)
-               );
-               $pageList .= $this->pObj->id;
-
-               if (($res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                       '*',
-                       'tx_linkvalidator_link',
-                       'record_pid in (' . $pageList . ') and link_type in (\'' . implode("','", $keyOpt) . '\')',
-                       '',
-                       'record_uid ASC, uid ASC')
-               )) {
-                               // Display table with broken links
-                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) > 0) {
-                               $brokenLinksTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###BROKENLINKS_CONTENT###');
-
-                               $brokenLinksItemTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###BROKENLINKS_ITEM###');
-
-                                       // Table header
-                               $brokenLinksMarker = $this->startTable();
-
-                                       // Table rows containing the broken links
-                               while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) {
-                                       $items[] = $this->drawTableRow($row['table_name'], $row, $brokenLinksItemTemplate);
-                               }
-                               $brokenLinkItems = implode(chr(10), $items);
-
-                               // Display note that there are no broken links to display
-                       } else {
-                               $brokenLinksTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###NOBROKENLINKS_CONTENT###');
-
-                               $brokenLinksMarker['LIST_HEADER'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('list.header'));
-                               $message = t3lib_div::makeInstance(
-                                       't3lib_FlashMessage',
-                                       $GLOBALS['LANG']->getLL('list.no.broken.links'),
-                                       $GLOBALS['LANG']->getLL('list.no.broken.links.title'),
-                                       t3lib_FlashMessage::OK
-                               );
-                               $brokenLinksMarker['NO_BROKEN_LINKS'] = $message->render();
-                       }
-               }
-               $brokenLinksTemplate = t3lib_parsehtml::substituteMarkerArray($brokenLinksTemplate, $brokenLinksMarker, '###|###', TRUE);
-
-               $content = t3lib_parsehtml::substituteSubpart($brokenLinksTemplate, '###BROKENLINKS_ITEM', $brokenLinkItems);
-
-               return $content;
-       }
-
-
-
-       /**
-        * Displays the table header of the table with the broken links.
-        *
-        * @return string Code of content
-        */
-       private function startTable() {
-               global $TYPO3_CONF_VARS;
-
-                       // Listing head
-               $makerTableHead = array();
-
-               $makerTableHead['tablehead_path'] = $GLOBALS['LANG']->getLL('list.tableHead.path');
-               $makerTableHead['tablehead_element'] = $GLOBALS['LANG']->getLL('list.tableHead.element');
-               $makerTableHead['tablehead_headlink'] = $GLOBALS['LANG']->getLL('list.tableHead.headlink');
-               $makerTableHead['tablehead_linktarget'] = $GLOBALS['LANG']->getLL('list.tableHead.linktarget');
-               $makerTableHead['tablehead_linkmessage'] = $GLOBALS['LANG']->getLL('list.tableHead.linkmessage');
-               $makerTableHead['tablehead_lastcheck'] = $GLOBALS['LANG']->getLL('list.tableHead.lastCheck');
-
-                       // Add CSH to the header of each column
-               foreach($makerTableHead as $column => $label) {
-                       $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $column, $label);
-                       $makerTableHead[$column] = $label;
-               }
-
-                       // Add section header
-               $makerTableHead['list_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('list.header'));
-
-               return $makerTableHead;
-       }
-
-
-       /**
-        * Displays one line of the broken links table.
-        *
-        * @param string $table Name of database table
-        * @param array $row Record row to be processed
-        * @param string $brokenLinksItemTemplate Markup of the template to be used
-        * @return string HTML of the rendered row
-        */
-       private function drawTableRow($table, array $row, $brokenLinksItemTemplate) {
-               $markerArray = array();
-               if (is_array($row) && !empty($row['link_type'])) {
-                       if (($hookObj = $this->hookObjectsArr[$row['link_type']])) {
-                               $brokenUrl = $hookObj->getBrokenUrl($row);
-                       }
-               }
-
-               $params = '&edit[' . $table . '][' . $row['record_uid'] . ']=edit';
-               $actionLinks = '<a href="#" onclick="' .
-                               t3lib_BEfunc::editOnClick(
-                                       $params,
-                                       $GLOBALS['BACK_PATH'],
-                                       t3lib_div::getIndpEnv('REQUEST_URI') . '?id=' . $this->pObj->id . '&search_levels=' . $this->search_level
-                               ) . '"' .
-                               ' title="' . $GLOBALS['LANG']->getLL('list.edit') . '">' .
-                               t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>';
-
-               $elementHeadline = $row['headline'];
-               if (empty($elementHeadline)) {
-                       $elementHeadline = '<i>' . $GLOBALS['LANG']->getLL('list.no.headline') . '</i>';
-               }
-
-                       // Get the language label for the field from TCA
-               if ($GLOBALS['TCA'][$table]['columns'][$row['field']]['label']) {
-                       $fieldName = $GLOBALS['TCA'][$table]['columns'][$row['field']]['label'];
-                       $fieldName = $GLOBALS['LANG']->sL($fieldName);
-                               // Crop colon from end if present.
-                       if (substr($fieldName, '-1', '1') === ':') {
-                               $fieldName = substr($fieldName, '0', strlen($fieldName)-1);
-                       }
-               }
-                       // Fallback, if there is no label
-               $fieldName = $fieldName ? $fieldName : $row['field'];
-
-                       // column "Element"
-               $element = t3lib_iconWorks::getSpriteIconForRecord($table, $row, array('title' => $table . ':' . $row['record_uid']));
-               $element .= $elementHeadline;
-               $element .= ' ' . sprintf($GLOBALS['LANG']->getLL('list.field'), $fieldName);
-
-               $markerArray['actionlink'] = $actionLinks;
-               $markerArray['path'] = t3lib_BEfunc::getRecordPath($row['record_pid'], '', 0, 0);
-               $markerArray['element'] = $element; 
-               $markerArray['headlink'] = $row['link_title'];
-               $markerArray['linktarget'] = $brokenUrl;
-
-               $response = unserialize($row['url_response']);
-               if ($response['valid']) {
-                       $linkMessage = '<span style="color: green;">' . $GLOBALS['LANG']->getLL('list.msg.ok') . '</span>';
-               } else {
-                       $linkMessage = '<span style="color: red;">' . $hookObj->getErrorMessage($response['errorParams']) . '</span>';
-               }
-               $markerArray['linkmessage'] = $linkMessage;
-
-               $lastRunDate = date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'], $row['last_check']);
-               $lastRunTime = date($GLOBALS['TYPO3_CONF_VARS']['SYS']['hhmm'], $row['last_check']);
-               $message = sprintf($GLOBALS['LANG']->getLL('list.msg.lastRun'), $lastRunDate, $lastRunTime);
-               $markerArray['lastcheck'] = $message;
-
-                       // Return the table html code as string
-               return t3lib_parsehtml::substituteMarkerArray($brokenLinksItemTemplate, $markerArray, '###|###', TRUE, TRUE);
-       }
-
-
-       /**
-        * Builds the checkboxes out of the hooks array.
-        *
-        * @param array $brokenLinkOverView array of broken links information
-        * @return string code content
-        */
-       private function getCheckOptions(array $brokenLinkOverView) {
-               $content = '';
-               $checkOptionsTemplate = '';
-               $checkOptionsTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###CHECKOPTIONS_SECTION###');
-
-               $hookSectionContent = '';
-               $hookSectionTemplate = t3lib_parsehtml::getSubpart($checkOptionsTemplate, '###HOOK_SECTION###');
-
-               $markerArray['statistics_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('overviews.statistics.header'));
-
-               $totalCountLabel = $GLOBALS['LANG']->getLL('overviews.nbtotal');
-               $totalCountLabel = t3lib_BEfunc::wrapInHelp('linkvalidator', 'checkboxes', $totalCountLabel);
-               $markerArray['total_count_label'] = $totalCountLabel;
-
-               if (empty($brokenLinkOverView['brokenlinkCount'])) {
-                       $markerArray['total_count'] = '0';
-               } else {
-                       $markerArray['total_count'] = $brokenLinkOverView['brokenlinkCount'];
-               }
-
-               $linktypes = t3lib_div::trimExplode(',', $this->modTS['linktypes'], 1);
-               $hookSectionContent = '';
-
-               if (is_array($linktypes)) {
-                       if (!empty($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])
-                               && is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])
-                       ) {
-                               foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $type => $value) {
-                                       if (in_array($type, $linktypes)) {
-                                               $hookSectionMarker = array();
-                                               if (empty($brokenLinkOverView[$type])) {
-                                                       $hookSectionMarker['count'] = '0';
-                                               } else {
-                                                       $hookSectionMarker['count'] = $brokenLinkOverView[$type];
-                                               }
-                                               $translation = $GLOBALS['LANG']->getLL('hooks.' . $type);
-                                               $translation = $translation ? $translation : $type;
-                                               $option = t3lib_BEfunc::getFuncCheck(
-                                                       array('id' => $this->pObj->id, 'search_levels' => $this->search_level),
-                                                       'SET[' . $type . ']',
-                                                       $this->pObj->MOD_SETTINGS[$type],
-                                                       '',
-                                                       '',
-                                                       'id="SET[' . $type . ']"'
-                                               ) . '<label for="SET[' . $type . ']">' . $translation . '</label>';
-                                               $hookSectionMarker['option'] = $option;
-                                               $hookSectionContent .= t3lib_parsehtml::substituteMarkerArray($hookSectionTemplate, $hookSectionMarker, '###|###', TRUE, TRUE);
-                                       }
-                               }
-                       }
-               }
-
-               $checkOptionsTemplate = t3lib_parsehtml::substituteSubpart($checkOptionsTemplate, '###HOOK_SECTION###', $hookSectionContent);
-
-               return t3lib_parsehtml::substituteMarkerArray($checkOptionsTemplate, $markerArray, '###|###', TRUE, TRUE);
-       }
-
-
-       /**
-        * Loads data in the HTML head section (e.g. JavaScript or stylesheet information).
-        *
-        * @return void
-        */
-       private function loadHeaderData() {
-               $this->doc->addStyleSheet('linkvalidator', $this->relativePath . 'res/linkvalidator.css', 'linkvalidator');
-       }
-
-
-       /**
-        * Gets the buttons that shall be rendered in the docHeader.
-        *
-        * @return array Available buttons for the docHeader
-        */
-       private function getDocHeaderButtons() {
-               $buttons = array(
-                       'csh' => t3lib_BEfunc::cshItem('_MOD_web_func', '', $GLOBALS['BACK_PATH']),
-                       'shortcut' => $this->getShortcutButton(),
-                       'save' => ''
-               );
-               return $buttons;
-       }
-
-
-       /**
-        * Gets the button to set a new shortcut in the backend (if current user is allowed to).
-        *
-        * @return string HTML representiation of the shortcut button
-        */
-       private function getShortcutButton() {
-               $result = '';
-               if ($GLOBALS['BE_USER']->mayMakeShortcut()) {
-                       $result = $this->doc->makeShortcutIcon('', 'function', $this->MCONF['name']);
-               }
-               return $result;
-       }
-
-
-       /**
-        * Gets the filled markers that are used in the HTML template.
-        *
-        * @return array The filled marker array
-        */
-       private function getTemplateMarkers() {
-
-               $markers = array(
-                       'FIRST_STEPS'           => $this->firstSteps,
-                       'FUNC_MENU'             => $this->getLevelSelector(),
-                       'CONTENT'               => $this->content,
-                       'TITLE'                 => $GLOBALS['LANG']->getLL('title'),
-                       'CHECKALLLINK'          => $this->checkAllHtml,
-                       'CHECKOPTIONS'          => $this->checkOptHtml,
-                       'ID'                    => '<input type="hidden" name="id" value="' . $this->pObj->id . '"/>',
-                       'REFRESH'               => $this->refreshListHtml,
-                       'UPDATE'                => $this->updateListHtml
-               );
-
-               return $markers;
-       }
-
-
-       /**
-        * Determines whether the current user is an admin.
-        *
-        * @return boolean Whether the current user is admin
-        */
-       private function isCurrentUserAdmin() {
-               return ((bool) $GLOBALS['BE_USER']->user['admin']);
-       }
-}
-
-if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/modreport/class.tx_linkvalidator_modreport.php'])) {
-       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/modreport/class.tx_linkvalidator_modreport.php']);
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/linkvalidator/modreport/locallang.xml b/typo3/sysext/linkvalidator/modreport/locallang.xml
deleted file mode 100644 (file)
index a6388a0..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<T3locallang>
-       <meta type="array">
-               <description>Labels for the linkvalidator Backend module.</description>
-               <type>module</type>
-               <csh_table></csh_table>
-               <labelContext type="array">
-               </labelContext>
-       </meta>
-       <data type="array">
-               <languageKey index="default" type="array">
-                       <label index="title">Check Links</label>
-                       <label index="menu.introduction">Introduction</label>
-                       <label index="menu.checkLinks">Check Links for validity</label>
-                       <label index="menu.overview">Overview of links on website</label>
-                       <label index="overview.header">Overview - choose options to check the links</label>
-                       <label index="overview.all.header">Total amounts in tt_content</label>
-                       <label index="overview.all.records">Records with ext. links:</label>
-                       <label index="overview.all.links">External links:</label>
-                       <label index="overview.branch.header">Amounts from actual branch in tt_content</label>
-                       <label index="overview.branch.records">Records with ext. links:</label>
-                       <label index="overview.branch.links">External links:</label>
-                       <label index="overview.attention.header">Attention:</label>
-                       <label index="overview.attention.text">Checking links may take up to several minutes. Checking ONE link can last up to 3 seconds.</label>
-                       <label index="first.steps">Choose the level of pages to check and press "Refresh display" to show the results.</label>
-                       <label index="first.steps.info.update.button">You can update the stored results by pressing "Check links". Note that this process can take some time.</label>
-                       <label index="first.steps.info.scheduler">Alternatively you can also configure the %sTYPO3 Scheduler%s to update the stored results regularly.</label>
-                       <label index="first.steps.info.scheduler.admin">Alternatively your administrator can also configure the TYPO3 Scheduler to update the stored results regularly.</label>
-                       <label index="label_refresh">Refresh display</label>
-                       <label index="label_update">Check links</label>
-                       <label index="overviews.statistics.header">Statistics of broken Links</label>
-                       <label index="overviews.nbtotal">Broken links total:</label>
-                       <label index="hooks.db">Internal Links:</label>
-                       <label index="hooks.file">File Links:</label>
-                       <label index="hooks.external">External Links:</label>
-                       <label index="hooks.linkhandler">Linkhandler Links:</label>
-                       <label index="list.header">Listing of broken links</label>
-                       <label index="list.tableHead.path">Path</label>
-                       <label index="list.tableHead.element">Element</label>
-                       <label index="list.tableHead.headlink">Link</label>
-                       <label index="list.tableHead.linktarget">URL / Link Target</label>
-                       <label index="list.tableHead.linkmessage">Error message</label>
-                       <label index="list.tableHead.lastCheck">Last check</label>
-                       <label index="list.edit">Edit element containing this broken link</label>
-                       <label index="list.field">(Field: %s)</label>
-                       <label index="list.no.headline">no headline</label>
-                       <label index="list.report.pagedeleted">Page '###title###' (###uid###) is deleted.</label>
-                       <label index="list.report.pagenotvisible">Page '###title###' (###uid###) is not visible.</label>
-                       <label index="list.report.pagenotexisting">Page (###uid###) does not exist.</label>
-                       <label index="list.report.contentmoved">Element '###title###' (###uid###) is not located on page ###wrongpage###, but on page ###rightpage###.</label>
-                       <label index="list.report.contentdeleted">Element '###title###' (###uid###) is deleted.</label>
-                       <label index="list.report.contentnotvisible">Element '###title###' (###uid###) is not visible.</label>
-                       <label index="list.report.contentnotexisting">Element (###uid###) does not exist.</label>
-                       <label index="list.report.rowdeleted">###title### row (###uid###) is deleted.</label>
-                       <label index="list.report.rowdeleted.default.title">Linked</label>
-                       <label index="list.report.rownotexisting">Row (###uid###) does not exist.</label>
-                       <label index="list.report.noresponse">External Link not reachable.</label>
-                       <label index="list.report.redirectloop">A redirect loop occurred. (%s: %s)</label>
-                       <label index="list.report.pageforbidden403">Accessing this address is not allowed (403).</label>
-                       <label index="list.report.pagenotfound404">The requested url was not found (404).</label>
-                       <label index="list.report.externalerror">External Link returned HTTP error code (%s).</label>
-                       <label index="list.report.filenotexisting">File doesn't exist.</label>
-                       <label index="list.report.timeout">Operation timeout. The specified time-out period was reached according to the conditions.</label>
-                       <label index="list.report.internalerror500">Internal Server Error (500)</label>
-                       <label index="list.report.couldnotresolvehost">Could not resolve host. The given remote host was not resolved.</label>
-                       <label index="list.report.errornetworkdata">Failure with receiving network data.</label>
-                       <label index="list.msg.ok">Ok</label>
-                       <label index="list.msg.lastRun">%1$s %2$s</label>
-                       <label index="list.no.broken.links.title">No broken links to show!</label>
-                       <label index="list.no.broken.links">There are no broken links to be displayed.</label>
-                       <label index="no.access.title">No access!</label>
-                       <label index="no.access">You do not have access to these listings.</label>
-               </languageKey>
-       </data>
-</T3locallang>
diff --git a/typo3/sysext/linkvalidator/modreport/locallang_csh.xml b/typo3/sysext/linkvalidator/modreport/locallang_csh.xml
deleted file mode 100644 (file)
index 3856287..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<T3locallang>
-       <meta type="array">
-               <description>CSH for linkvalidator labels</description>
-               <type>CSH</type>
-               <csh_table>linkvalidator</csh_table>
-       </meta>
-       <data type="array">
-               <languageKey index="default" type="array">
-                       <label index="checkboxes.description">Click the following checkboxes to display or to hide the corresponding broken links.</label>
-                       <label index="tablehead_path.description">Path to the content element, which contains the broken link.</label>
-                       <label index="tablehead_element.description">Type of the element containing the broken link, its headline and the field in which the broken link is located.</label>
-                       <label index="tablehead_headlink.description">The linking text.</label>
-                       <label index="tablehead_linktarget.description">URL to which the broken link is pointing.</label>
-                       <label index="tablehead_linkmessage.description">Status of that link.</label>
-                       <label index="tablehead_lastcheck.description">Date and time of the last update of the information in each table row.</label>
-                       <label index="task_page.alttitle">Start page of the task</label>
-                       <label index="task_page.description">UID of the start page for this task.</label>
-                       <label index="task_depth.alttitle">Depth of the task</label>
-                       <label index="task_depth.description">Level of pages the task should check.</label>
-                       <label index="task_configuration.alttitle">Special TSconfig code</label>
-                       <label index="task_configuration.description">TSconfig Code which defines settings for linkvalidator to be used for this task.</label>
-                       <label index="task_email.alttitle">Email address</label>
-                       <label index="task_email.description">Email address to which an email report is sent.</label>
-                       <label index="task_emailonbrokenlinkonly.alttitle">Mailing option</label>
-                       <label index="task_emailonbrokenlinkonly.description">Only send an email, if new broken links were found.</label>
-                       <label index="task_emailfile.alttitle">Email template file</label>
-                       <label index="task_emailfile.description">Define a template to be used for the email.</label>
-               </languageKey>
-       </data>
-</T3locallang>
\ No newline at end of file
diff --git a/typo3/sysext/linkvalidator/modreport/locallang_mod.xml b/typo3/sysext/linkvalidator/modreport/locallang_mod.xml
deleted file mode 100644 (file)
index 9631ef1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<T3locallang>
-       <meta type="array">
-               <description>Labels for linkvalidator.</description>
-               <type>module</type>
-               <csh_table></csh_table>
-               <labelContext type="array">
-               </labelContext>
-       </meta>
-       <data type="array">
-               <languageKey index="default" type="array">
-                       <label index="mlang_tabs_tab">Check Links</label>
-                       <label index="mlang_labels_tabdescr">Checks the links in your website for validity.</label>
-                       <label index="mlang_labels_tablabel">Validates links</label>
-               </languageKey>
-       </data>
-</T3locallang>
diff --git a/typo3/sysext/linkvalidator/modreport/mod_template.html b/typo3/sysext/linkvalidator/modreport/mod_template.html
deleted file mode 100644 (file)
index 11f9cd3..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<!-- ###FULLDOC### begin -->
-                       <h3>###TITLE###</h3>
-                       <p id="linkvalidator_firstSteps">###FIRST_STEPS###</p>
-                       <div class="linkvalidator_funcmenu">###FUNC_MENU######REFRESH######UPDATE###</div>
-                       <div class="linkvalidator_checkoptions">
-                               ###ID###
-                               ###CHECKALLLINK###
-                               ###CHECKOPTIONS###
-                       </div>
-                       ###CONTENT###
-<!-- ###FULLDOC### end -->
-
-
-<!-- ###CHECKOPTIONS_SECTION### begin -->
-       ###STATISTICS_HEADER###
-       <table class="typo3-dblist" id="linkvalidator_statsTable" cellspacing="0" cellpadding="0">
-               <tr class="t3-row-header">
-                       <td>
-                               ###TOTAL_COUNT_LABEL###
-                       </td>
-                       <td class="number">###TOTAL_COUNT###</td>
-               </tr>
-               <!-- ###HOOK_SECTION### begin -->
-               <tr class="db_list_normal">
-                       <td>
-                               <div class="linkvalidator_singleOption">###OPTION###</div>
-                       </td>
-                       <td class="number">###COUNT###</td>
-               </tr>
-               <!-- ###HOOK_SECTION### end -->
-       </table>
-<!-- ###CHECKOPTIONS_SECTION### end -->
-
-
-<!-- ###BROKENLINKS_CONTENT### begin -->
-       ###LIST_HEADER###
-       <table class="typo3-dblist" id="linkvalidator_brokenLinksTable" cellspacing="0" cellpadding="0">
-               <tr class="t3-row-header">
-                       <td></td>
-                       <td>###TABLEHEAD_PATH###</td>
-                       <td>###TABLEHEAD_ELEMENT###</td>
-                       <td>###TABLEHEAD_HEADLINK###</td>
-                       <td>###TABLEHEAD_LINKTARGET###</td>
-                       <td>###TABLEHEAD_LINKMESSAGE###</td>
-                       <td>###TABLEHEAD_LASTCHECK###</td>
-               </tr>
-               <!-- ###BROKENLINKS_ITEM### begin -->
-               <tr class="db_list_normal">
-                       <td>###ACTIONLINK###</td>
-                       <td>###PATH###</td>
-                       <td>###ELEMENT###</td>
-                       <td>###HEADLINK###</td>
-                       <td><a href="###LINKTARGET###" target="_blank">###LINKTARGET###</a></td>
-                       <td>###LINKMESSAGE###</td>
-                       <td>###LASTCHECK###</td>
-               </tr>
-               <!-- ###BROKENLINKS_ITEM### end -->
-       </table>
-<!-- ###BROKENLINKS_CONTENT### end -->
-
-<!-- ###NOBROKENLINKS_CONTENT### begin -->
-       ###LIST_HEADER###
-       ###NO_BROKEN_LINKS###
-<!-- ###NOBROKENLINKS_CONTENT### end -->