Giter VIP home page Giter VIP logo

personio's Introduction

TYPO3 Extension personio

TYPO3 10 TYPO3 11

1 Features

  • Job positions from Personio XML feed

2 Usage

2.1 Installation

Installation using Composer

The recommended way to install the extension is using Composer.

Run the following command within your Composer based TYPO3 project:

composer require pkd/personio

Installation as extension from TYPO3 Extension Repository (TER)

Download and install the extension with the extension manager module.

2.2 Pre-requisite settings on Personio

  1. Enable the XML-Feed on your career page. After activation the feed is available at the following URL i.e. https://youraccount.jobs.personio.de/xml

2.3 Minimal setup

  1. Include the static TypoScript of the extension.
  2. Create a list plugin on a page
  3. Create a show plugin on a page

Filtering For filtering, the specification of the feed URL in the plugin is required. Please specify a feed URL and save the plugin first. After saving, the filters are obtained from the personio xml feed.

Route Enhancers

routeEnhancers:
  Personio:
    limitToPages:
      - 26
    type: Extbase
    extension: Personio
    plugin: Show
    routes:
      -
        routePath: '/{uid}'
        _controller: 'Personio::show'
    defaultController: 'Personio::show'

*26=Uid of your page with a show plugin

personio's People

Watchers

Patrik Koschella avatar  avatar

Forkers

olegkarun bgmgmbh

personio's Issues

jobDescriptions empty

Hello,
after installing and configuring the extension, I currently have the problem that the jobDescriptions field is not populated.

However, in the Personio XML, this field is populated.
Excerpt of the XML:

<position>
<id>123451</id>
<office>München</office>
<department>Test Department</department>
<recruitingCategory>Festangestellte</recruitingCategory>
<name>Teststelle (w/m/d)</name>
<jobDescriptions>
<jobDescription>
<name>Ihre Aufgaben</name>
<value>
<![CDATA[ Lorem ipsum dolor it samet ]]>
</value>
</jobDescription>
<jobDescription>
<name>Ihr Profil</name>
<value>
<![CDATA[ Lorem ipsum dolor it samet ]]>
</value>
</jobDescription>
<jobDescription>
<name>Warum wir?</name>
<value>
<![CDATA[ Lorem ipsum dolor it samet ]]>
</value>
</jobDescription>
<jobDescription>
<name>Ansprechpartner</name>
<value>
<![CDATA[ Lorem ipsum dolor it samet ]]>
</value>
</jobDescription>
</jobDescriptions>
<employmentType>permanent</employmentType>
<seniority>experienced</seniority>
<schedule>full-time</schedule>
<yearsOfExperience>2-5</yearsOfExperience>
<keywords>Lorem,Ipsum,Dolor,München</keywords>
<occupation>general_and_other_medical_and_health</occupation>
<occupationCategory>medical_and_health</occupationCategory>
<createdAt>2022-04-06T09:51:30+00:00</createdAt>
</position>

What can/must I adjust to get all job relevant information on the detail page?

Best regards
T.Bittner

TYPO3 V12 - are you planning to update your extension?

Hi Patrik,

thank you for sharing this extension. I am planning to give it a try for a V11 project. But soon the first projects will get upgraded to V12. Are you plaaning to make you extension compatible?

Best wishes,
Mario

Unexpected behavior if fetched xml contains only one position

When the fetched XML contains only one position, the array that "fetchFeedItems" will return doesn't contain one entry but a flat array of the properties.
This is a side-effect of the "json_decode(json_encode())" trick as discussed here: #https://stackoverflow.com/questions/23766159/php-simplexml-arrays-generated-differently-for-single-child-and-multiple-child#comment36552222_23767934

It can be solved by simply using a foreach to loop over the result. It doesn't look that fancy but it works :-)

change

if ($response->getStatusCode() === 200 && strpos($response->getHeaderLine('Content-Type'), 'text/xml') === 0) {
    $content = $response->getBody()->getContents();
    return json_decode(
        json_encode(
          simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA)
        ),TRUE
      )['position'];
    }

to

 if ($response->getStatusCode() === 200 && strpos($response->getHeaderLine('Content-Type'), 'text/xml') === 0) {
      $xmlContent = simplexml_load_string($response->getBody()->getContents(), 'SimpleXMLElement', LIBXML_NOCDATA);
      $jobs = [];
      foreach($xmlContent as $xmlJob){
          $jobs[] = (array)$xmlJob;
      }
      return $jobs;
    }

in PersonioService.php L40 ff

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.