/** * 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 inte så länge sedan besökte jag ett event där det fanns flera utställare som marknadsförde ledarskapsutbildningar. Jag gick fram till en utställare, tittade på deras utbud och pratade lite med dem. De hade bra grejer. Seriöst. Inte samma saker som jag själv vurmar för, men de sålde solida, genomtänkta kurser. Så gick jag vidare till montern bredvid. Lika fin monter. Något mindre, men minst lika snygg, med fina broschyrer, välklädda säljare med kavaj och välstrukna skjortor, diskreta, men dyra, slipsar, välkammade och nyklippta. Jag såg nog väldigt skruffig ut i jämförelse, med jeans, jacka och ryggsäck. Jag plockade upp en av de fina broschyrerna och började titta i den. Ganska snart lade jag märke till några saker som var lite off i broschyren. Det såg inte riktigt rätt ut. Ungefär som att plocka upp ett nummer av Astronomy & Astrophysics, och hitta en annons om astrologi i den. Jag började prata med en av säljarna. Ungefär i min ålder, men jag måste medge att han såg betyd...

Jag är gammaldags, tror på förebilder, tror på att generationer lär av varandra och att det goda föredömet kan leda till flera goda föredömen. Leda till gott ledarskap, även om jag är fundersam och tvekar ibland. Ser ingen ”ny” Nelson Mandela i Sydafrika. Snarare efterträddes han av två stycken, minst sagt, kufiska ledare, efter Mandela kom Mbeki och nu Zuma. SÅ kanske har jag fel.  Richard Björnelid, journalist och författare har skrivit en bok som heter ”SAS- Om konsten att sänka ett flygbolag” som nu finns som pocket (Bokförlaget Atlas, 2011). Jag köpte den häromdagen med onda aningar. Björnelid går igenom vad som hände under de år, från 1980 fram till idag, då flygbolaget SAS leddes av herrar som, i tur och ordning, Jan Carlzon, Jan Stenberg, Jörgen Lindegard och Mats Jansson. Och blir jag trött? Boken består av nästan 400 sidor av misstag, dåligt ledarskap, felbedömningar, strider inom bolaget och bråk mellan de skandinaviska ägarna, under 30 år. Det är en rad felsatsningar och...

-Camilla Dahlén du jobbar som brand manager på Vitamin Well och läser marknadsföring på IHM. Hur kommer det sig att du valde IHM och marknadsföring? -Valet stod mellan IHM och Berghs. På grund av mitt nya jobb som brand manager på Vitamin Well så ville jag inte plugga heltid utan hitta en utbildning som går att kombinera med jobbet. IHMs pedagogik passar också väldigt bra till Vitamin Wells utmaningar som ett ungt expanderande företag. Jag finansierar hela min utbildning själv och det gör det extra viktigt att göra rätt val.  Att utbildningen ger något. Jag började läsa Business Management fortsatte med Strategisk Marknadsföring och nu läser jag Operativ Marknadsföring. -Blev det så också, rätt val alltså? -Ja, det kändes från början. Utbildningarna på IHM är väldigt produktinriktade, man jobbar med case och diskuterar mycket vilket gör att det lätt att dra paralleller till sitt jobb. Det har kanske varit extra lätt för mig att relatera till det jag lärt mig då vi befunnit oss i en ...

Nej, vem sjutton gör det? Ordet har ju kapats och förvanskats så att vi förknippar det med SOPs och avskedsluncher, snarare än ett bättre arbetsklimat. Effektivitet har blandats samman med rationaliseringar. Att effektivisera handlar om att med ett visst antal givna resurser och kompetenser få ut mesta möjliga av organisationen. Att rationalisera handlar om att minska kostnader och bibehålla produktionen, eller att bibehålla kostnader och öka produktionen. Jaha, det låter väl som typ samma sak? Men det finns en viktig skillnad: Effektivitet handlar om kompetens, samarbete, kommunikation och koordinering. Det handlar om bra relationer. Rationaliseringar handlar å andra sidan om ’ta bort’ och ’dra ner’. Inte sagt att det inte kan vara nödvändigt ibland, men det är en annan sak än effektivitet. Jag samtalade med min gode vän och världens bästa föreläsare Janne Gunnarsson om detta. Janne beskrev följande modell av effektivitet: Effektivitet är en effekt av bra koordinering mellan indivi...

- Hej Tina Gustavsson, Unionen Chef. Du har gått IHM Verksamhetsutvecklande ledarskap.  - Hej Monica! Ja, det har jag! Jag har tidigare gått rätt många program på andra ställen och fått hur många teorier som helst, men det här var något annat. Det gav mer än alla de andra utbildningarna tillsammans. - Vilket är ditt starkaste intryck av programmet och den process du varit del av? - Det som direkt kommer upp i huvudet är ”den gröna bubblan” – en symbol för det utvecklande ledarskapet*. Målet är att hela tiden befinna sig där, det är ett förhållningssätt. Den gröna bubblan har jag för ögonen – den har blivit en stark symbol för hur jag väljer att agera. Programmet i sig är en förändrings-process, som började hos mig själv - vem är jag och varför agerar jag som jag gör? Vad är det som triggar mig i vissa situationer? Varför går jag igång? Först när du har svaret på de frågorna kan du inta ett distanserat perspektiv till det och agera annorlunda. Även rent personligt och privat gav det ...

Jag är född i en demokrati. Uppvuxen i en demokrati. Även om jag vet att det finns ställen på jorden där demokratin lyser med sin frånvaro kan jag inte föreställa mig hur det faktiskt känns att vara utan talan. I min värld råder ingen tvekan om att allas röster är lika mycket värda. (Om det i praktiken verkligen är så vackert som det låter, är en annan fråga.) Men nu har jag börjat tvivla på om demokrati alltid är den bästa lösningen. Åtminstone när det kommer till miljöfrågan. För som både du och jag vet börjar det bli riktigt bråttom. Klimatforskarna är kanske inte eniga i varenda sakfråga, men i stort är de fullständigt överens: Den globala uppvärmningen går fort. Fortare än tidigare beräknat. Nästa år kommer en ny klimatrapport som bland annat väntas avslöja att man räknat fel vad gäller Grönlands isar. Här går avsmältningen mycket snabbare än vad man tidigare trott. Ingen vidare rolig teaser till den klimatrapporten, men så är inte heller miljöforskningen en särskilt munter läs...

Hej Stefan Hesselgren, HR-chef på Bilprovningen, ni befinner er i en marknad som avreglerats. Vad är er största utmaning framöver? - Vår största utmaning är att följa marknadens utveckling och bli mer aktiv och snabbfotad i våra aktiviteter. Vi måste få till ett lokalt entreprenörskap och agera snabbare mot kunden. Vi behöver bli mer lyhörda och möta kunderna på ett bättre sätt än tidigare. Det gäller också att behålla den marknadsledande positionen och upplevas som den mest hållbara aktören. - Hur kommer ni att stödja utvecklingen av dessa färdigheter? - Initialt är det våra 35 besiktningsingenjörer som utbildas för att bättre möta sin nya roll. De ska känna sig trygga i att förstå sambanden mellan besiktning, kund och lönsamhet och därigenom kunna höja värdet för kunden och för Bilprovningen. - Vad omfattar utbildningen? - Utbildningen omfattar affärsmannaskap, affärsekonomi och kundrelationer. Den ska öka den affärsmässiga förståelsen, kundernas förväntningar och köpbeteende, oc...

Jag lyssnade på artisten och poeten Emil Jensen på radion häromdagen, och stal iden till denna text. Jensen kåserade om vårt behov av ”hjälp” och vår växande hjälplöshet. Jag blev både road och oroad. För Jensen har rätt, idag behöver vi hjälp med i stort sett allt. Osäkerheten breder ut sig: Gör jag rätt? Någonsin överhuvudtaget med någonting?  Enkel lösning min vän: Fråga en konsult! Hur banta? 5:2 eller äta mindre och röra på mig mer? Bra nattsömn hur får jag det? Större bröst? Jadå, allt går att fixa, in- såväl som utvändigt och är du pank så kan lån ordnas direkt via penningappen.  Och lärarna behöver hjälp av superlärare, vi behöver Rutstädning i hemmet, Rot till att skrapa fönster, hjälp med sminkning och nagelvård, massage och yoga, matlagning och inköp, hur vara bra förälder, radiopsykologer och KBT på nätet, hjälp med att hjälp våra barn välja rätt linje i skolan, läxhjälp, hur uppfostra barnen, gör vi verkligen rätt, styling för personligt bruk och när vi säljer lägenhet,...

– Hej Erik Öhlin, marknadschef på XL-BYGG och segrare i ”Sveriges bästa marknadschef” kategori Byggvaruhus, hur känns det? – Tack det känns utmärkt. Att få denna utmärkelse är ett kvitto på att det vi gör varje dag på XL-BYGG’s marknadsavdelning är rätt och effektivt. – Det är ingen jury som tagit ut dig till vinnare utan ren fakta, berätta! – Resumé har årligen en gala där de premierar den marknadschef i olika kategorier som gjort den mest effektiva marknadsföringen på så kostnadseffektivt sätt som möjligt. – Behövs den här typen av tävlingar? – Nja, men det finns ju inte så många tillfällen där marknadschefer kan träffas under så där trevliga former och en annan fördel kan ju vara att ta lärdom av de goda case som premieras. – Vad och när läste du på IHM? – Jag tog min marknadsekonomexamen i Stockholm 2001 och hade bl.a. den eminente Göran Adlén som lärare. – Har du haft nytta av din tid på IHM? – Ja, framförallt när utbildningen var färsk, då hjälpte utbildningen mig en hel del ...

Jag är fascinerad av hur Tim, min åttaårige son, och hans jämnåriga kompisar, instinktivt gör rätt saker när de vill lära sig något. Speciellt fascinerande är det när man jämför med vuxna "experter" på lärande, till exempel lärare i skolan, kursledare (Jag har själv gjort en och annan pinsam tabbe...), och chefer (som ständigt lär ut saker, fast de ofta inte vet om att de gör det), och andra. Min son kom till mig för en vecka sedan och visade en teckning han gjort: Det var Musse, Långben och Svarte Petter ritade som figurer i Star Wars. Musse var Luke, Långben var Obi-Wan, Svarte Petter var förstås Darth Vader. När han visade teckningen ville han att jag skulle tala om vad som kunde förbättras. På kvällen ville han att jag skulle berätta en godnattsaga baserad på teckningen, och det gjorde jag förstås. Lägg märke till hur Tim sökte feedback, inte bara beröm, utan konstruktiv kritik. Godnattsagan gav honom dessutom tillfälle att reflektera över bilden. Det gav honom insikter som kan ...

För ett tag sedan var jag inbjuden till ett VD-nätverk för att prata forskning och framtida ledarkrav utifrån ett VD-perspektiv. Stämningen runt bordet var glad och uppsluppen, frukosten god och diskussionen livlig. Alla var överens om att vår omvärld tenderar att bli alltmer gränslös, global och oförutsägbar, att konkurrensen ökar samtidigt som marginalerna minskar och allt mer skall göras med mindre resurser.  Stärkta av gott kaffe och gemensamma insikter gav vi oss till slut i kast med själva kärnfrågan, det vill säga vilka färdigheter de som företagsledare kunde tänkas behöva för att kunna möta denna oomstridda framtid (… som för övrigt redan tycks vara här).     Sinne för affärer, förmåga att se helheter och tänka strategiskt, ständigt ligga i framkant, kunna agera globalt och ha en tydlig och förankrad vision var några förslag på ledarförmågor som de värdesatte… och även ansåg sig behärska. Mer eller mindre i varje fall. Det var just i denna stund, när bekräftelsens dunkla töc...

– Hej Pernilla Brown, vem är du? – Hej IHM, jag är en 44-årig trebarns mor med samiskt blod i ådrorna. I dag jobbar jag som projektassistent på Projektkontoret i Landstingets regi och är dessutom ordförande i Prematurföreningen Mirakel. Det är en ideell förening som jag grundade för att kunna stödja föräldrar med för tidigt födda barn och de kan även verka som lobbygrupp för att förbättra stödet till dem som råkar ut för detta. – Och så vidareutvecklar du dig på IHM. – Ja, jag läser IHM Projektledning och är klar med det i januari. – Låter som du har fullt upp! Är det din arbetsgivare som betalar för att du ska utvecklas? – Nej, utbildningen betalar jag själv för att jag känner att jag vill ta nästa steg i min yrkeskarriär. Jag ser det som en investering i mig själv och har som mål att utvecklas och ha roligt hela vägen fram till pension. – Låter som en bra inställning! Ser du någon skillnad på er som betalat själva kontra de som har arbetsgivare som betalar? – Både ja och nej. I u...

Den 8 november diplomerades 40 glada och stolta företagssäljare på IHM i Göteborg. Under högtidliga former fick eleverna ta emot diplom och en premie delades ut till "Bästa examensarbete". Vi på IHM önskar er ett stort lycka till med era framtida utmaningar!  Utmärkelsen "Bästa examensarbete" gick till Tobias Hugosson, Josef Bosaeus, Carl-Johan Sjöqvist och Julia Lundén för arbetet "Resan mot tullager typ C". Uppdragsvigare var Reachlog AB.  Även klassrepresentanterna uppmärksammades och hyllades. Från vänster Carl-Johan Sjöqvist, Eric Strömberg och Anna Rundgren. Ett stort grattis till er alla!  

Var på ett intressant föredrag för några veckor sedan veckan om: Framtidens organisation - Nätverksbaserade organisationer.   De flesta av oss har kunskap och erfarenheter från hierarkiska organisationer som är toppstyrda, funktionella eller divisionsbaserade eller platta matrisorganisationer. Men oftast kanske inte lika mycket kunskap och erfarenhet avseende vad en nätverksbaserad organisation är eller hur den fungerar. Världen idag är ganska oförutsägbar och känslan av en ständigt föränderlig omvärld har resulterat i behovet av mer flexibla organisationer. Det är här den nätverksbaserade organisationen kommer in, som en möjlig kandidat för mer framgångsrika företag. Denna typ av organisationsstruktur är i sig inte ett nytt fenomen, det har funnits sen 1960 talet, där W.L. Gore Associates av många anses vara pionjärer. Denna typ av organsiation kännetecknas framförallt av att man inte har någon traditionell hierarki och tillåter de anställda att röra sig i alla riktningar genom org...

- Hej Henrik Frohm, nybliven försäljningschef på IHM Business School i Stockholm. Välkommen till IHM! - Hej och tack! - Vem är du? -  Jag är en person som älskar att utvecklas, anta utmaningar och skapa framgång. De senaste 14 åren har jag arbetat som sälj- och organisationsutvecklingskonsult, försäljningschef och säljare inom organisationsutveckling, media och försäkringsförmedling. Jag är 34 år och bor i Bromma, älskar försäljning och har fötterna på jorden.  Vad brinner du för? - Att varje dag är fylld med möjligheter, min passion är att få ta del av dem. Få utvecklas med andra och skapa framgång tillsammans är det som driver mig som person. Utöver det brinner jag för min hemstad och att jag, genom IHM, får utveckla svenskt näringsliv. Din roll på IHM?  - Försäljningschef Stockholm, att leda vårt försäljningsarbete och positionera IHM som den självklara partnern för företag och individer som vill bli än mer konkurrenskraftiga. Vi hjälper företag genom våra öppna program och föret...

För nu gör Generation Z, den zappande generationen, sitt första inträde på marknaden. Generation Z föddes som begrepp runt 1993 vilket innebär att de första i kullen nu är 20 år, en generation som aldrig upplevt ett liv utan internet och mobiltelefon, tycker e-mail är förlegat när man istället har ständig kontakt genom sociala media. Ett flertal undersökningar beskriver generation Z som otåliga, instabila, flyktiga och komplexa i sin extrema varumärkeslojalitet – som plötsligt kan förändras när de ändrar sina varumärkespreferenser.      Slutsatser från andra undersökningar visar att de: • De förväntar sig att allt ska vara tillgängligt omedelbart. • De föredrar att kommunicera elektroniskt. • De ser inte geografiska avstånd som ett hinder för vänskap, eller kommunikation. • De känner sig mer bekväma med teknik än någon annan generation före dem, men har mycket lite intresse för hur det fungerar. • De är pessimistiska till sin natur, eftersom de är den första generationen som inser a...

Sidor