/** * 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!

I vår YH-utbildning Konceptutvecklare Event & Besöksnäring får du precis den kompetens våra partnerföretag efterfrågar, och de står redo att ta emot våra YH-studenter på praktik (LiA) och på sikt även att anställa. Möt några av dina potentiella arbetsgivare här!   "Svensk turism är en näring under stark tillväxt samtidigt som konkurrensen ökar sett ur ett globalt perspektiv. För att säkra en fortsatt tillväxt med god lönsamhet krävs professionell utveckling av erbjudandet till gästen. IHMs utbildning Konceptutvecklare Event och Besöksnäring svarar mot de kompetensområden kring affärsmannaskap, affärsutveckling, paketering och marknadsföring som efterfrågas och som är avgörande för att den svenska turistnäringen ska kunna utvecklas och möta en växande efterfrågan."Jörgen Bergström, affärsutvecklingschef, SCR Svensk Camping ”Vi vill vara med att fortsätta utveckla branschen och IHM är den partner vi vill göra det tillsammans med. Vi bidrar i ledningsgruppsarbete, gästföreläsninga...

Välkommen till ”Beslutsfattarna”, podden där du får träffa tio höga chefer från det svenska näringslivet som berättar om ett bra och ett dåligt beslut de fattat. Och inte minst vad de lärde sig av dessa. Intervjuerna görs av Mattias Bergman och Andreas Utterström, två riktigt skarpa journalister, som guidar oss igenom de spännande frågeställningarna, förtydligar, kommenterar och sammanfattar på sitt härliga sätt.   Här möter vi Erik Olsson, född 1969, driver sedan 1997 fastighetsmäklarfirman som bär hans namn. I podden berättar han om hur han byggde upp en ny framgångsrik verksamhet kring sin mäklarverksamhet – och om ett förändrat arbetssätt som var fantastiskt på papperet men kostade hela årsvinsten.Dagens dilemma  Du kan välja att lyssna här direkt på sidan eller ladda ner avsnittet i Itunes eller Acast. Mycket nöje! Tidigare poddar: - Peter Tornell, Civilekonom- Donna Hanafi, Tictail- Gustav Martner, VD- Meg Tivéus, företagsledare- Richard Bergfors, MAX- Gunnar Brock, styrelsel...

Ser du dig som en framgångsrik affärsman/kvinna inom IT, en av de största industrierna? Då är vår utbildning Säljare IT Solutions B2B en säker biljett in i branschen. Den riktar sig till dig som vill arbeta med att sälja in komplexa förändringsprojekt som ger kunden betydande effekt och nyttor i den dagliga verksamheten. Behovet av kompetens är stort, och våra partnerföretag står redo att ta emot våra YH-studenter på praktik (LiA) och på sikt även att anställa.  Möt några av dina potentiella arbetsgivare här! ”IT-industrin genomgår en massiv förändring och digitaliseringen medför ett stort behov av säljare med IT-kompetens. ATEA söker ständigt nya säljresurser för att säkra tillväxten och inom de närmsta åren har vi behov av att anställa ett antal nya IT-säljare. Vi samarbetar redan med IHM och ser mycket positivt på en utbildning med inriktning på vår bransch då våra och kundernas kompetenskrav och förväntningar hela tiden ökar. Vi kommer att delta i både ledningsgruppen, LIA och ...

Vi ber John Axelsson, Digital Strateg på Be Better Online och medlem i IHM’s Advisory Board för Digital Marketing & Sales Analytics ge oss en tydligare bild kring betydelsen av denna utbildning. "IHMs utbildning Digital Marketing & Sales Analytics är ur vårt perspektiv extremt värdefull, det finns ingen liknande utbildning på marknaden i dagsläget och behovet av den kompetens man får genom utbildningen är enorm på en marknad som nu till stor del består av självlärda förmågor. Det finns ett antal kvalitativa webbkurser med tillhörande certifikat där man lära sig grunderna men ingen motsvarighet till den helhetsutbildning och kompetens som man genom Digital Marketing & Sales Analytics kan skaffa sig.  I en värld där mer och mer kommunikation flyttas online behöver man som företag ur vårt perspektiv förr eller senare adressera de frågor som uppstår vid synlighet, marknadsföring och kommunikation online:- Vilka trafikkällor driver besökare till vår webbplats och vilka typer ...

Den 8 april diplomerades 32 glada marknadsekonomer på IHM Stockholm under högtidliga former och premien för "Bästa examensarbete" delades ut till Marie Ekroth, Heidi Kubin, Petter Mähler, Niclas Nilsson, Kave Soultani. Stolt uppdragsgivare för examensarbetet var Dedicare Nurse. Efter diplomeringsceremonin fortsatte festligheterna på Armémuseet och Restaurang Borggården. Vi på IHM vill gratulera er alla och önskar er lycka till med era framtida utmaningar!

Det finns data på allt, och i datan finns guld att gräva. På IHM Business School utbildas webanalytiker att konvertera svårtydd data till konkret och värdefull information. Christian Resell, vd på Svenssons i Lammhult, sitter i utbildningens ledningsgrupp. – Folk skriker efter de här kunskaperna, säger han. Efter chefsroller på bland annat Byggmax och Bubbleroom tog Christian Resell över som vd på det klassiska möbelföretaget Svenssons i Lammhult. Efter 19 månader i ledningen har han genomfört stora förändringar och bland annat tagit plats i yrkeshögskolan IHM Business Schools ledningsgrupp för utbildningen Digital Marketing & Sales Analytics.– Först och främst tackade jag ja för att det är kul. Vi ser även behovet av utbildningarna kring webanalys. Det ger mig också mycket personligen i form av kunskap och kontakter med studenter och företag. Data is the new black och resurser som kan analysera materialet i den digitala eran är mycket begränsade, säger Christian Resell. Utbildn...

I höst är det premiär för YH-utbildningen Digital Marketing & Sales Analytics på IHM i Stockholm, Göteborg och Malmö. Utbildningen öppnar dörrar till framtidsyrken som onlinemarknadsförare, webbanalytiker, Digital Traffic Optimizer och Marketing Technologist och du får en mängd attraktiva certifieringar på köpet, t ex Google Analytics och Adwords. Behovet av digital kompetens är stort, och våra partnerföretag står redo att ta emot våra YH-studenter på praktik (LiA) och på sikt även att anställa.  Möt några av dina potentiella arbetsgivare här! "Digitaliseringen av samhället har inte ännu nått sin kulmen och det finns därför idag ett underskott av kompetens på arbetsmarknaden. Sett till vår nuvarande tillväxt har vi ett anställningsbehov om 10 personer inom en tvåårsperiod med kompetensen att utvärdera effekten av satsningar och vara en drivande part inom en iterativ optimering av företagens affärer. Enda anledningen till att vi inte expanderat fortare är pga svårigheterna att hi...

Att ”big data” är i ropet är det få som missat. Allt som är digitalt går att mäta och går det att mäta går det även att optimera. Men vad ska vi göra av alla data och vem som ska göra det undrar desto fler. Marknaden har ett stort behov av digitala specialister, analytiker och kommunikatörer och YH-utbildningen Digital Marketing & Sales Analytics är ett sätt att tillgodo se dessa.   För att få en bättre inblick i digital marknadsföring och analys träffar vi Jonas Nordhammer på TV4 gruppen som har arbetat med digital marknadsföring, media och försäljning sedan år 2000. Det finns inte mycket digitalt som Jonas inte arbetat med och han är även en av referenspersonerna bakom Digital Marketing & Sales Analytics. Vad är det viktigaste med digital marknadsföring och analys? Vad behöver man som marknadsförare eller analytiker ha koll på? Allt handlar om flöden – digital framgång är att kunna optimera och konvertera. Du måste veta hur du attraherar trafik, var dina besökare kommer if...

Vi fick ett mail från Fabian Spennare, student på IHM Säljare B2B, i helgen, vi tyckte att det verkade riktigt spännande så här nedan ser du mailet i något förkortad version, så nu är det bara att göra som Fabian säger, lycka till! Hej IHM! Fabian heter jag och studerar på IHM Business School och utbildningen Säljare B2B. Jag kom för några veckor sedan i kontakt med en onlinemässa för studenter och unga yrkesverksamma som heter Global Talent Week. Ett väldigt spännande och innovativt sätt för studenter att enkelt och kostnadsfritt komma i kontakt med några av världens mest attraktiva arbetsgivare som t.ex. IBM, Tesla, Tieto, PwC m.m. Jag skulle gärna sprida det i IHMs nätverk för jag tror det kan göra stor nytta. Så... ...skulle ni vara intresserade av att arbeta för några av de bästa arbetsgivare som t.ex. Tesla, PwC, IBM, STATOIL eller TIETO? Eller skulle ni vilja träffa Skandinaviens främsta innovationshubbar? Vad sägs om att utöka ert nätverk genom att ansluta er till en stor t...

MCPLAY är en ny och unik satsning på kontinuerligt lärande för marknadsförare och ledningsgrupper. Här kan du enkelt ta del av andras kunskap, erfarenhet och företagsresor. Filmerna är specialproducerade inom områden som marknadsföring, varumärke, försäljning, kommunikation, ledarskap och entreprenörskap. Inspirera dig och din arbetsgrupp i ert arbete. Du har fri användning internt med bl a fördjupningsmaterial. Och vi ordnar påfyllning varje vecka. 40 utvalda kunskapsfilmer per år (varje arbetsvecka - året runt). Fördjupningsmaterial (ex rapport, modell, bilder, artikel). Filmen är oftast på svenska, men ibland har vi internationella gäster. I ditt arkiv når du alla gamla lektioner. Använd filmerna internt som kompetensutveckling för din avdelning. Eller för att förstärka en presentation eller ett budskap i din ledningsgrupp. Erbjudande för IHMareÄr du IHM-alumn, undervisar på IHM eller prenumererar på vårt nyhetsbrev IHM Update? Då betalar du endast 1 995 kr + moms/person för en ...

Att utbildningen Ekonomi- och Redovisningskonsult är superbra och att vi har massor med sökande visste ni säkert redan. Den glada nyheten är att utbildningen nu även berättigar till auktorisation via SRF.  Vi ringer upp en av våra uppskattade lärare på utbildningen, Mikael Nodlycke, för att ställa några frågor om auktorisationen, arbetsmarknaden och framtidsutsikterna. - Hej Mikael! Har du hört den glada nyheten?- Ja, det är en väldigt trevlig nyhet! Tidigare var studenterna tvungna att komplettera sina kunskaper inom några områden trots att det teoretiska och praktiska kunskapsinnehållet i utbildningen håller mycket hög nivå. Det som är nytt är att de nu slipper komplettera – när de examineras från IHM har de all den teoretiska kunskap som behövs för auktorisation. - Vem är du, och hur tycker du att det är att vara lärare på utbildningen?- Jag är civilekonom från Handelshögskolan i Göteborg med inriktning redovisning, beskattning och finansiering. Jag har vidare studier inom bland ...

Att förstå hur förändringen från analogt till digitalt påverkar din affär är en ren överlevnadsfråga. Och det du tror omöjligt är snart verklighet, givet takten och effekterna av den digitala transformationen. På många sätt.  Vi bad Johan Belin, som har jobbat med varumärken och reklam sedan 1989 och inte minst med IHMs kommunikation på senare år, att tänka till om möjligt och omöjligt framöver.  Som anställd och som ägare/ledare på ett antal reklambyråer under rätt många år nu, har jag fått uppleva hur nya förutsättningar påverkat inte bara min egen bransch, utan alla typer av verksamheter jag haft förmånen att få inblick i. För reklambyråer, såväl som för alla branscher, förändras verkligheten mer än någonsin just nu, när det mesta kan göras om till ettor och nollar. Så vad är beständigt? Vad är utgångspunkten, säker mark, när vi skall försöka ta oss till uppsidan av förändringen? Kundnytta borde vara svaret. Oavsett teknologiutveckling eller beteendeförändringar så måste en aff...

Alla pratar om den digitala transformationen och vi kan löpande läsa artiklar om att svenska företag är digitalt svaga. Här finns många av framtidens jobb, och i september startar vi YH-utbildningen Digital Marketing & Sales Analytics. Som vanligt har innehållet formats efter branschens behov av kompetens, och här kan du läsa varför några av företagen i vårt Advisory Board anser att just denna utbildningen behövs. "Digitaliseringen av samhället har inte ännu nått sin kulmen och det finns därför idag ett underskott av kompetens på arbetsmarknaden. Sett till vår nuvarande tillväxt har vi ett anställningsbehov om 10 personer inom en tvåårsperiod med kompetensen att utvärdera effekten av satsningar och vara en drivande part inom en iterativ optimering av företagens affärer. Enda anledningen till att vi inte expanderat fortare är pga svårigheterna att hitta personal med tillräcklig kompetens inom just webbanalys som också förstår försäljning och marknadsföring. På kort såväl som lån...

Minns ni utmaningen som ÖresundsPapper ställde 40 blivande säljstjärnor på YH-utbildningen Säljare B2B inför: Att på 80 minuter ringa 300 samtal och boka minst 4 möten? I blogginlägget Utbildning i verkligheten träffade vi några av de energiska eleverna som tillsammans lyckades boka hela 20 möten! Utbildningen är snart slut och vi återvänder till Malmö för att träffa Malin Borg och Alexander Nilsson, två av eleverna som genomfört sin LiA praktik på just ÖresundsPapper. Malin och Alexander är med och coachar nya studenter. Från vänster: Fredrik Hoffnell, Christer Tedestål - VD Öresundspapper, Mårtens Persson - lärare försäljning, Malin Borg, Linnéa Dehn-Rosengren och Alexander Nilsson. Vad tyckte ni om säljutmaningen på ÖresundsPapper?Övningen var både spännande och givande. Vi fick bara en dag på oss att förbereda vilka vi skulle ringa till så fullt fokus var ett måste. Jag tyckte detta var en av de roligare övningarna under kursen säger Malin Borg, som redan då hade ÖresundsPapper ...

”Att lyckas med den digitala transformationen är svenska ledares största utmaning de närmaste åren” Håkan Sträng, med lång erfarenhet av näringslivets utmaningar, bl a som vd i flera IT-bolag, som försäljnings & marknadsdirektör för Volvo Cars i Norden och mellan 2007 till 2016, som vd för IHM Business School, förklarar vad han menar.  - IHM är en väldigt bra temperaturmätare på vilka frågor som näringslivet brottas med i vardagen. Hit kommer årligen tusentals människor som vill utvecklas inom områden som naturligtvis speglar deras utmaningar, behov och våndor på arbetet. Det är lite uttjatat att upprepa att utvecklingen går snabbare och snabbare men det har aldrig varit mer sant än nu. Att förändringstakten är så dramatiskt mycket snabbare nu beror på att teknikutvecklingen innebär helt nya, smartare, enklare, billigare och roligare sätt att göra affärer. - Är det inte som många gånger tidigare vid stora paradigmskiften att de sker men inte i det tempo som man förutspår? - Jod...

Sidor