/** * 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); } Business Management i fokus. | IHM

Business Management i fokus.

Produktionsplanerare, Driftschef, företagssäljare, teknisk konsult, projektledare, VD, egen företagare, butikschef, Key Account Manager, IT-chef, produktchef, marknadschef, systemförvaltare…… 

Jag räknar till 116(!) titlar i listan med totalt 150 personer och blir nyfiken. Vad kan alla dessa människor ha gemensamt utöver längtan efter en skön semester? 

Det är utbildningsstart på IHMs i särklass populäraste program: Business Management. När jag ser deltagarlistan, vill jag veta mer om varför de går just den här utbildningen, hur de hinner med livet i stort och hur det går till på IHM. Jag ringer därför en av IHM:s rådgivare, som möter de flesta av deltagarna:

-    Hej Johan Rudén, det är en brokig skara som börjar Business Management nu i vår. Är det alltid sådan mångfald på det här programmet?
-    Ja, du har rätt, det är människor från alla branscher och alla tänkbara befattningar på Business Management. Om jag fick önska så skulle alla som startar företag i Sverige gå just Business Management. Det ger dig förståelse för helheten, de stora dragen i alla delar av en verksamhet, det du behöver för att bedriva en framgångsrik verksamhet eller ett verksamhetsområde. 30% av nystartade aktiebolag går i konkurs inom tre år – den siffran skulle inte vara så hög om alla haft förståelse för helheten och vad som skapar lönsamhet.

-    Men alla är väl inte företagsledare? Vad ger det mig som anställd?
-    Du får större förståelse för din roll i helheten. Det gör att du lättare ser vad du kan göra i din roll och undvika att bli ”micro managed” – detaljstyrd – och istället ta större ansvar. Sedan beror det såklart på var man jobbar i dag och vart man är på väg. Men rent generellt kan man säga, att om jag vill förbereda mig själv för att kunna ta nästa steg, är dessa kunskaper tveklöst ett måste.

-    På IHM pluggar man ju parallellt med jobbet. Vilka är fördelarna med det, skulle du säga?
-    Det är ett tidseffektivt sätt att få med sig både teori och praktik. Pedagogiken kopplar forskning och teoretiska modeller till verkligheten - hur de faktiskt används i det dagliga jobbet och vad det innebär för mig. Med andra ord - vilka konsekvenser får besluten jag fattar i jobbet på måndag morgon i praktiken? 

-    Tidseffektivt, säger du, men hur hinner man med det utöver jobb, familj och annat? Behöver jag säga till vännerna att jag går under jorden i 4-5 månader?
-    Utbildningarna är ju designade för just det här ändamålet. Men det är klart att det krävs att man fokuserar och gör avkall på andra saker under en period. Du är på IHM en gång i veckan i 16 v. Varje resa har ju sitt pris, inget serveras på silverfat. Men om man satsar vill man ju gärna få max tillbaka, och det är så väl värt den insatsen. Vill du se ett annat resultat, kräver det förändringar.

-    Men hur mycket tid behöver jag avsätta per vecka utöver de 6 timmarna på IHM?
-    Det kan variera, ca 8-10 tim/vecka brukar deltagarna säga. Det är många faktorer som påverkar naturligtvis, som läsvana, ambitionsnivå, förkunskaper osv. De som siktar på examen Marknadsekonom DIHM går 4 terminer, där Business Management är den första. Men man kan självklart läsa Business Management som en fristående termin också. Under en begränsad tid fixar man det.

-    Hur är utbildningen upplagd? 
-    Som vi tidigare konstaterat, har ju alla i en klass har olika erfarenheter, olika roller och bakgrund. Därför läser man in teorin före lektionen, så att alla har samma bild av vad som kommer att diskuteras och jobbas med. Första delen av lektionen brukar vara av typen traditionell föreläsning, där läraren går igenom och förklarar och pekar på det viktigaste i det du läst i förväg. Efter den inledande föreläsningen jobbar vi ofta med olika case, stora och små, som är kopplade till teorierna och som utgör arbetsmaterial och diskussionsunderlag. Ett exempel  skulle kunna vara ”Du är marknadschef och behöver göra en kundsegmentering för era marknadskampanjer, hur gör du?
Lärarens bilder från lektionen skickas efter lektionen ut via elevportalen, där de sedan finns under hela din studietid.

-    Sen har vi veckans fråga. Såhär kan en sådan uppgift vara formulerad: Utifrån materialet du läst, hur arbetar du med just det här verktyget? Alla i klassen kan sen se hur de andra har svarat och resonerat på elevportalen.

Terminen avslutas med en reflektionsuppgift, där du funderar över vad vi gått igenom under hela terminen och kopplar lärdomarna till er egen verksamhet. Utifrån detta kan ni sen se om ni jobbar på rätt sätt. Kan ni effektivisera ännu mycket mer? Det kan vara en översyn över hela eller delar av verksamheten, ett affärsområde el dyl.

-    Utöver detta gör du två kunskapstester hemifrån under terminen. Genom dessa tester vill vi säkerställa kunskapsinhämtningen hos klassen som helhet, och att du som individ har tillgodogjort dig kunskaperna, men de är inte betygsgrundande. Skulle du ha fel på någon av frågorna, får du en direkt hänvisning till var du hittar kunskapen i böckerna, så att du kan repetera.

-    Och sen kommer tentan, antar jag?
-    Haha, nej, men vi avslutar med en tävlingsinriktad affärssimulering, som brukar vara kul och lite utmanande. 
Till sist har vi ju reflektionsuppgiften, den ger bättre affärsnytta än en tenta . Om ni går igenom den gemensamt, kan du ta tillfället i akt att föra ett affärsmässigt resonemang med din chef. Det ger ett rejält mervärde till företaget.

-    Det låter onekligen som en spännande resa.
-    Det är det. Från dag 1 möter du hela tiden nya frågeställningar som du tar till dig och reflekterar över på ett sätt du inte skulle gjort annars. Det är en blandning av aha-upplevelser, ”vad innebär det för mig?” och insikter ”så kan jag göra!” Det är en sak att lyssna på en föreläsare och en annan att sitta i ett klassrum, där alla kan vidimera vad som kan funka eller inte funka i verkliga livet. Man kan hämta så mycket ur diskussionerna när det finns så mycket kunskap och erfarenheter i klassrummet. Du får dessutom ett helt nytt nätverk på köpet.

-    Många får sin utbildning finansierad av företaget. Vad skulle du säga att företaget får?
Engagerade medarbetare som ser sig själva som en del i verksamheten, förstår sin roll i helheten och kan ta ett större ansvar. Kunskap bygger personligt engagemang, vilket är en stor bristvara i många företag – bara 16 % är engagerade, enligt Sverigestudien. Deltagarna får förståelse för sina möjligheter att kunna påverka, och det ger förutsättningar att prestera bättre och jobba effektivare. Som medarbetare blir mer trovärdig och om du inte har det sedan innan, får du också med dig affärsspråket. Du blir tydligare och kan använda affärstermerna i sitt rätta sammanhang. Hur ofta beror inte missförstånd på bristande kommunikation?

Vill du diskutera ditt utbildningsbehov med en av våra rådgivare? Boka tid här!

 

Korta fakta för dig som funderar på Business Management

Tid: 16 tillfällen, 1 pass i veckan. Utöver schemalagd tid tillkommer tid för självstudier och projektarbete, totalt ca 8-10 tim/vecka.

Utbildningsavgift: 57 900 kr. är det din första IHM-utbildning, tillkommer en registreringsavgift på 2.500 kr. Litteratur ingår.

Vilka förkunskaper krävs?
2-3 års arbetslivserfarenhet är nödvändigt för att du ska ha och kunna bidra med erfarenheter från arbetslivet. Den stora utväxlingen med att plugga på IHM får du genom att tillämpa dina kunskaper i jobbet, använda modellerna och se hur de funkar i praktiken..

Hur mycket matte behöver jag kunna?
Om du inte använt matte sedan gymnasiet, har vi ett frivilligt tillfälle där man repeterar grundläggande matte. Många upplever detta som ett bra stöd inför studierna. 

Hur vet jag att jag inte är överkvalificerad?
Vi stämmer av kunskaper, erfarenheter och förväntningar med alla våra deltagare i ett telefonsamtal eller personligt möte på 30 min – 1 tim.

Är utbildningsavgiften avdragsgill för företaget?
Ja, under förutsättning att utbildningen är relevant för din roll, eller för kommande roll. Fråga din ekonomiavdelning om du är osäker.

Företaget kan inte stå för hela kostnaden, vad gör jag?
Det finns olika sätt att lösa finansieringen. Ungefär 30% av våra deltagare finansierar privat, då är momsen inkluderad i avgiften. Om ditt företag vill hjälpa dig framåt, kan det finnas en utbildningspott på x antal kronor, och vi kan dela upp fakturan mellan arbetsgivaren och dig. Du kan delbetala på 3 mån utan ränta. Vissa löser det med löneväxling – det vill säga att företaget lägger ut pengar för utbildningen och ni kommer överens om en lönereduktion - brutto eller netto – som avbetalning. Det är en uppgörelse mellan dig och företag. I teorin kan du betala av utbildningen på ett år genom löneväxling. Läs mer hos skatteverket eller fråga din ekonomiavdelning.

Hur gör jag om jag vill läsa litteraturen i förväg?
Anmäl dig så fort som möjligt. En månad före kursstart får du ett välkomstmail med info om hur du beställer hem litteraturen. Sen är det bara att sätta igång.

Vad blir jag efter utbildningen?
Det är en fråga jag får emellanåt. Det är svårt att sätta en specifik roll till en så bred utbildning. Det är inte som att du blir tandläkare eller bagare. Du blir däremot en duktig generalist med en djupare marknads- och ekonomiförståelse om hur en verksamhet fungerar och bör bedrivas för att bli lönsam. Därmed blir du värdefull för alla företag och det är kunskaper du har nytta av på alla nivåer oavsett roll och bransch. Hur du använder detta i verksamheten och i karriären avgör du själv - ditt eget personliga driv, din bakgrund och ditt nätverk avgör vilka vägar du finner för att klättra eller gå vidare. Du kan köpa dig en Ferrari – men om den blir stående på parkeringen, om du njuter av att köra den som en Ferrari ska köras eller om du kraschar den i ett träd beror på dig och hur du lär dig att använda den. 

Vad gör en Business Manager?
Business manager är en internationellt erkänd roll, som innebär att du är operativt ansvarig för en verksamhet eller verksamhetsområde. En Business Manager har ansvaret för att verksamhet eller området drivs effektivt och lönsamt och är dessutom ofta specialist inom ett annat område. För att kvalificera för rollen behöver man förståelse för vad som skapar lönsamhet.

Boka rådgivning här!

Läs mer och anmäl dig till IHM Business Management här!

 

17 augusti 2016
Välj en tid som passar direkt i kalendern!
Läs intervjun med Bengt Olander på K2 Search
Marie är IHM-lärare på sin fritid, varför?