/** * 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); } Blogginlägg | IHM

Blogginlägg

För att kunna ställa fler brottslingar inför domstol jobbar polisen sen några år tillbaka med att ta fram nya arbetssätt. Under 2011 fick de hjälp av en grupp elever från IHM Business School, som såg över Malmöpolisens rutiner och föreslog flera åtgärder som nu införts. – Polisens effektivitet är föremål för ständig debatt och det är viktigt för polisen att jobba med de här frågorna, berättar Anna Gustafsson. IHM-eleverna Henrik Oredsson, Eva Olsson, Adis Korjenic och Cathrine Sjöblom De fem eleverna Eva Olsson, Henrik Oredsson, Cathrine Sjöblom, Adis Korjentic och Mathias Söderlunds hjälp till polisen utgjorde deras examensarbete för IHM. Till vardags arbetar de i näringslivet, men har studerat bland annat verksamhetsstyrning, projektledning och business management på IHM Business School för att ge sina karriärer en skjuts framåt. Deras examensarbete ligger nu till grund för en rad förbättringar som har fått polismyndigheter från bland annat Stockholm, Kalmar och Uppsala att komma ...

Jonas Jutbring skapade själv sitt drömjobb på IKEA Business. Efter många år som butikssäljare och slutligen även säljledare på IKEA Work, bestämde han sig för att sätta sig i skolbänken igen. Visst hade han fått mycket praktisk säljträning på IKEA, men han kände ett behov av att fördjupa sina kunskaper inom försäljning och marknadsföring för att kunna komma vidare. Han valde Företagssäljare på IHM.    - Det var under utbildningen som jag konstaterade ”så här jobbar inte Ikea med företagsförsäljning” och det var mina nyvunna kunskaper som också fick mig att ifrågasätta ”varför inte det?”.   Han fick chansen att presentera sitt förslag om proaktiv företagsförsäljning för ledningsgruppen. Och fick jobbet.    Vad fick dig att välja YH-utbildningen Företagssäljare på IHM? - Jag valde mellan två liknande utbildningar, en på IHM och en hos en konkurrerande skola. Men jag valde utbildningen Företagssäljare på IHM, dels för att jag ville jobba med B2B-försäljning, men också för att IHM har e...

Det blir allt svårare att komma ner i flow. Det är i flow vi presterar och är mest effektiva. Kan du komma ner i flow under ordinarie arbetstid?   Pling! Ett SMS, en nyhetspush, ett mail, en instant messaging-konversation, en Facebook-kommentar… En notis som poppar upp på din telefon eller dator när du sitter och jobbar i det där oinspirerande excel-arket. Nog avbryter du det du håller på med för att istället kika vad som notisen gäller?   Kanske inte ett stort problem i sig? Det är ju skönt med en kort paus från monotona arbetsuppgifter då och då, så att man kan hålla tankarna fräscha. Men vad händer när det kommer ett pling var femte minut? Hur påverkas vår arbetsdag- och vi själv av dessa ständiga störningsmoment? För 14 år sedan kom Bodil Jönssons bok ”Tio tankar om tid”, där hon skrev om ställtid (tid att ställa i ordning, ställa av och ställa om). Då blev vi störda 13 gånger i timmen. Idag blir vi avbrutna 37 gånger i timmen.  Vår hälsa påverkas negativt av att ständigt vara u...

Hon skulle behöva lägga tre timmar om dagen för att besvara alla jobbansökningar direkt. Men hennes främsta uppgift är att leda och coacha sina medarbetare så att de känner sig ”uppskattade, önskade och älskade”. Ska det hända, behöver man nog en Passion Manager, tänker jag, och stegar fram för att anmäla mig i den fantastiska receptionen av äkta kristall från Orrefors. Jag hälsas välkommen till Clarion Post Hotel av Maria Vallin, en varm, professionell servicemänniska. Hon slussar mig till baren för att beställa kaffe och vi slår oss ner i sköna, snygga fåtöljer för en pratstund om vad som döljer sig bakom hennes befattning; Passion Manager. Hon började i oktober i fjol och har tillbringat sommaren ute i verksamheten för att lära sig. -    Jag går runt och pratar med medarbetarna, jag ägnar mycket tid åt att uppmuntra dem. Mitt fokus ligger alltid på det som är bra. Vi som jobbar här är lösningsorienterade, inte problemfokuserade. Det funkar inte om man vill hålla hög servicenivå. ...

Den minnesgode läsaren kommer säkert ihåg när vi skrev om priset för bästa examensarbete bland de som läste "Företagssäljare" i november 2012. Examensarbetet gjordes av Jonas Jutbring, Tobias Andersson, Carl Gustafsson, Cecilia Lind och Linda Thyrén. Vad hände sedan? Här kan du läsa vad Jonas Jutbring har att säga.

På ett möte nyligen träffade jag en gammal bekant, en man, som berättade för mig hur viktigt det är med betyg i skolan och att barnen fostras in i att tänka ”rätt och riktigt”. Och han pratade om kontaktnätet som måste byggas upp, gärna med föräldrarnas hjälp. Mannen sa att” till syvende och sist” så är ju betyg ett instrument som är bra för både barnen, föräldrarna och läraren. Det ger en fingervisning vartåt det lutar och om det ska bli ”någonting” av flickan/gossen. Kanske det, sa jag men det finns ju en risk att några stämplas för tidigt och inte får vara med, människor mognar så olika. Förvisso, sa mannen, men lite spill får man alltid räkna med, så är det i alla system. – Jag känner en kille, sa jag, som vägrade gå i skolan redan i första klass, han blev skickad till Uppsala och fick träffa psykologer i 2 dagar för testning, han bedömdes som ”frisk” och var naturligtvis tvungen att börja i ”ettan”, men sen fortsatte eländet. Han åkte fast för snatteri när han var 8 år, högg en...

I en rapport som publicerats i Harvard Business Review kan man ta del av vilka som är de främsta egenskaperna hos toppchefer. Efter att ha intervjuat 1 700 VD:ar om vad som utmärker en toppchef, kom man i rapporten fram till att förmågan att inspirera, ha tydligt kundfokus samt besitta en förmåga till samarbete var de tre viktigaste egenskaperna hos en toppchef. Men är inte detta ännu en undersökning som bekräftar det vi redan vet? Problemet för de flesta av oss är väl inte att vi saknar insikt i vad som är ett bra ledarskap, utan hur vi kan utveckla och förädla dessa eftersökta förmågor?  Eller med andra ord: ”Hur sjutton bär jag mig åt?”  Det som känns mer intressant med rapporten är att den fastslår att ledare kan öva upp sin förmåga att bli mer inspirerande. Genom ökad medvetenhet, feedback och en plan för utveckling menar författarna att ledare kan öka sin förmåga att inspirera (och därigenom bidra till ökad effektivitet i organisationen).  Detta bekräftar en studie som jag sjä...

Hej! Jag heter Madeleine och kommer framöver att skriva om ledarskap. Vad är ledarskap, vilka trender ser vi just nu, forskning och utveckling inom ledarskap och relaterade ämnen men även vad jag ser och hör i min vardag. Jag har ca 20 års erfarenhet av olika typer av ledarskap i olika befattningar på olika nivåer t.ex. VD, redovisningschef och business controller. Men har sedan ett antal år tillbaka arbetat med bl a utbildning av chefer och medarbetare och utbildar andra konsulter och utbildare.  En fundering jag har haft under alla år och som dök upp på mitt första sommarjobb som 13-åring är, varför det betyder så mycket för de flesta att ha en bra chef/ledare. En av de första frågorna jag fick när jag gick mitt första ledarskapsseminarium i 20 årsåldern var: Tänk på en ledarskapsupplevelse du har haft antingen som ledare eller som medarbetare, vilken typ av ledarskap föredrar du mest/minst?  Det är en bra fråga att ställa sig själv och andra och som jag tänkte på i förra veckan n...

How do gender differences play out, at work?  Is there any difference between male and female brains? What would you do differently if you knew that there were differences, and what they were? The brain consists of two hemispheres and the corpus callosum, which is like a bridge that connects them. For right-handed people, the right hemisphere handles most spatial processing and the left hemisphere most language functions. This is known as lateralization. For left-handed people (which is about 12% of the population), half have speech predominantly in the left brain, and half across both sides. The popular distinction that the left brain represents logic and the right brain is more artistic and intuitive, is a gross over-simplification.  Structurally, the female brain has more connections across the corpus callosum, leading to more distributed processing, and the male brain is more lateralized. In terms of performance, the largest difference is in visuo-spatial rotation (more women th...

Hela ledningsgruppen och barnen satt på åskådarplats när Boris Lennerhov, VD för Sveriges enskilt största varuhus, berättade sin historia på IHM i Göteborg. Gekås är onekligen en framgångssaga i särklass. 33 miljoner stannade försäljningen på lördagen den 5 oktober på Gekås Ullared. I genomsnitt sålde Gekås för 3 miljoner i timmen under dagen. 25.000 kunder bidrog under dagen till det nya försäljningsrekordet, och vid stängningstid var det fortfarande 4 000 kunder kvar i varuhuset. Trots att varuhuset stänger 20.00 var inte sista kunden ute ur varuhuset förrän strax efter 21.30.  Det fanns inte en parkering kvar på parkeringsplatsen och t.o.m. de 6 500 kundvagnarna tog slut. 1000-talet medarbetare som var taggade för att slå rekord, ett fullbokat hotell, campinganläggning och stugby. Alla beredda att göra sitt yttersta. Hur bär han sig åt, Boris Lennerhov? VD sedan 2000, en entreprenör av rang. Under perioden har verksamheten kompletterats med Camping & Stugby som idag är en av ...

Oj, vilken fantastiskt givande resa! Nu har vi äntligen idag lämnat in vår examensrapport. En dag före deadline. Känns bra! Dessa två år har inte bara varit en kunskapsresa utan även en resa kantad av möten med underbara och intressanta människor. Genom vårt examensarbete har vi blivit ett sammansvetsat gäng som även i framtiden kommer att hålla kontakt. Vi har redan planerat in julfesten och lovat att träffas två gånger om året i all evighet. Just idag är det en euforisk känsla som infunnit sig och jag hoppas att vi även känner samma stolthet och glädje efter examinationen nästa vecka. Men visst är vi nervösa inför den muntliga presentationen som skall hållas inför uppdragsgivare, examinator och medbedömmare. Det är bra att vara lite nervös inbillar jag mig. För att sträcka på sig och prestera lite på tå sådär... Då blir det bäst.  Tack alla människor jag mött under dessa två år, ni har förgyllt min resa!  PS. Jag toppar min examen med ytterligare en kurs fram till december. Jag få...

John Seddon, VD för Vanguard Consulting, gästprofessor och gästforskare vid ett flertal universitet, besökte IHM och föreläste under rubriken "Rethinking Management for Lean Service".  - Varje gång jag besöker Sverige, noterar jag att toppcheferna inte själva deltar på seminarierna, utan skickar projektledare för Lean eller assistenter. Det är det enda land jag besökt där toppcheferna inte tycker sig behöva lära nytt eller anpassa sig efter kundernas behov, säger John. Under seminariet sa han rakt ut att han inte jobbar med, eller inte ens gillar, Lean i sin rena form. - Det är ett alldeles för trubbigt verktyg, framförallt för tjänsteföretag, säger John. John Seddon föredrar att betrakta organisationen som ett system och kallar sin metod för Systems Thinking. Han menar att vi måste låta företagets verksamhet utformas efter kundernas verkliga behov och sluta låta oss styras av mätetal. Det som oftast fallerar, menar John, är att företagsledningen fokuserar på att försöka styra och ä...

Businesses are more focused than ever on excellent performance and a competitive edge through coaching, Leadership development etc. Outstanding performance is above all a game played in the head. In the corporate world, this calibre of self-awareness and self-belief is highly valued, so what makes us perform really well and how can we maintain or improve our brain fitness? And what can we learn from the Olympics and Paralympics?  Hone your senses Smell, taste, touch, vision and hearing. The five senses are how your brain knows what is going on in your world, through your nose, tongue, skin, eyes and ears. In the business world we are increasingly aware of the importance of integrating logic and emotion via the left and right hemispheres of the brain, but the brain-body axis should not be under-estimated.  Smell is the most emotive sense because the olfactory nerve travels directly from the nose to a part of the brain that is close to the emotional centres, the limbic system. All the...

Kina, där borta på andra sidan jorden. Dit många äventyrare har begett sig via fot, häst, kamel, båt och flyg. En del sandlådefantaster har säkert försökt gräva sig dit via jordens mittpunkt, men de drunknade troligtvis någonstans sydost om Nya Zeeland. Jag skall nu bege mig tillbaka till Kina, landet där det är OK att gå till köpcentrumet i pyjamas, flippflops och en cigarett hängandes i mungipan. Landet där byråkrati och relationer är allt. Detta röda land som kallar sig kommunistiskt, men troligtvis är mer fascistiskt, väcker skräck hos vissa och beundran hos andra. Industrijätten som producerar de mesta som vi har i våra hem har även en mystisk aura runt sig. Vi vet oftast inte vad som försiggår där borta förutom de sporadiska artiklarna som dyker upp på Aftonbladet och Dagens Nyheter. Kina är även ett av världens äldsta civilisationer (de vise de tvistar fortfarande om det är 5000 eller 3000 år som ett ihållande rike). Här har man pumpat olja ur marken i flera tusen år och bygg...

BRANN AB är en fullservicebyrå inom immaterialrätt och kommersiell juridik. IHMs uppdrag är att öka deltagarnas (patentkonsulter och jurister) insikt och förståelse för rollen som representant för Brann och hur viktig konsultens agerande är i alla kundkontakter. Syftet är också att skapa en proaktiv kundbearbetning där konsulterna hos Brann har kompetens att fånga upp och agera på behovs- och köpsignaler som skall leda till nya affärer.

I juli var jag inbjuden som en av talarna på en ledarskapskonferens i München, sponsrad av den tyska Burdakoncernen (mediagigant). Deltagarna var cirka 700 kvinnor i ledande positioner, inte enbart från Tyskland. En av de andra talarna var Ursula Schwarzenbart, chef, director, för mångfaldsarbetet på Daimler AG. När vi kom in på frågan om kvinnors och mäns olika sätt att leda och att verka inom arbetslivet säger Frau Schwarzenbart plötsligt:  ”Vi kan inte klandra männen för att dom är som dom är, när allt kommer omkring så är det ju vi (kvinnor) som har uppfostrat dom.” Gäller det bara i Tyskland? Nja, jag tror inte det. Visst är det ett intressant uttalande och om vi nu för en sekund tittar på forskningen så är de flesta forskare överens om att de första åren är de viktigaste. Jag är ju psykolog och hela utbildningen i Uppsala grundades på dessa tidiga år i en människas liv. Det påstås att efter 5 års ålder finns de grundläggande värderingarna och normerna på plats, barnet har fått...

Sidor