├── LICENSE ├── README.md ├── composer.json ├── modman └── src ├── app ├── code │ └── community │ │ └── Itabs │ │ └── LogViewer │ │ ├── Block │ │ └── Adminhtml │ │ │ ├── Console.php │ │ │ └── Console │ │ │ └── Files.php │ │ ├── Helper │ │ └── Data.php │ │ ├── Model │ │ ├── Config │ │ │ └── Source │ │ │ │ └── Lines.php │ │ └── Reader.php │ │ ├── Test │ │ ├── Config │ │ │ ├── Config.php │ │ │ └── Config │ │ │ │ └── expectations │ │ │ │ └── globalConfig.yaml │ │ ├── Helper │ │ │ └── Data.php │ │ └── Model │ │ │ └── Config │ │ │ └── Source │ │ │ ├── Lines.php │ │ │ └── Lines │ │ │ └── _data │ │ │ ├── ex-toOptionArray.yaml │ │ │ └── ex-toOptionHash.yaml │ │ ├── controllers │ │ └── Adminhtml │ │ │ └── LogviewerController.php │ │ └── etc │ │ ├── adminhtml.xml │ │ └── config.xml ├── design │ └── adminhtml │ │ └── default │ │ └── default │ │ ├── layout │ │ └── itabs │ │ │ └── logviewer.xml │ │ └── template │ │ └── itabs │ │ └── logviewer │ │ ├── console.phtml │ │ └── console │ │ └── files.phtml ├── etc │ └── modules │ │ └── Itabs_LogViewer.xml └── locale │ └── de_DE │ └── Itabs_LogViewer.csv └── skin └── adminhtml └── default └── default └── itabs └── logviewer └── styles.css /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 ITABS GmbH 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Itabs_LogViewer 2 | =============== 3 | 4 | This extension provides the possibility to view log files in the backend. 5 | 6 | Facts 7 | ----- 8 | - Version: 1.0.0 9 | - [extension on GitHub](https://github.com/itabs/Itabs_LogViewer) 10 | 11 | Compatibility 12 | ------------- 13 | - Magento >= 1.6 14 | 15 | Installation Instructions 16 | ------------------------- 17 | 18 | #### Manually 19 | 20 | - Clone the repository or download the latest version of this extension 21 | - Copy all the files from the **src** folder into your Magento document root 22 | 23 | #### Via modman 24 | 25 | - Install [modman](https://github.com/colinmollenhour/modman) on your system 26 | - Run the following command in your Magento document root: 27 | 28 | `modman clone https://github.com/itabs/Itabs_LogViewer.git` 29 | 30 | #### Via composer 31 | 32 | - Install [composer](http://getcomposer.org/download/) on your system 33 | - Install [Magento Composer](https://github.com/magento-hackathon/magento-composer-installer) or any other Magento composer installer 34 | - Create a composer.json into your project like the following sample: 35 | 36 | ```json 37 | { 38 | "require": { 39 | "itabs/logviewer":"*" 40 | }, 41 | "repositories": [ 42 | { 43 | "type": "composer", 44 | "url": "http://packages.firegento.com" 45 | } 46 | ], 47 | "extra":{ 48 | "magento-root-dir": "htdocs/" 49 | } 50 | } 51 | ``` 52 | 53 | - From your `composer.json` folder run `php composer.phar install` or `composer install` 54 | 55 | #### Final steps 56 | 57 | - Clear the cache, logout from the admin panel and then log back in 58 | - You can now view the log files in the backend under *System -> LogViewer* 59 | 60 | Uninstallation 61 | -------------- 62 | - Remove all extension files from your Magento installation: 63 | 64 | ``` 65 | app/code/community/Itabs/LogViewer 66 | app/design/adminhtml/default/default/layout/itabs/logviewer.xml 67 | app/design/adminhtml/default/default/template/itabs/logviewer 68 | app/etc/modules/Itabs_LogViewer.xml 69 | app/locale/de_DE/Itabs_LogViewer.csv 70 | skin/adminhtml/default/default/itabs/logviewer 71 | ``` 72 | 73 | - Via modman: `modman remove Itabs_LogViewer` 74 | - Via composer, remove the requirement of `itabs/logviewer` 75 | 76 | Support 77 | ------- 78 | If you have any issues with this extension, open an issue on [GitHub](https://github.com/itabs/Itabs_LogViewer/issues). 79 | 80 | Contribution 81 | ------------ 82 | Any contribution is highly appreciated. The best way to contribute code is to open a [pull request on GitHub](https://help.github.com/articles/using-pull-requests). 83 | 84 | Developer 85 | --------- 86 | Rouven Alexander Rieker / ITABS GmbH 87 | - [http://www.itabs.de](http://www.itabs.de) 88 | - [@therouv](https://twitter.com/therouv) 89 | - [@itabs_gmbh](https://twitter.com/itabs_gmbh) 90 | 91 | License 92 | ------- 93 | [MIT](http://opensource.org/licenses/MIT) - For the full copyright and license information, please view the LICENSE file that was distributed with this source code. 94 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "itabs/logviewer", 3 | "description": "This extension provides the possibility to view log files in the backend.", 4 | "type": "magento-module", 5 | "license": "MIT", 6 | "minimum-stability": "dev", 7 | "authors": [ 8 | { 9 | "name": "ITABS GmbH", 10 | "email": "info@itabs.de" 11 | } 12 | ], 13 | "suggest": { 14 | "magento-hackathon/magento-composer-installer": "*" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modman: -------------------------------------------------------------------------------- 1 | src/app/code/community/Itabs/LogViewer app/code/community/Itabs/LogViewer 2 | src/app/design/adminhtml/default/default/layout/itabs/logviewer.xml app/design/adminhtml/default/default/layout/itabs/logviewer.xml 3 | src/app/design/adminhtml/default/default/template/itabs/logviewer app/design/adminhtml/default/default/template/itabs/logviewer 4 | src/app/etc/modules/Itabs_LogViewer.xml app/etc/modules/Itabs_LogViewer.xml 5 | src/app/locale/de_DE/Itabs_LogViewer.csv app/locale/de_DE/Itabs_LogViewer.csv 6 | src/skin/adminhtml/default/default/itabs/logviewer skin/adminhtml/default/default/itabs/logviewer 7 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Block/Adminhtml/Console.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Class Itabs_LogViewer_Block_Adminhtml_Console 18 | */ 19 | class Itabs_LogViewer_Block_Adminhtml_Console extends Mage_Adminhtml_Block_Widget_Container 20 | { 21 | /** 22 | * Constructor for Block 23 | */ 24 | public function _construct() 25 | { 26 | parent::_construct(); 27 | $this->setTemplate('itabs/logviewer/console.phtml'); 28 | 29 | // Add the buttons to the layout 30 | if ($this->getLogHelper()->getCurrentFile()) { 31 | // Add reload button 32 | $this->_addButton('reload', array( 33 | 'label' => $this->getLogHelper()->__('Reload'), 34 | 'onclick' => 'setLocation(\'' . $this->getUrl('*/*/*', array('_current' => true)) . '\')' 35 | ), -1); 36 | 37 | // Add download button 38 | $this->_addButton('download', array( 39 | 'label' => $this->getLogHelper()->__('Download Log File'), 40 | 'onclick' => 'setLocation(\'' . $this->getUrl('*/*/download', array('_current' => true)) . '\')', 41 | 'class' => 'add' 42 | )); 43 | } 44 | } 45 | 46 | /** 47 | * Retrieve the log output 48 | * 49 | * @return string 50 | */ 51 | public function getLogOutput() 52 | { 53 | $lines = ''; 54 | 55 | $file = $this->getLogHelper()->getCurrentFile(); 56 | if ($file) { 57 | $path = $this->getLogHelper()->getLogDir() . $file; 58 | 59 | /* @var $reader Itabs_LogViewer_Model_Reader */ 60 | $reader = Mage::getModel('itabs_logviewer/reader'); 61 | $tmpLines = $reader->readLastLines($path, $this->getLogHelper()->getCurrentLines()); 62 | if (count($tmpLines) > 0) { 63 | $lines = implode('
', $tmpLines); 64 | } 65 | } 66 | 67 | return $lines; 68 | } 69 | 70 | /** 71 | * Retrieve the log viewer helper 72 | * 73 | * @return Itabs_LogViewer_Helper_Data 74 | */ 75 | public function getLogHelper() 76 | { 77 | return Mage::helper('itabs_logviewer'); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Block/Adminhtml/Console/Files.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Class Itabs_LogViewer_Block_Adminhtml_Console_Files 18 | */ 19 | class Itabs_LogViewer_Block_Adminhtml_Console_Files 20 | extends Mage_Adminhtml_Block_Template 21 | { 22 | /** 23 | * Constructor for Block 24 | */ 25 | public function _construct() 26 | { 27 | parent::_construct(); 28 | $this->setTemplate('itabs/logviewer/console/files.phtml'); 29 | } 30 | 31 | /** 32 | * Returns the log files of the var/log directory 33 | * 34 | * @return array 35 | */ 36 | public function getLogFiles() 37 | { 38 | $path = $this->getLogHelper()->getLogDir(); 39 | if (!file_exists($path)) { 40 | return array(); 41 | } 42 | 43 | $io = new Varien_Io_File(); 44 | $io->open(array('path' => $path)); 45 | $files = $io->ls(Varien_Io_File::GREP_FILES); 46 | 47 | return $files; 48 | } 49 | 50 | /** 51 | * Retrieve the available lines count 52 | * 53 | * @return array 54 | */ 55 | public function getAvailableLines() 56 | { 57 | /* @var $source Itabs_LogViewer_Model_Config_Source_Lines */ 58 | $source = Mage::getModel('itabs_logviewer/config_source_lines'); 59 | 60 | return $source->toOptionHash(); 61 | } 62 | 63 | /** 64 | * Adds the secure key to the url 65 | * 66 | * @return string 67 | */ 68 | public function getSecureUrl($fileName = null, $lines = false) 69 | { 70 | $params = array(); 71 | if (!is_null($fileName)) { 72 | $params['file'] = $this->getLogHelper()->encode($fileName); 73 | } 74 | 75 | if ($lines) { 76 | $params['lines'] = $lines; 77 | } 78 | 79 | return $this->getUrl('*/*/*', $params); 80 | } 81 | 82 | /** 83 | * Retrieve the log viewer helper 84 | * 85 | * @return Itabs_LogViewer_Helper_Data 86 | */ 87 | public function getLogHelper() 88 | { 89 | return Mage::helper('itabs_logviewer'); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Helper/Data.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Class Itabs_LogViewer_Helper_Data 18 | */ 19 | class Itabs_LogViewer_Helper_Data extends Mage_Core_Helper_Abstract 20 | { 21 | /** 22 | * Retrieve the current file 23 | * 24 | * @return string|bool 25 | */ 26 | public function getCurrentFile() 27 | { 28 | $file = Mage::app()->getRequest()->getParam('file', false); 29 | if ($file) { 30 | $file = $this->decode($file); 31 | 32 | // Check if file exists 33 | $path = $this->getLogDir() . $file; 34 | if (!file_exists($path)) { 35 | return false; 36 | } 37 | } 38 | 39 | return $file; 40 | } 41 | 42 | /** 43 | * Retrieve the current lines count 44 | * 45 | * @return int 46 | */ 47 | public function getCurrentLines() 48 | { 49 | return Mage::app()->getRequest()->getParam('lines', 100); 50 | } 51 | 52 | /** 53 | * Encode the given string for the url 54 | * 55 | * @param string $string String 56 | * @return string 57 | */ 58 | public function encode($string) 59 | { 60 | return strtr(base64_encode($string), '+/=', '-_,'); 61 | } 62 | 63 | /** 64 | * Decode the given string from the url 65 | * 66 | * @param string $string String 67 | * @return string 68 | */ 69 | public function decode($string) 70 | { 71 | return base64_decode(strtr($string, '-_,', '+/=')); 72 | } 73 | 74 | /** 75 | * Retrieve the log dir 76 | * 77 | * @return string 78 | */ 79 | public function getLogDir() 80 | { 81 | return Mage::getBaseDir('var') . DS . 'log' . DS; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Model/Config/Source/Lines.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Class Itabs_LogViewer_Model_Config_Source_Lines 18 | */ 19 | class Itabs_LogViewer_Model_Config_Source_Lines 20 | { 21 | /** 22 | * @var null 23 | */ 24 | protected $_options = null; 25 | 26 | /** 27 | * Retrieve the option array 28 | * 29 | * @return array 30 | */ 31 | public function toOptionArray() 32 | { 33 | if (null === $this->_options) { 34 | $this->_options = array( 35 | array( 36 | 'value' => 50, 37 | 'label' => $this->getHelper()->__('%s lines', 50), 38 | ), 39 | array( 40 | 'value' => 100, 41 | 'label' => $this->getHelper()->__('%s lines', 100), 42 | ), 43 | array( 44 | 'value' => 250, 45 | 'label' => $this->getHelper()->__('%s lines', 250), 46 | ), 47 | array( 48 | 'value' => 500, 49 | 'label' => $this->getHelper()->__('%s lines', 500), 50 | ), 51 | array( 52 | 'value' => 1000, 53 | 'label' => $this->getHelper()->__('%s lines', 1000), 54 | ) 55 | ); 56 | } 57 | 58 | return $this->_options; 59 | } 60 | 61 | /** 62 | * Retrieve the option hash 63 | * 64 | * @return array 65 | */ 66 | public function toOptionHash() 67 | { 68 | $options = array(); 69 | foreach ($this->toOptionArray() as $option) { 70 | $options[$option['value']] = $option['label']; 71 | } 72 | 73 | return $options; 74 | } 75 | 76 | /** 77 | * Retrieve the log viewer helper 78 | * 79 | * @return Itabs_LogViewer_Helper_Data 80 | */ 81 | public function getHelper() 82 | { 83 | return Mage::helper('itabs_logviewer'); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Model/Reader.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Class Itabs_LogViewer_Model_Reader 18 | */ 19 | class Itabs_LogViewer_Model_Reader 20 | { 21 | /** 22 | * Return array with last n lines from given file 23 | * 24 | * @param string|resource file File 25 | * @param int $lines Number of lines 26 | * @return array 27 | */ 28 | public function readLastLines($file, $lines) 29 | { 30 | if (!file_exists($file)) { 31 | return false; 32 | } 33 | 34 | $handle = fopen($file, 'r'); 35 | if ($handle === false) { 36 | return false; 37 | } 38 | 39 | // Move the pointer first to the end 40 | fseek($handle, 0, SEEK_END); 41 | 42 | // Move the pointer to the lines we want to retrieve 43 | $this->_seekLineBack($handle, $lines); 44 | 45 | // Fetch all lines based from this pointer 46 | $lines = array(); 47 | while ($line = fgets($handle)) { 48 | $lines[] = $line; 49 | } 50 | 51 | fclose($handle); 52 | 53 | return $lines; 54 | } 55 | 56 | /** 57 | * Will set pointer in file back to read n lines relative to current pointer 58 | * 59 | * @param resource $handle Resource 60 | * @param int $lines Number of lines 61 | * @return int 62 | * @see http://stackoverflow.com/a/13936967/2088060 63 | */ 64 | protected function _seekLineBack($handle, $lines) 65 | { 66 | $readSize = 160 * ($lines + 1); 67 | $pos = ftell($handle); 68 | if (ftell($handle) === 0) { 69 | return false; 70 | } 71 | if ($pos === false) { 72 | fseek($handle, 0, SEEK_SET); 73 | 74 | return false; 75 | } 76 | while ($lines >= 0) { 77 | if ($pos === 0) { 78 | break; 79 | } 80 | $currentReadsize = $readSize; 81 | $pos = $pos - $readSize; 82 | if ($pos < 0) { 83 | $currentReadsize = $readSize - abs($pos); 84 | $pos = 0; 85 | } 86 | if (fseek($handle, $pos, SEEK_SET) === -1) { 87 | fseek($handle, 0, SEEK_SET); 88 | break; 89 | } 90 | $data = fread($handle, $currentReadsize); 91 | $count = substr_count($data, "\n"); 92 | $lines = $lines - $count; 93 | if ($lines < 0) { 94 | break; 95 | } 96 | } 97 | fseek($handle, $pos, SEEK_SET); 98 | while ($lines < 0) { 99 | fgets($handle); 100 | $lines++; 101 | } 102 | $pos = ftell($handle); 103 | if ($pos === false) { 104 | fseek($handle, 0, SEEK_SET); 105 | } 106 | 107 | return $pos; 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Test/Config/Config.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Tests for module config 18 | * 19 | * @group Itabs_LogViewer 20 | */ 21 | class Itabs_LogViewer_Test_Config_Config extends EcomDev_PHPUnit_Test_Case_Config 22 | { 23 | /** 24 | * @test 25 | * @loadExpections 26 | */ 27 | public function globalConfig() 28 | { 29 | $this->assertModuleVersion($this->expected('module')->getVersion()); 30 | $this->assertModuleCodePool($this->expected('module')->getCodePool()); 31 | 32 | foreach ($this->expected('module')->getDepends() as $depend) { 33 | $this->assertModuleDepends($depend); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Test/Config/Config/expectations/globalConfig.yaml: -------------------------------------------------------------------------------- 1 | module: 2 | version: 1.0.0 3 | code_pool: community 4 | depends: 5 | - Mage_Adminhtml 6 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Test/Helper/Data.php: -------------------------------------------------------------------------------- 1 | _helper = Mage::helper('itabs_logviewer'); 17 | } 18 | 19 | /** 20 | * @test 21 | */ 22 | public function getCurrentLines() 23 | { 24 | $this->assertEquals(100, $this->_helper->getCurrentLines()); 25 | self::app()->getRequest()->setParam('lines', 500); 26 | $this->assertEquals(500, $this->_helper->getCurrentLines()); 27 | } 28 | 29 | /** 30 | * @test 31 | */ 32 | public function encode() 33 | { 34 | $this->assertEquals('dGVzdA,,', $this->_helper->encode('test')); 35 | } 36 | 37 | /** 38 | * @test 39 | */ 40 | public function decode() 41 | { 42 | $this->assertEquals('test', $this->_helper->decode('dGVzdA,,')); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Test/Model/Config/Source/Lines.php: -------------------------------------------------------------------------------- 1 | _model = Mage::getModel('itabs_logviewer/config_source_lines'); 17 | } 18 | 19 | /** 20 | * @test 21 | * @loadExpectations 22 | */ 23 | public function toOptionArray() 24 | { 25 | $this->assertEquals( 26 | $this->expected('source')->getOptions(), 27 | $this->_model->toOptionArray() 28 | ); 29 | } 30 | 31 | /** 32 | * @test 33 | * @loadExpectations 34 | */ 35 | public function toOptionHash() 36 | { 37 | $this->assertEquals( 38 | $this->expected('source')->getOptions(), 39 | $this->_model->toOptionHash() 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Test/Model/Config/Source/Lines/_data/ex-toOptionArray.yaml: -------------------------------------------------------------------------------- 1 | source: 2 | options: 3 | - value: 50 4 | label: 50 lines 5 | - value: 100 6 | label: 100 lines 7 | - value: 250 8 | label: 250 lines 9 | - value: 500 10 | label: 500 lines 11 | - value: 1000 12 | label: 1000 lines 13 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/Test/Model/Config/Source/Lines/_data/ex-toOptionHash.yaml: -------------------------------------------------------------------------------- 1 | source: 2 | options: 3 | 50: 50 lines 4 | 100: 100 lines 5 | 250: 250 lines 6 | 500: 500 lines 7 | 1000: 1000 lines 8 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/controllers/Adminhtml/LogviewerController.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 14 | */ 15 | 16 | /** 17 | * Class Itabs_LogViewer_Adminhtml_LogviewerController 18 | */ 19 | class Itabs_LogViewer_Adminhtml_LogviewerController 20 | extends Mage_Adminhtml_Controller_Action 21 | { 22 | /** 23 | * Show the log file viewer 24 | */ 25 | public function indexAction() 26 | { 27 | $this->loadLayout(); 28 | $this->_setActiveMenu('system/logviewer'); 29 | $this->_title($this->__('Log Viewer')); 30 | $this->renderLayout(); 31 | } 32 | 33 | /** 34 | * Download the given log file 35 | */ 36 | public function downloadAction() 37 | { 38 | $file = $this->getLogHelper()->getCurrentFile(); 39 | if ($file) { 40 | $path = $this->getLogHelper()->getLogDir() . $file; 41 | $this->_prepareDownloadResponse($file, file_get_contents($path)); 42 | 43 | return; 44 | } 45 | 46 | return $this->_redirect('*/*'); 47 | } 48 | 49 | /** 50 | * Retrieve the log viewer helper 51 | * 52 | * @return Itabs_LogViewer_Helper_Data 53 | */ 54 | public function getLogHelper() 55 | { 56 | return Mage::helper('itabs_logviewer'); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/etc/adminhtml.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | 19 | 20 | Log Viewer 21 | adminhtml/logviewer/index 22 | 1 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Log Viewer 35 | 1 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/app/code/community/Itabs/LogViewer/etc/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | 1.0.0 19 | 20 | 21 | 22 | 23 | 24 | Itabs_LogViewer_Block 25 | 26 | 27 | 28 | 29 | Itabs_LogViewer_Helper 30 | 31 | 32 | 33 | 34 | Itabs_LogViewer_Model 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Itabs_LogViewer_Adminhtml 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | itabs/logviewer.xml 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | Itabs_LogViewer.csv 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/layout/itabs/logviewer.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | itabs/logviewer/styles.css 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/itabs/logviewer/console.phtml: -------------------------------------------------------------------------------- 1 | 11 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 12 | */ 13 | /** 14 | * @var Itabs_LogViewer_Block_Adminhtml_Console 15 | */ 16 | ?> 17 |
18 |

__('Log Viewer')?>

19 |

20 | getButtonsHtml()?> 21 |

22 |
23 | 24 | getChildHtml('files');?> 25 | 26 | getLogHelper()->getCurrentFile()): ?> 27 |
28 | getLogOutput()?> 29 |
30 | 31 | -------------------------------------------------------------------------------- /src/app/design/adminhtml/default/default/template/itabs/logviewer/console/files.phtml: -------------------------------------------------------------------------------- 1 | 11 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 12 | */ 13 | /** 14 | * @var $this Itabs_LogViewer_Block_Adminhtml_Console_Files 15 | */ 16 | $logFiles = $this->getLogFiles(); 17 | $currentFile = $this->getLogHelper()->getCurrentFile(); 18 | ?> 19 |
20 |
21 |
22 | 23 | 24 | 25 | 26 | 34 | 35 | 36 | 37 | 38 | 45 | 46 | 47 | 48 |
27 | 33 |
39 | 44 |
49 |
50 |
51 |
52 | -------------------------------------------------------------------------------- /src/app/etc/modules/Itabs_LogViewer.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | true 19 | community 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/app/locale/de_DE/Itabs_LogViewer.csv: -------------------------------------------------------------------------------- 1 | "Log Viewer","Log Viewer" 2 | "Log File","Log-Datei" 3 | "Lines","Zeilen" 4 | "%s lines","%s Zeilen" 5 | "Reload","Aktualisieren" 6 | "Download Log File","Log-Datei herunterladen" 7 | -------------------------------------------------------------------------------- /src/skin/adminhtml/default/default/itabs/logviewer/styles.css: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the Itabs_LogViewer module. 3 | * 4 | * For the full copyright and license information, please view the LICENSE 5 | * file that was distributed with this source code. 6 | * 7 | * @category Itabs 8 | * @package Itabs_LogViewer 9 | * @author ITABS GmbH 10 | * @copyright 2015 ITABS GmbH (http://www.itabs.de) 11 | */ 12 | 13 | .adminhtml-logviewer-index .content-header .icon-head { 14 | padding-left: 0; 15 | } 16 | 17 | .log-output { 18 | height: 500px; 19 | overflow: auto; 20 | margin: 0; 21 | padding: 5px 10px; 22 | background: black; 23 | color: #c7c7c7; 24 | font: normal 11px/14px Lucida Console, Courier New, serif; 25 | } 26 | 27 | table.logviewer td.label { 28 | width: 125px; 29 | } 30 | 31 | table.logviewer td.label label { 32 | width: auto; 33 | } 34 | 35 | --------------------------------------------------------------------------------