Giter Club home page Giter Club logo

timetracker's Introduction

doc/netresearch.jpg


Netresearch TimeTracker

Project and customer based time tracking for company employees.

Features:

  • Time tracking with autocompletion
    • Bulk entry for sickness or vacation
  • Per-user, pre-project and company wide charts
  • Administration interface for customers, projects, users and teams
  • XLSX export for controlling tasks
  • AD/LDAP authentication
  • Jira integration: Creates and updates worklog entries in issues

Click the button Add Entry. Or use the keyboard shortcut a.

Just click inside any field of any existing worklog entry.

Rightclick on an worklog entry and select Delete from context menu. Or use keyboard shortcut d to delete focused worklog entry.

Worklog entry with focus has a yellow background. Move the focus with keyboard up and down keys.

DEV (Developer)
is allowed to track times, do bulk entries (if presets where created) and view bar charts in the Interpretation tab
CTL (Controller)
Includes the role DEV and is additionally able export data to csv in the Controlling tab
PL (Project leader)
Includes the role CTL and is additionally able manage customers, projects, user, teams, presets, ticket systems and activities in Administration tab
  • PHP >= 7.2
  • MySQL compatible database
  • Composer
  • For more details see composer.json
  1. Fetch a local copy:

    $ git clone [email protected]:netresearch/timetracker.git
    
  2. Create a MySQL database and import sql/full.sql into it

  3. Install dependencies:

    $ composer install
    

    It will ask you for some configuration options.

    If you want to adjust that later, edit app/config/parameters.yml

    Also copy app/config/sentry.yml.dist to app/config/sentry.yml, and fill the dsn key if necessary.

  4. Make cache and log directory writable:

    $ chmod -R og+w app/cache/ app/logs/
    
  5. For Apache, copy web/.htaccess_dev to web/.htaccess.

    For nginx, symlink web/app_dev.php or web/app.php to web/index.php.

  6. Create a virtual host web server entry

    pointing to /path/to/timetracker/web/

  7. Open the timetracker URL in your browser. If you see a white page, run:

    $ php app/console assets:install
    
  8. Import test data so that you have a set of data to work and play with:

    $ mysql timetracker < sql/testdata.sql
    

    Change the username of user 1 to your LDAP username.

  9. Login with your LDAP credentials

  1. Create an empty folder
  2. Put the provided docker-composer.yml from this git repo in it
  3. Put the provided nginx configuration file from this repo into the above created folder
  4. Put the provided app/config/parameters.yml.dist from this repo as parameters.yml into the above created folder, and sentry.yml.dist as sentry.yml.
  5. Check and adapt the copied confoguration files to your needs
  6. Run docker-compose up -d

To work behind a proxy Symfony needs to know which proxies are allowed to trust.

There are two ENV variables which can be set to modify the proxy behavior of the app:

TRUSTED_PROXY_LIST

The variable expects a valid JSON encoded list of IPs or IP ranges:

TRUSTED_PROXY_LIST=["192.0.0.1","10.0.0.0\/8"]
TRUSTED_PROXY_ALL

The variable expects a boolean 1/0 to indicate if the application should handle each address in $_SERVER[REMOTE_ADDR] as a trusted proxy:

TRUSTED_PROXY_ALL=1
  1. Configure your Jira ticket system

  2. Example for Jira 7

    • Create a OpenSSL key pair with private and public pem file:

      $ openssl genrsa -out jira_privatekey.pem 1024
      $ openssl req -newkey rsa:1024 -x509 -key jira_privatekey.pem -out jira_publickey.cer -days 365
      $ openssl pkcs8 -topk8 -nocrypt -in jira_privatekey.pem -out jira_privatekey.pcks8
      $ openssl x509 -pubkey -noout -in jira_publickey.cer  > jira_publickey.pem
      
    • Open "Application links" page in your Jira: https://jira.example.com/plugins/servlet/applinks/listApplicationLinks

    • "Create new link" with URL pointing to your TimeTracker installation

    • Just click "Continue" if Jira is blaming "no response"

    • Fill out the following form:
      • Application Name:
        timetracker (or chose any other name you like)
      • Application Type:
        Generic Application
      • Ignore the rest and hit "Continue"
    • After new Application is created click on action "edit" (the little pencil at the right to your new application)
      • Select "Incoming Authentication"
      • Consumer Key:
        timetracker (or chose any other name you like)
      • Consumer Name:
        TimeTracker (or chose any other name you like)
      • Public Key:
        Insert here the public key you created above (jira_publickey.pem)
      • Click on "Save"
  3. Create a ticket system in TimeTracker

    • Set the type to Jira
    • Check the field timebooking
    • Enter the Base-URL to your Jira ticket system
    • The ticket URL is used for referencing ticket names to Jira "%s" serves is a placeholder for the ticket name in the URL (your URL might look as the following: https://jira.example.com/browse/%s)
    • The fields login, password, public and private key can be left empty
    • Enter the OAuth consumer key you already entered in Jira (timetracker)
    • Enter your private key you created above into OAuth consumer secret field (jira_privatekey.pcks8). Must begin with -----BEGIN PRIVATE KEY----- (not BEGIN RSA!).
  4. Assign this ticket system to at least one project

  5. Start time tracking to this project

    • The TimeTracker checks if a valid Jira access token is available
    • If this is missing or incorrect the user is going to be forwarded to the Jira ticket system, which asks for the permission to grant read / write access to the TimeTracker.
    • If permitting, the user will receive an access token from Jira.
    • If not, he won't be asked for permission again.
    • With a valid access token the TimeTracker will add / edit a Jira work log for each entry with a valid ticket name.
    • The permission can be revoked by each user in its settings section in Jira.

Per default every TimeTracker user has to be created manually. While setting ldap_create_user in app/config/parameters.yml to true new users of type DEV are going to be created automatically on a valid LDAP authentication. The type can be changed afterwards via the users panel in the administration tab or directly in the database.

Sometimes you not only want to track the times for the tickets from your ticket system. Assuming that you have a client providing an own ticket system, but you want to track the times for work on this tickets into your ticket system.

Example:

  • Your client provides tickets to your team via an own ticker system
  • The ticket numbers may be EXTERNAL-1, EXTERNAL-200 etc.
  • You share the information regarding the progress of the ticket in the clients ticket system
  • But you want to track the working time in your internal ticket system instance
  • Normally you would need to create a ticket in your ticket system e.g. name INTERNAL-1
  • You then would be able to book you efforts to INTERNAL-1 via Timetracker
  • That's quite ineffective because you always need to create an internal ticket

This feature tries to solve that problem.

  1. Create a project in Jira where the external times should be applied to

    1. Create a Jira project the Timetracker user has access to
    2. Ensure that the project provides the issue type task
    3. Let's assume it is named Customer Project with the key INTERNAL
  2. Create the client's ticket system in TimeTracker

    1. Go to Administration > Ticket-Sytem and create a new one:

      Name:

      e.g. Customer ticket system

      Type:

      Jira or Other or what you like

      The type does not effect this feature in any way

      URL:

      e.g. https://ticketing.customer.org/%s

      This is used to generate links in the work log description

      Timebooking:

      No

      This disables any contact to external ticket system

    2. Save the entry

  3. Create the external project in TimeTracker

    1. Go to Administration > Projects and create a new one:

      Name:

      set to e.g. Customer Project

      Ticket-System:

      Select the above created Customer ticket system

      Ticket-Prefix:

      Enter the prefix of your customers project tickets e.g. EXTERNAL if the tickets are in the form EXTERNAL-123

      Active:

      Yes

      "Internal Jira project key":

      select INTERNAL

      "Internal Jira ticket system":

      select your internal ticket system

If everything is correct, the following will happen:

  • If you are booking some working time to e.g. EXTERNAL-1 in TimeTracker for project Customer Project
  • TimeTracker will reach out for the configured internal Jira instance
  • It will search for an issue which name/summary starts with EXTERNAL-1 in the configured internal Jira project
  • If it finds an entry, the work log is applied to this entry
  • If it does not find an entry, TimeTracker will create a new internal ticket with name EXTERNAL-1
  • The link to the ticket in customer Jira will be applied as ticket description
  • The work log is applied to the newly created ticket
Jira cloud: Button "Zeiten aus Timetracker laden" Jira cloud displaying times

It is possible to show the timetracker times in Jira cloud, even when not syncing the times into such an instance.

To get it working, install the Greasemonkey browser extension and import the scripts/timeSummaryForJira script.

Then visit a ticket detail page of a cloud-hosted Jira instance. The right sidebar will show a "Zeiten aus Timetracker laden" button. When it has been clicked, the statistics are fetched from the Timetracker API and displayed there.

The timetracker API is documented in web/api.yml (OpenAPI v3).

timetracker's People

Contributors

cweiske avatar cybottm avatar dependabot[bot] avatar just-tobi avatar nemesis621 avatar vergissberlin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

timetracker's Issues

composer update: The file "sentry.yml" does not exist

when running composer update:

In FileLoader.php line 168:

  The file "sentry.yml" does not exist (in: "/home/cybot/timetracker/app/conf
  ig") in sentry.yml (which is being imported from "/home/cybot/timetracker/a
  pp/config/config.yml").


In FileLocator.php line 71:

  The file "sentry.yml" does not exist (in: "/home/cybot/timetracker/app/conf
  ig").


Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the symfony-scripts event terminated with an exception


  [RuntimeException]
  An error occurred when executing the "'cache:clear --no-warmup'" command:




  In FileLoader.php line 168:

    The file "sentry.yml" does not exist (in: "/home/cybot/timetracker/app/conf
    ig") in sentry.yml (which is being imported from "/home/cybot/timetracker/a
    pp/config/config.yml").


  In FileLocator.php line 71:

    The file "sentry.yml" does not exist (in: "/home/cybot/timetracker/app/conf
    ig").

Creating user fails when abbrevation is shorter than 3 characters

.. but no error message is shown.
Browser console shows:

TypeError: b is nullext-all.js:21:511004
    removeCls ExtJS
    showNotification http://tt.sybo/bundles/netresearchtimetracker/js/main.js:323
    failure ../bundles/netresearchtimetracker/js/netresearch/widget/Admin.js:1064
    ExtJS 4
        callback
        onComplete
        onStateChange
        bind

Exception in post-installation script

When running "composer install" on a fresh checkout, configuration questions are asked. After finishing them, a crash occurs:

ldap_create_user (true): 
app_logo_url (/bundles/netresearchtimetracker/images/logo.png): 
app_monthly_overview_url ('https://stats.timetracker.nr/?user='): 
app_title ('Netresearch TimeTracker'): 
app_header_url ('https://www.netresearch.de/corpnav-intern/zeiterfassung/'): 
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
Cannot load Zend OPcache - it was already loaded
PHP Warning:  Module 'mysqlnd' already loaded in Unknown on line 0
PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
PHP Warning:  Module 'xml' already loaded in Unknown on line 0
PHP Warning:  Module 'bz2' already loaded in Unknown on line 0
PHP Warning:  Module 'calendar' already loaded in Unknown on line 0
PHP Warning:  Module 'ctype' already loaded in Unknown on line 0
PHP Warning:  Module 'curl' already loaded in Unknown on line 0
PHP Warning:  Module 'dom' already loaded in Unknown on line 0
PHP Warning:  Module 'exif' already loaded in Unknown on line 0
PHP Warning:  Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning:  Module 'ftp' already loaded in Unknown on line 0
PHP Warning:  Module 'gd' already loaded in Unknown on line 0
PHP Warning:  Module 'gettext' already loaded in Unknown on line 0
PHP Warning:  Module 'iconv' already loaded in Unknown on line 0
PHP Warning:  Module 'json' already loaded in Unknown on line 0
PHP Warning:  Module 'ldap' already loaded in Unknown on line 0
PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_mysql' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning:  Module 'Phar' already loaded in Unknown on line 0
PHP Warning:  Module 'posix' already loaded in Unknown on line 0
PHP Warning:  Module 'readline' already loaded in Unknown on line 0
PHP Warning:  Module 'shmop' already loaded in Unknown on line 0
PHP Warning:  Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
PHP Warning:  Module 'sockets' already loaded in Unknown on line 0
PHP Warning:  Module 'sqlite3' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning:  Module 'tokenizer' already loaded in Unknown on line 0
PHP Warning:  Module 'wddx' already loaded in Unknown on line 0
PHP Warning:  Module 'xmlreader' already loaded in Unknown on line 0
PHP Warning:  Module 'xmlwriter' already loaded in Unknown on line 0
PHP Warning:  Module 'xsl' already loaded in Unknown on line 0
PHP Warning:  Module 'zip' already loaded in Unknown on line 0
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
Cannot load Zend OPcache - it was already loaded
PHP Warning:  Module 'mysqlnd' already loaded in Unknown on line 0
PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
PHP Warning:  Module 'xml' already loaded in Unknown on line 0
PHP Warning:  Module 'bz2' already loaded in Unknown on line 0
PHP Warning:  Module 'calendar' already loaded in Unknown on line 0
PHP Warning:  Module 'ctype' already loaded in Unknown on line 0
PHP Warning:  Module 'curl' already loaded in Unknown on line 0
PHP Warning:  Module 'dom' already loaded in Unknown on line 0
PHP Warning:  Module 'exif' already loaded in Unknown on line 0
PHP Warning:  Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning:  Module 'ftp' already loaded in Unknown on line 0
PHP Warning:  Module 'gd' already loaded in Unknown on line 0
PHP Warning:  Module 'gettext' already loaded in Unknown on line 0
PHP Warning:  Module 'iconv' already loaded in Unknown on line 0
PHP Warning:  Module 'json' already loaded in Unknown on line 0
PHP Warning:  Module 'ldap' already loaded in Unknown on line 0
PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_mysql' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning:  Module 'Phar' already loaded in Unknown on line 0
PHP Warning:  Module 'posix' already loaded in Unknown on line 0
PHP Warning:  Module 'readline' already loaded in Unknown on line 0
PHP Warning:  Module 'shmop' already loaded in Unknown on line 0
PHP Warning:  Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
PHP Warning:  Module 'sockets' already loaded in Unknown on line 0
PHP Warning:  Module 'sqlite3' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning:  Module 'tokenizer' already loaded in Unknown on line 0
PHP Warning:  Module 'wddx' already loaded in Unknown on line 0
PHP Warning:  Module 'xmlreader' already loaded in Unknown on line 0
PHP Warning:  Module 'xmlwriter' already loaded in Unknown on line 0
PHP Warning:  Module 'xsl' already loaded in Unknown on line 0
PHP Warning:  Module 'zip' already loaded in Unknown on line 0
PHP Notice:  Undefined property: DOMDocument::$documentElement in /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php on line 459
PHP Stack trace:
PHP   1. {main}() /mnt/daten/php/tttest/app/console:0
PHP   2. Symfony\Component\Console\Application->run() /mnt/daten/php/tttest/app/console:23
PHP   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:123
PHP   4. Symfony\Component\HttpKernel\Kernel->boot() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:70
PHP   5. Symfony\Component\HttpKernel\Kernel->initializeContainer() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:133
PHP   6. Symfony\Component\DependencyInjection\ContainerBuilder->compile() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:511
PHP   7. Symfony\Component\DependencyInjection\Compiler\Compiler->compile() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:589
PHP   8. Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass->process() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php:107
PHP   9. Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass->process() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php:39
PHP  10. Symfony\Bundle\FrameworkBundle\DependencyInjection\FrameworkExtension->load() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php:55
PHP  11. Symfony\Component\DependencyInjection\Loader\XmlFileLoader->load() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php:53
PHP  12. Symfony\Component\DependencyInjection\Loader\XmlFileLoader->parseFileToDOM() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php:41
PHP  13. Symfony\Component\Config\Util\XmlUtils::loadFile() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php:279
PHP  14. call_user_func:{/mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:78}() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:78
PHP  15. Symfony\Component\DependencyInjection\Loader\XmlFileLoader->validateSchema() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:78
PHP Fatal error:  Uncaught Error: Call to a member function getAttributeNS() on null in /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php:459
Stack trace:
#0 [internal function]: Symfony\Component\DependencyInjection\Loader\XmlFileLoader->validateSchema(Object(DOMDocument), false)
#1 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php(78): call_user_func(Array, Object(DOMDocument), false)
#2 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php(279): Symfony\Component\Config\Util\XmlUtils::loadFile('/mnt/daten/php/...', Array)
#3 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php(41): Symfony\Component\DependencyInjection\Loader\XmlFileLoader->parseFileToDOM('/mnt/daten/php/...')
#4 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php(53): S in /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php on line 459

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-install-cmd event terminated with an exception

                                                                                                                                                                                                                                              
  [RuntimeException]                                                                                                                                                                                                                          
  An error occurred when executing the "'cache:clear --no-warmup'" command:                                                                                                                                                                   
  Cannot load Zend OPcache - it was already loaded                                                                                                                                                                                            
  PHP Warning:  Module 'mysqlnd' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'PDO' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Warning:  Module 'xml' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Warning:  Module 'bz2' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Warning:  Module 'calendar' already loaded in Unknown on line 0                                                                                                                                                                         
  PHP Warning:  Module 'ctype' already loaded in Unknown on line 0                                                                                                                                                                            
  PHP Warning:  Module 'curl' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'dom' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Warning:  Module 'exif' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'fileinfo' already loaded in Unknown on line 0                                                                                                                                                                         
  PHP Warning:  Module 'ftp' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Warning:  Module 'gd' already loaded in Unknown on line 0                                                                                                                                                                               
  PHP Warning:  Module 'gettext' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'iconv' already loaded in Unknown on line 0                                                                                                                                                                            
  PHP Warning:  Module 'json' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'ldap' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0                                                                                                                                                                         
  PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0                                                                                                                                                                           
  PHP Warning:  Module 'pdo_mysql' already loaded in Unknown on line 0                                                                                                                                                                        
  PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0                                                                                                                                                                       
  PHP Warning:  Module 'Phar' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'posix' already loaded in Unknown on line 0                                                                                                                                                                            
  PHP Warning:  Module 'readline' already loaded in Unknown on line 0                                                                                                                                                                         
  PHP Warning:  Module 'shmop' already loaded in Unknown on line 0                                                                                                                                                                            
  PHP Warning:  Module 'SimpleXML' already loaded in Unknown on line 0                                                                                                                                                                        
  PHP Warning:  Module 'soap' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'sockets' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'sqlite3' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'sysvmsg' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'sysvsem' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'sysvshm' already loaded in Unknown on line 0                                                                                                                                                                          
  PHP Warning:  Module 'tokenizer' already loaded in Unknown on line 0                                                                                                                                                                        
  PHP Warning:  Module 'wddx' already loaded in Unknown on line 0                                                                                                                                                                             
  PHP Warning:  Module 'xmlreader' already loaded in Unknown on line 0                                                                                                                                                                        
  PHP Warning:  Module 'xmlwriter' already loaded in Unknown on line 0                                                                                                                                                                        
  PHP Warning:  Module 'xsl' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Warning:  Module 'zip' already loaded in Unknown on line 0                                                                                                                                                                              
  PHP Notice:  Undefined property: DOMDocument::$documentElement in /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php on line 459                                               
  PHP Stack trace:                                                                                                                                                                                                                            
  PHP   1. {main}() /mnt/daten/php/tttest/app/console:0                                                                                                                                                                                       
  PHP   2. Symfony\Component\Console\Application->run() /mnt/daten/php/tttest/app/console:23                                                                                                                                                  
  PHP   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:123                                                                         
  PHP   4. Symfony\Component\HttpKernel\Kernel->boot() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:70                                                                             
  PHP   5. Symfony\Component\HttpKernel\Kernel->initializeContainer() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:133                                                                            
  PHP   6. Symfony\Component\DependencyInjection\ContainerBuilder->compile() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:511                                                                     
  PHP   7. Symfony\Component\DependencyInjection\Compiler\Compiler->compile() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:589                                                 
  PHP   8. Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass->process() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php:107                       
  PHP   9. Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass->process() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php:3  
  9                                                                                                                                                                                                                                           
  PHP  10. Symfony\Bundle\FrameworkBundle\DependencyInjection\FrameworkExtension->load() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php:55               
  PHP  11. Symfony\Component\DependencyInjection\Loader\XmlFileLoader->load() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php:53                                   
  PHP  12. Symfony\Component\DependencyInjection\Loader\XmlFileLoader->parseFileToDOM() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php:41                                    
  PHP  13. Symfony\Component\Config\Util\XmlUtils::loadFile() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php:279                                                             
  PHP  14. call_user_func:{/mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:78}() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:78                   
  PHP  15. Symfony\Component\DependencyInjection\Loader\XmlFileLoader->validateSchema() /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php:78                                                        
  PHP Fatal error:  Uncaught Error: Call to a member function getAttributeNS() on null in /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php:459                                 
  Stack trace:                                                                                                                                                                                                                                
  #0 [internal function]: Symfony\Component\DependencyInjection\Loader\XmlFileLoader->validateSchema(Object(DOMDocument), false)                                                                                                              
  #1 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php(78): call_user_func(Array, Object(DOMDocument), false)                                                                                       
  #2 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php(279): Symfony\Component\Config\Util\XmlUtils::loadFile('/mnt/daten/php/...', Array)                                      
  #3 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php(41): Symfony\Component\DependencyInjection\Loader\XmlFileLoader->parseFileToDOM('/mnt/daten/php/...')                    
  #4 /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php(53): S in /mnt/daten/php/tttest/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlF  
  ileLoader.php on line 459                                                                                                                                                                                                                   
  .                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                              

install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--] [<packages>]...

The "request" service is deprecated and will be removed in 3.0

The "request" service is deprecated and will be removed in 3.0

The Symfony\Bundle\FrameworkBundle\Controller\Controller::getRequest method is deprecated since version 2.4 and will be removed in 3.0. The only reliable way to get the "Request" object is to inject it in the action method

src/Netresearch/TimeTrackerBundle/EventListener/PreExecute.php

Non-Docker installation guide

Hi guys,

can you please add an installation guide for non-docker environments? What must be done to set up database correctly? Perhaps some sample data might be useful :).

Thanks a lot

Michael

Input fields misaligned

After selecting a table cell the inline edit fields are not aligned properly inside the cell.

grafik

Decouple timetracker from LDAP

Hi guys,

for some reason timetracker is hard-wired to LDAP. It would be nice to have a non-LDAP login.

Kind regards

Michael

CSV Import feature

Hi everyone,

it would be very useful to have a simple file import functionality for adding worklog entries.

My suggestion would be to offer a file input field which receives a .csv file mapping to the columns of the worklog table.

how to setup and/or disable oauth

how to setup and/or disable oauth?

whether i get

Fatal error: Uncaught Symfony\Component\Config\Definition\Exception\InvalidConfigurationException: The path "hwi_oauth.resource_owners.jira.client_id" cannot contain an empty value, but got null.

or

Warning: file_get_contents(abc): failed to open stream: No such file or directory in vendor/hwi/oauth-bundle/HWI/Bundle/OAuthBundle/Security/OAuthUtils.php on line 216

Warning: openssl_sign(): supplied key param cannot be coerced into a private key in vendor/hwi/oauth-bundle/HWI/Bundle/OAuthBundle/Security/OAuthUtils.php on line 219

Warning: openssl_free_key() expects parameter 1 to be resource, boolean given in vendor/hwi/oauth-bundle/HWI/Bundle/OAuthBundle/Security/OAuthUtils.php on line 220
{"message":"Invalid Ticketsystem Token (Jira) you're going to be forwarded","forwardUrl":"\/connectjira\/jira"}

Booking time for external projects fails

External projects are configured to book into internal Jira.

This creates a internal ticket for every external ticket number. this fails currently as Jira cannot decode the POST request introduced in PR #39

JiraApi: Unknown Guzzle exception: Client error: POST https://jira/rest/api/latest/search/ resulted in a 400 Bad Request response: {"errorMessages":["Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token\n at [Source: org.apach (truncated...)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.