/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $settings = &drupal_static(__FUNCTION__, array()); if (!isset($settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… if ( ( // If this URI has a host, and… isset($parts['host']) && // The host is different from the current host… $parts['host'] !== $base_url_parts['host'] ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; // Let's also normalize the server doc root. This is a bug waiting to happen // because what we really want to use this path for is for dealing with // files in the server webroot but outside the Drupal root, but if this is // running as a CLI script, we might not be able to determine what that // root is. In that case, we'll use the Drupal root. // @see http://drupal.org/node/1780398 $filter->settings['docroot'] = (drupal_is_cli() || !isset($_SERVER) || !isset($_SERVER['DOCUMENT_ROOT'])) ? DRUPAL_ROOT : $_SERVER['DOCUMENT_ROOT']; $settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $settings['current_settings'] = &$settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~(href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $settings later and not have the changes be "permanent." $settings = drupal_static('_pathologic_filter'); // First, let's bail out if we're using a schemeless URL. // @see http://drupal.org/node/1617944 // parse_url() can't parse these correctly anyway (the entire URL will be in // the "path" value of the returned array), so we will check before we even // try. if (strpos($matches[2], '//') === 0) { return $matches[0]; } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE // If there's a scheme part and it doesn't look useful, bail out. // "files" and "internal" are for Path Filter compatibility. || (isset($parts['scheme']) && !in_array($parts['scheme'], array('http', 'https', 'files', 'internal'))) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. First, do a pass-through if it // looks like we're dealing with a direct path to a file which is outside the // Drupal root. Use realpath() and the server's (?) docroot to iron out // wrinkles to the file's actual path. // @see http://drupal.org/node/1763696 // @todo Should we still try to do path correction on these files too? $filepath = realpath($settings['current_settings']['docroot'] . '/' . $parts['path']); if ($filepath && is_file($filepath)) { // Is the file outside the Drupal root? if (strpos($filepath, DRUPAL_ROOT) !== 0) { return $matches[0]; } else { // Linking to a file inside the Drupal root. Okay. $settings['is_file'] = TRUE; } } elseif (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $settings['is_file'] = TRUE; } else { $settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } } // Okay, if here, we either found something, or we hit the end of the loop. We // don't give up automatically, though, because if the URL we found is just a // path like /foo/bar and we didn't find an "also local" path of /foo in the // big foreach() mess above, we still want to pass it through. if (!$found && !(isset($parts['path']) && !isset($parts['host']))) { return $matches[0]; } // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // Let's see if we can split off a language prefix from the path. if (!$settings['is_file']) { if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } else { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. // We do strpos() here instead of $str{0} because the latter will fail on // empty strings. if (strpos($parts['path'], '/') === 0) { $parts['path'] = substr($parts['path'], 1); } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are enabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($settings['is_file'])) { $settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($settings['is_file'] && !$settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return "{$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } F.d. världsrekordhållaren vill leverera ett bilägande i världsklass. | IHM

F.d. världsrekordhållaren vill leverera ett bilägande i världsklass.

IHM Business School är också kompetensutvecklingsleverantör till Volvo Car genom ett riktigt bra samarbete sedan mitten av 70-talet. Det som idag heter Volvo Car Business School har utvecklats tillsammans med Volvo i 40 år och skapat många bra affärer.

Vi har tidigare berättat om framgångarna hos återförsäljaren Bil-Bengtsson i Södra Sverige, nu har det blivit dags att få en inblick i hur det går för Nybergs Bil i Jönköping, Nässjö och Eksjö. Vi träffar deras VD Anders Larsson som gärna berättar om deras ”Kulturresa” och implementeringen av deras värdegrund ”ETTA”, men naturligtvis hittar vi lite annat smått och gott på vägen, så, tag plats.



– Hej Anders, nu har du varit VD på Nybergs Bil i ca 5 år och vad det inneburit måste vi prata om, men först måste vi höra lite om vad du har i bagaget sedan innan. Så ska vi köra en liten kortfattad bakgrunds-check?

– Hej Aludd, det här ska bli kul, men just kortfattad har jag nog aldrig varit, vi gör ett försök. Jag är 55 år, bosatt i Kungälv och har tre vuxna barn plus två bonusbarn. Jag har jobbat inom bilvärlden i många olika roller under min yrkeskarriär och jag är Diplomerad Marknadsekonom på IHM (DIHM). Där har du hissversionen :-)
 
– Oj, nu var du väldigt kortfattad? Men jag har hört att du är f.d. världsrekordhållare på att köra en bil på två hjul, om jag inte är fel ute så körde ni 5,6 mil?
 
– Ha ha, ja det stämmer. Jag började som tekniker och provförare för Volvo i början av 80-talet, under den perioden så var min systers man med i Helldrivers, en motorshow som turnerade runt i hela världen och gjorde olika stunts med bilar. Vi var ett gäng provförare på Volvos provbana i Hällered som tyckte det här var spännande så vi startade Hälldrivers, det blev senare Team Hällered, och började lära oss massor av trick. Vi gjorde några shower som blev populära och Per Gyllenhammar, som då var styrelseordförande i Volvo, tyckte att det här kunde bli något mycket större och efter några år startade vi Volvo Dynamic Safety Show där vi utförde massor av olika trick med bilarna, bland annat så körde vi bilarna på två hjul. 
 
Det var någon som såg att det fanns noteringar i Guiness World of Record i den här grenen och någonstans i mitten av 80-talet så lyckades vi köra 5,6 mil på två hjul och blev världsrekordhållare, sedan dess har Team Hällered slagit massor av olika världsrekord, en riktigt kul tid i mitt yrkesliv.
 
– Men du slutade?
 
– Ja, jag ville vidare och fick för mig att jag skulle jobba med bilförsäljning, så 1987 fick jag jobb på Bil & Truck, nuvarande Bilia, i Göteborg som säljare. Det blev några år där och sedan fick jag ett jobb som chef på Motormännens Testcenter men efter några år ville jag tillbaka närmare sälj. 
 
Jag blev regionchef för Renault Norra Sverige och efter några ytterligare år också försäljningschef för Renault och senare försäljningschef för Ford Scandinavia. Det var lärorika år och lite spännande att vara lite utanför Volvos värld även om vi då tillhörde samma koncern.
 
– Sedan var det dags för Volvo igen?
 
– Ja, det blev några år som försäljningschef Volvo Sverige och några år som ansvarig för Volvoaffären på Bilia innan det var dags för Nybergs Bil 2011.
 
– Då var det dags för din nuvarande tjänst som VD?
 
– Det stämmer, jag hade under mina år som chef blivit allt mer intresserad av själva ledarskapet, så det kändes som att det var där min utmaning låg när jag klev in i rollen som VD på det väletablerade och familjeägda Nybergs Bil.
 
– Så vad gjorde du när du klev in?
 
– Jag bestämde mig för att lyssna så mycket som möjligt, på alla anställda, under de två första månaderna för att förstå Nybergs-andan, det här har byggts upp under många år och är alldeles för viktigt för att bara gå in och ändra på utan att förstå om och var det kunde finnas brister. Lika viktigt var det för mig att förstå vad mina medarbetare tyckte var bra och varför.
 
Efter ca 3 månader presenterade jag mina tankar över hur vi skulle nå en fortsatt utveckling. Därefter tog vi ett första steg genom att alla i ledande befattning fick genomgå ett av era ledarskapsprogram, för att hitta en samsyn om vår företagskultur och en gemensam ledarskapsfilosofi
 
Vi satte oss med representanter från Volvo och IHM, och började diskutera hur Ledarprogrammet skulle se ut och kring och det mynnade ut i det som Volvo idag kallar Customer Satisfaction 2.0. Ett program som utöver Ledarskap innehåller vår företagskultur där vi jobbar med våra värderingar och vår sälj/servicekultur med kunden i fokus.” Ett utifrån och in perspektiv istället för tvärtom som är ganska vanligt 
 
Tillsammans satte vi sedan 3-års planen ”Nybergs till nästa nivå” där vi satte tre fokusområden: Kompetens & ledarskap, Hur jobbar vi tillsammans och All-in på alla Volvo-koncept.
 
– Det här jobbade ni med 2011 och vad hände 2012?
 
– Det kändes som bitarna föll på plats hos oss i ledande befattning under det första året så nu var det dags att få med sig hela bolaget, vi är ca 160 totalt, och alla måste driva mot samma håll.
 
En del i det arbetet var att alla ledare fick genomgå utbildningen ”Hur jag fattar beslut”, JTI personlighetsanalys och Fyrarummaren hos er, analysinstrument och pedagogiska hjälpmedel för att se och förstå varandra bättre. Då gick proppen ur, plötsligt kom vi igenom i arbetet med att skapa en tydlig och väl fungerande ledning som jobbade tätt tillsammans med samma mål, på samma sätt. 2014 så kände jag att vi implementerat Customer Satisfaction. 2.0 och att vi var en tajt organisation med tydliga gemensamma mål. Utifrån detta så skapade vi en handlingsplan för hur vi alla på bolaget skulle hitta en gemensam plattform som skulle leda oss, i kundernas ögon, mot målet ”Bilägande i världsklass”.
 
Här var det viktigt att vi inte sprang för fort så att alla kände att de fick vara med och bidra. Vi utvecklade och förstärkte våra PU-samtal (personal utvecklingssamtal), vi skapade en tydlig intern kommunikationsstrategi och skapade mål och utvecklingsplaner för alla i bolaget.
 
– Men hur mycket var du involverad i detta, var det inte de andra i ledande befattning som fick ta i detta?
 
– Naturligtvis var detta ett jobb för alla på chefs-nivå, och jag var i allra högsta grad involverad, jag bestämde mig för att lära känna alla, både till namn och intressen utanför jobbet, känslan av att vi är ett företag som jobbar tillsammans, som jag ville skulle genomsyra företaget, innebär att jag inte kan isolera mig från de övriga, dessutom gillar jag att vara med där matchen spelas.
 
– Ni jobbade hårt med detta, såg ni något resultat?
 
– Ja, utöver vårt dagliga arbete så lade vi under de första åren ca 30.000 utbildningstimmar med fokus på mjuka värden. I Volvo-världen mäts vi återförsäljare hela tiden och tittar vi på en av dessa mätpunkter, NKI (Nöjd kund index), så hade vi förflyttat oss från att ligga någonstans kring medel i vår säljorganisation till att vara klart över medel. Tittar vi på samma mätningar när det gäller verkstaden hade vi förflyttat oss från ett svajigt resultat under medel till att vara Topp 3 på alla mätpunkter i verkstaden.
 
2015 fick vi en ny utmaning i samband med att vi gjorde en satsning internt med ert blended-learning program för säljträning, där alla med säljansvar gör simulerade kundmöten i datormiljö i kombination men fysiska möten med handledare från IHM. Vi satte då också en målplan för alla våra ledare och där kände jag att vi som ledare inte kände oss tillräckligt trygga i detta nya arbetssätt – blended learning, och vi bestämde då att våra ledare skulle göra ytterligare ett steg i vår  ”kulturresa”. 
 
Detta resulterade i att vi under sommaren 2015 hade i diskussioner med IHM där vi förstärkte processen med ett Trainer to Trainer program för våra ledare som bygger på att de får verktyg som stärker deras roll som coacher när det gäller att ge feedback och utveckla sina medarbetare i vardagen. En av de största utmaningarna för våra ledare är att ta över stafettpinnen när duktiga handledare åker hem, att vara uthålliga och själva våga leda förändringen efter genomgått ledarskapsprogram. Train the trainer programmet var mycket utvecklande för oss alla på Nybergs och jag måste säga att ni har fantastiska handledare på IHM.
 
– Så nu var allt satt och det bara rullade på?
 
– Nej, nu var grunderna satta och vi hade en härlig energi i bolaget. Nu jobbade vi igenom, som en del i förbättringen av den interna kommunikationen, vår värdegrund. Det utmynnade i något som vi kallar för ”E.T.T.A.”, Engagemang, Tillit, Tillsammans och Ansvar, det var formeln som skulle ta oss till ”Bilägande i världsklass”. Först implementerades detta hos alla i ledande befattning och sedan all personal i grupper om 15. Det här var ett arbete som vi gjort tillsammans under åren och det var nu det sammanfattades i skrift, och det var ett fantastiskt engagemang. I denna implementeringsfas så kom vi gemensamt fram till att vi skulle belöna ett gott beteende utifrån vår kultur. Varje anställd fick en blå boll som de kunde lägga på en av sina medarbetare, som de tyckte levt upp till våra värdeord, i slutet av månaden. Och den eller de personer som fick mest bollar belönades på lite olika sätt.
 
– Hur har det gått för dig, har det blivit några bollar?
 
– Nej tyvärr inte, jag har idag en boll men den som leder denna månaden är redan uppe i 12, så jag får helt enkelt bättra mig!
 
– Nu har ni genomfört er plan så här långt och du presenterade tidigare er förbättring på NKI, du har också vittnat om energi och en bra stämning, men vad har hänt med resultatet?
 
– Från 2011 till när vi stängde böckerna 2015 har vi fördubblat vårt resultat, och 2016 har börjat bättre än succéåret 2015, så det ser mycket bra ut.
 
– Det låter onekligen bra och jag tackar för denna intervju och det finns säkert anledning att återkomma för att se hur ni utvecklas på Nybergs Bil.
 
– Tack själv, jag träffas gärna igen.    
30 juni 2016