/** * 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 av IHM Business School | IHM

Blogginlägg av IHM Business School

IHM Business School

Här kan du följa mycket av det som händer på IHM, stort som smått. Vi kommer också ta upp saker som händer i vår omvärld och ser gärna att du som läsare tipsar och kommenterar. Kul att ha dig här!

Gör VD-titeln automatiskt en bra ledare? Är den bästa säljaren den bästa chefen? Det krävs mer än titlar för att bli en bra ledare som skapar resultat. På IHMs nya program för ledarutveckling stärks du i ledarrollen och ökar effekten av ditt ledarskap för att skapa långsiktig lönsamhet i  verksamheten.  En bra ledare är skillnaden mellan plus och minus på resultatraden, men för att komma dit krävs en utveckling och träning precis som för andra viktiga positioner inom företaget. När uppåt 80 procent av ett företags problem kan härledas till ledarskapet, krävs det att näringslivet på allvar ser ledarrollen som ett yrke. Därför lanserar IHM nya program inom ledarutveckling med start  2011. Program som vässar och utvecklar personer i ledande positioner med utgångspunkt i deras affärsmässiga utmaningar och förutsättningar. Som synliggör effekterna av ledarskapet  i specifika affärssituationer.  Nu börjar vi arbetet med att utveckla en av näringslivets viktigaste funktioner: ledaren. Som ...

När varumärket är dött eller när organisationen inte vill eller förstår att man måste kunna ”Leva Varumärket” också för att få det att leva vidare! I över 10 år har IHM inspirerat och utbildat över 400 deltagare på IHM Strategic Brand Management för att skapa målmedvetna och fokuserade varumärkesambassadörer. Syftet har varit att arbeta för att vårda och stärka varumärket. Företagets mest värdefulla ägodel!  I grunden är arbetet detsamma som för 10 år sedan men formerna för att lyckas har ändrats och utmaningarna har blivit så många fler. Kommunikationen har  ändrat karaktär vilket påverkar både det interna som externa varumärkesarbetet. Kopplingen till försäljningen växer sig allt starkare, och att det måste finnas en integrerad tanke i varumärkesarbetet som ledningen står bakom, det är en grundförutsättning, som det inte alltid är så lätt att leva upp till. För att citera en av utbildningens tidigare deltagare Christer Lindqvist, Brand Manager Volvo Lastvagnar som också varit gäst...

SAS kommunikationsavdelning har en tydlig strategi för hur vi ska använda sociala medier i vår kommunikation. Den 15 april var tanken att kollegor från det danska, norska och svenska Customer Relations skulle få en introduktion i sociala medier i syfte att börja arbeta med Twitter och facebook. Den dagen fick Eyjafjallajökull på Island sitt utbrott och all flygtrafiken ställdes och även vårt påtänkta möte – alla fick snabbt flyga hem till sitt hemland innan flygplatserna stängdes. Min kollega Christina Ericsson, Online Strategy & Communications på SAS, som är ansvarig för vår facebooksida, www.facebook.com/flysas, började kommunicera med våra kunder online. Snabbt hittade kunderna oss och fler och fler började ställa frågor till henne i högre utsträckning än tidigare. Christina tänkte att ”ja, det lugnar sig snart” men samtidigt såg hon hur antalet fans ökade, och detta trots att vi inte ännu hade kommunicerat facebooksidan tydligt externt. Nu gällde det att vara tillgänglig för...

Från att under många år ha varit hypad befinner sig nu IT-branschen i en ny fas. Behovet av teknik- och systemstöd fortsätter att öka och det är sedan länge en självklarhet att IT utgör en plattform för alla verksamheter. Den stora skillnaden idag är att tekniken är mycket mer underordnad funktionalitet.   Företagens kärnkompetens är inte IT och att ständigt utveckla och underhålla spetskompetens och teknisk infrastruktur är sällan lönsamt för mindre och medelstora företag.  Idag är det allt vanligare att företagen istället köper IT som en komplett funktionsleverans och bara betalar för det de verkligen behöver. Tillgång till affärs- och kontorssystem, support, server- och lagringskapacitet, uppdateringar, underhåll och utbildning ingår som en naturlig del av tjänsteleveransen. Fördelarna är många, inte minst i förväg synliga och budgeterbara kostnader. På IHM Business School startar till hösten en ny utbildning som svarar på just marknadens efterfrågan på lösningsorienterad IT-funk...

Ska anställda få lov att använda sociala medier som Facebook och Twitter på arbetstid? Under senaste året har debatten stundtals varit het, och många företag har infört förbud. Men i takt med att den professionella användningen av sociala medier ökar, kan sådana förbud dels leda till problem, t ex försvårad kund­kommunikation och missade marknadsföringsmöjligheter, dels begränsa möjligheten att locka kvalificerad personal som redan har för vana att jobba online i nätverk.   Att många företag är tvehågsna inför sociala nätverk är förståeligt. Utvecklingen inom området ger fantastiska möjligheter att skapa en fördjupad kunddialog. Samtidigt finns det många och djupa fallgropar, vilket flera företag blivit varse på mer eller mindre brutala sätt. Att formulera tydliga riktlinjer är ett sätt att skapa förutsättningar för att dra nytta av möjligheterna och minimera riskerna. Trots detta saknar de flesta svenska företag en policy för social media. En undersökning från Manpower visar att ba...

Jag hade utbildat mig till Statsvetare och hunnit jobba några år inom offentlig sektor. Men jag kände att jag ville mer och ville få möjlighet att kombinera mitt intresse för kommunikation med public affairs och CSR.  Jag sökte mig därför till IHM och valde utbildningen KY-utbildningen Marknads- och kommunikationskoordinator. Under min ena period av Lärande i arbete, LiA, gjorde jag min praktik på Vattenfalls avdelning för Public Affairs. Dit hade jag sökt mig för att jag också är intresserad av energifrågor. Där fick jag i uppdrag att hjälpa dem att ta fram en strategi för att nå unga opinionsbildare. Att det blev fokus på webben och på sociala medier var naturligt och jag skrev rapporten ”Vattenfall på Facebook” hösten 2008.  Klicka här för att ladda ned rapporten. Jag jobbade med rapporten under stora delar av min praktik. När den var klar höll jag en dragning för den avdelning på Vattenfall där jag varit. Och de var så nöjda att jag fick komma tillbaka flera gånger efter att min...

Lisa Ekströms ledarskap är en förening av starkt driv och ett stort hjärta, kryddad med en intensiv vilja att vinna. Med de ingredienserna lyckades hon förvandla en krisstämplad avdelning på SAS till en attraktiv arbetsplats. Det gjorde henne också till vinnare av Framgångsstipendiet. Juryns motivering Lisa Ekström, framgångsrik ledare.Bland 2 500 andra tävlande, som var och en skrivit ihop ett PM över sina meriter, sticker hon ut i terrängen som ett blommigt kaktusfikon, modigt , målmedvetet och näringsrikt. Juryn har uttryckt saken på följande sätt: “Lisa har visat prov på ett starkt interaktivt ledarskap som har fått medarbetarna att känna glädje, motivation och delaktighet. Lisas sätt att lösa utmaningen har betydligt förbättrat affärskritiska nyckeltal, och enhetens framgångsresa har haft positiv inverkan på andra enheter och inspirerat till nya kundlösningar.” - Det var väldigt roligt att få stipendiet, jag ser det som en framgång för hela gruppen. Vi har gjort den här resan t...

Calill Odqvist är alltid på väg, har alltid en idé på gång. För bara några år sedan startade hon företaget Light My Fire tillsammans med sin pappa. Då var det ett litet skånskt företag med stark drivkraft och stora visioner. I dag har det vuxit till ett globalt företag med försäljning i 38 länder. Stressad och försenad kommer jag till mötet med Calill Odqvist, vd på Light My Fire i Malmö. Jag ursäktar mig.- Det gör inget, nu fick jag tid att ta tag i en juridisk tvist med en leverantör. Kolla här! Vi har fått plastförpackningar för 400 000 kronor som spricker och han säger att det är vårt fel fast att han fått måtten på produkten. Trots kontroversen med leverantören och en senkommen reporter är det inga sura miner hos Calill. Hela hennes uppenbarelse är positiv och full av överskottsenergi. Snabbt hämtar hon vatten, som vi dricker i hjärtat av kontoret. Sedan presenterar hon mig för pappa Miche och mamma Lillan som båda arbetar på Light My Fire. Brorsan Caspar bor i Skottland och ar...

IHM Business School utvecklar företagsutbildningar efter kundernas önskemål. Volvo Cars Business School har idag 35 utbildningar i IHM:s regi - ett samarbete som sträcker sig 20 år tillbaka i tiden. - Skönt att släppa ansvaret till dem som vi vet genomför uppdragen bra, säger Tommy Sigvardsson, kompetensutvecklingsansvarig på Volvo Personbilar Sverige i Göteborg. För att kunna ta fram nya kurser och utbildningar, måste de utbildningsansvariga vara väl insatta i Volvoaffären.- Det är de. Sex personer på IHM arbetar åt oss. De är otroligt kundorienterade och omsorgsfulla eftersom de verkligen vill leverera hög kvalitet. Tommy Sigvardsson tycker att konceptet med att köpa hela utbildningspaket fungerar bra.- IHM tar ett stort ansvar. Vi behöver inte övervaka dem. Vi är mest med vid starten, bollar idéer och följer upp att det blir ekonomi i projekten.När utbildningarna är genomförda görs uppföljningar så att både Volvo Personbilar och IHM får en måttstock på genomförandet. Lärarna vask...

Vad är det man brukar säga - unga och hungriga? De här tre killarna vågade ta ett bett i kunskapens frukt och har nu avancerat på arbetsplatsen på AGA Gas. Efter några år på samma arbetsplats och utan akademisk utbildning kan det vara svårt att avancera. Så var det för Mikael, Peter och Jesper på gastillverkaren AGA Gas AB. Därför beslutade de sig för att höja sin kompetens genom att gå DIHM-utbildningen på IHM Business School.- Efter utbildningen har vi avancerat flera steg där både AGA och vi själva kunnat dra fördel av våra kunskaper inom marknadsföring, säger Jesper Hess. Mikael har arbetat på AGA sedan 1997 och började som säljare.- Jag sökte mig till AGA eftersom jag ville arbeta med försäljning. Jag har tidigare drivit en egen bensinstation och även arbetat som kock i USA. Jesper har arbetat på AGA sedan 1995 efter att tidigare varit aktiv inom försvarsmakten med bland annat FN-tjänster. Han har tidigare även arbetat som reparatör och mekaniker på Liseberg.- Av en slump satt ...

Alla kan bli bättre menar affärsutvecklaren Stefan Sebö. Genom en positiv attityd har du potential att utvecklas i ditt arbete. Spärrvakt eller vd, spelar ingen roll. Låt inte någon lura i dig att du inte kan utvecklas, det är föreläsaren Stefan Sebös budskap. - Alla har en potential att bli bättre än de är, säger han.   Det är klart att det finns begränsningar. Det sticker han inte under stol med.- Men folk gör felet att de fokuserar på dem istället för att försöka se sina möjligheter, säger Stefan Sebö.Han framför sitt budskap bra och det är svårt att inte ryckas med, men det handlar inte om ett snävt lönsamhetsbudskap. I hans värld kan alla bli lite bättre. Vi kan mer än vi tror. Stefan Sebö är ute efter en personlig utveckling - stor eller liten. Att vi inte ska stanna upp och bli liknöjda.- Det finns ett citat som lyder så här: Den dagen du slutar att bli bättre, då slutar du också att vara bra. Lätt att säga för den som har ett jobb som går att utveckla. Men spärrvakten på tun...

Sidor