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

Digitala ekosystem, IoT, molnresor och hybrid-it. Akronymerna haglar inom it,  en bransch där förändringshastigheten går snabbare för varje dag som går. Digitaliseringen hittar varje sekund nya tillämpningar där it och infrastruktur påverkas när nya aktörer och tekniker tar plats på arenan.  UtmaningenAtt utbilda sig för att möta de utmaningar som komplex it kräver av en säljare är som att lära sig att manövrera ett tåg som under resan förändras till ett flygplan och där resan avslutas som en raket på väg till en okänd planet - allt medan förutsättningarna ändras och besättningen byts ut. Låter det skrämmande? Jovisst, men samtidigt sjukt spännande och givande - att få verka i en bransch som aldrig står still. Atea och IHM Business SchoolAteas region Syd har under 5 år samarbetat med IHM Business School genom medverkan i ledningsgrupper och arrangerande av LIA-platser för utbildningen Säljare IT-Solutions B2B. Under perioden har 9 studenter hunnit genomföra sin LIA hos oss, 5 av dem...

Mitt namn är Johanna Carlsson och jag läser utbildningen Säljare IT Solutions B2B på IHM Business School i Malmö. Jag började min utbildning på IHM hösten 2016 och innan dess var jag bosatt i Schweiz och jobbade inom hotell- och restaurang. Jag hamnade just i Schweiz för att jag har ett brinnande intresse för skidåkning och vandring i vackra alperna, men också för att jag älskar att träffa nya människor och drivs av utveckling och nyfikenhet. Jag har alltid gillat att jobba i kontakt med människor och har sedan barnsben drivits av försäljning i olika former, service och mötet mellan människor. Att läsa på IHMEfter att ha jobbat några år efter studenten och provat på diverse olika jobb, läst distanskurser och upplevt Europa blev suget efter en utbildning stor. Jag blev rekommenderad att läsa på IHM av några bekanta och när jag tittade närmre på kursplanen för utbildningen väcktes mitt intresse ännu mer. Att fördjupa mina kunskaper inom försäljning har alltid stått högt på listan och ...

Hej igen alla! Här kommer ett av flera inlägg från min resa till Silicon Valley, en underbart spännande och givande resa som jag ska försöka förmedla till er mitt i min jet-lag dimma. Men vi börjar som sagt var med Facebook HQ, en av de stora stjärnorna i dalen, där många vill jobba och ännu fler vill besöka, ett besök jag själv gärna skulle göra. Men… …det visade sig vara svårare än jag trott. Jag var med på en resa som arrangerades av Västra Götalandsregionen för de som jobbar i inkubatorvärlden, schemat på plats hade Per-Arne Lundberg från Gothia Science satt ihop på ett föredömligt sätt, intensivt men det fanns några luckor. En av dessa luckor försökte jag fylla med ett studiebesök på Facebook HQ, 1 Hacker Way, 94025 Menlo Park. Till skillnad mot den öppenhet jag mötte i övriga Silicon Valley, där folk bjöd in till samtal och delade med sig av sin kunskap såväl inne på företagen som vid spontana möten på gatan, så var Facebook helt stängt. Jag ryckte i alla kontakter jag hade i ...

Hon berättar att hon är mamma till två biologiska barn samt en flyktingpojke från Afghanistan som kom till familjen när han var 12 år. - Jag är starkt värderingsstyrd i allt jag gör, och att IHM är en stiftelse där vinsten återinvesteras i verksamheten var avgörande när jag tackade ja till jobbet som marknadschef, säger Åse Henell. Hon utstrålar energi och känns äkta. Jag träffar vår nya marknadschef Åse Henell över en lunch, och jag vill veta mer om henne, om vad som driver henne, hur hon är som person.  Hon brinner för samhällsutveckling och att göra allt lite bättre – allt ifrån en kampanj till att renovera ett hus. Familjen flyttade in i ett fallfärdigt hus i Ekebäck för några år sedan, och det blev många sena kvällar i målarkläder. - Du kommer närmast från Faktum, där du varit vd i fem år. Skulle du säga att det var det viktigaste du gjort hittills i din karriär?- Faktum betyder så mycket för så många människor, som alla kämpar för sin existens. Där finns 500 försäljare och ko...

Som två-åring stod Alexandra Breding på ett par skridskor för första gången. Konståkningen tog sedan all hennes tid och det var inte lätt att hinna med skolan. Drygt tjugo år gammal och ett VM-guld senare kände hon att hon stod vid ett vägskäl i livet. Vad skulle hon göra nu? Valet föll på YH-utbildningen Konceptutvecklare Event & Besöksnäring, och hon är i skrivande stund ute på sin första LIA på Gothia Towers i Göteborg. Alexandra började tidigt med konståkning och har hunnit med såväl juniorlandslaget som seniorlandslaget, där man tog hem ett VM-guld i teamåkning 2012. Konståkning på elitnivå kräver sitt, både i tid och pengar och säsongen 2013 bestämde hon sig för att sluta tävla. – Jag var trött på att resa och vara borta hemifrån långa perioder, och sedan var det även en ekonomisk fråga. Det är en dyr sport och det går inte att kräva att föräldrar ska ställa upp och betala för en hur länge som helst. Jag ville stå på egna ben och ”bli vuxen”. I och med VM-guldet kände jag...

Disruptivitet är verkligen ett ord jag inte kan släppa just nu. Jag tycker mig se det överallt och för mig har det ordet blivit centralt för att förstå vår samtid. Vi är redan mätta, nöjda och belåtna i vår värld, så vi behöver något helt annat. Det är postmodernism 2.0, där till och med fenomenet demokrati känns föråldrat och måste disruptas. Vad är då disruptivitet? Redan 1995 myntade författaren Clayton M. Christensen i boken "The Inovator’s Dilemma" uttrycket ”Disruptive Innovation”. Vi kan försöka förklara det med orden banbrytande eller söndrande. Disruptiv innovation innebär kort och gott att ta sig an en marknad och fullständigt revolutionera den. Exempelvis det iTunes gjorde med musikbranschen, Skype med telekombranschen eller Netflix med filmindustrin. Dock är inte alla innovationer disruptiva, även om de kan vara revolutionerande. Vad som gör det disruptivt är att man når den breda massan och ändrar människors beteende. Ett annat kännetecken är att de flesta disruptiva fr...

– Om jag får tid att sitta ner på en klippa och blicka ut över havet, eller en sjö, känna lugnet och filosofera över vad som är viktigt i livet så hamnar jag alltid i tankar om relationer. Allt handlar om relationer, för mig personligen och för våra varumärken! Fredrik Toreskog, Marknadsdirektör på ESS Group, funderar på sin roll i världen. Fredrik kommer att fördjupa sig i ämnet, ur flera perspektiv under halvdagen vi träffas, men vi startar med företaget ESS Group, vilka är de och vad är deras mission? ESS Group, enligt deras hemsida, driver idag ett stort antal unika och personliga varumärken i hotell- och restaurangbranschen från Ystad i söder till Funäsdalen i norr. Som grund för alla projekt ligger destinationsutveckling och ett starkt engagemang av ägarna med målsättningen att skapa upplevelser bortom det vanliga och gästernas förväntning. Ägarna är vd:n Jonas Stenberg, försäljningsdirektören Carl Lundgren, ekonomichefen Claes Tallhage, Magnus Emilson  och Anders Nilsson, vd ...

Du får femton års lärdomar från Göran Adlén om hur man ska kunna förutse framtiden och du får lyssna till hans senaste rykande färska fjorton trender och hur de kommer att påverka alla företag och organisationer på olika sätt. Den riktar sig till alla som vill ha insikter om vilken framtid och vilka utmaningar vi kommer att möta.  Du kommer att få höra om det senaste inom marknadsföring, ledarskap, kommunikation, hållbara samhället, hälsa, personlig utveckling och en massa tankar och studier om generation z, både som framtidens konsument och medarbetare. Och vi kan lova dig att det är mycket där vi måste tänka om kring.  Denna föreläsning är en ”upphottad”, uppfräschad och förkortad lightversion från Göran Adléns femtonde och sista stora trendrapport 2017 som han släppte tidigare i år. Och så släpper Göran Adlén samtidigt en bok ”Liten snabb och fylld av kärlek”. 240 sidor i läcker design med sammetsomslag i ett format som du kan ta med dig och läsa överallt. Här hittar du Görans lä...

Åse Henell, som i mars 2017 avgick som Faktums vd efter fem år i verksamheten, är IHM Business Schools nya marknadschef. Hon kommer att jobba med att stärka varumärket och öka kännedomen om IHM:s utbildningar i Stockholm, Göteborg och Malmö.   Arbetet med att alltid vara ajour med samtiden är viktigt och vd Peter Hägglund, ser värvningen av Åse Henell som en viktig del i detta arbete.   - Åse har lång erfarenhet av marknadsfrågor och har varit aktiv inom en mängd olika branscher. Vi på IHM Business School ser fram emot att ta del av hennes kunskap och engagemang, säger han.   Åse Henell, som förutom vd-posten på Faktum, har ett förflutet som varumärkesansvarig på Göteborgs-Posten samt byråchef på den digitala kommunikationsbyrån Maverick by Sigma, är mycket glad och smickrad över erbjudandet från IHM Business School.   - Det var enkelt att tacka ja. Jag har alltid velat jobba i utbildningsvärlden och kände direkt när jag kom innanför dörrarna på IHM att det finns en energi och kraf...

Den 9 januari 2007 gjorde Apple revolution. När bolagets vd Steve Jobs klickade fram slajden med ordet ”Iphone” steg bolagets kurs med 8 procent. Hans presentation var dessutom ett retoriskt mästerstycke, tycker vi som gör podden ”Retoriskt!”, som IHM sponsrar. Eftersom det här framträdandet, vid en keynote i San Francisco, har blivit modern näringslivshistoria – det har setts miljontals gånger på Youtube – så har det analyserats noggrant av många experter.  Kolla:  Här är några punkter i talets början som vi ser att alla kan lära sig något av: Inledningen”Jag har väntat på den här dagen i många år” – Jobs bygger genast upp stämningen och förväntan. Det fungerar lika bra i ett vanligt kundmöte.   Konstpauser Steve Jobs har en förmåga att låta spontan och prata till synes spontant om konkurrenternas telefoner. Hans pauser visar att han är i kontakt med publiken i det stora rummet och vågar låta dem vänta lite grand. Lita på att varje gest och varje paus är minutiöst inövade.  Tretal...

Jessica Lindell Vikarby, idag 33 år, behöver förmodligen inte någon närmare presentation för de som följt alpint de senaste åren. Från guld i slalom i europeiska ungdoms-OS 2001 via en otäck krasch 2003 till VM-brons i storslalom 2015 i Beaver Creek har hon ständigt gjort sig påmind i en sport där de flesta riskerar att hamna i skuggan av Stenmark, Anja och Pillan. Sommaren 2015 valde hon att hoppa av för att ha ett, enligt henne, vanligt liv. Hur vanligt är det? Vad gör hon idag? Vad har hon tagit med sig från sin tid som elitåkare? Varför blev det Business Management på IHM? Är några av de frågor jag måste ta upp med henne. – Hej Jessica, kul att vi fick till det här till slut. Hur har det gått med ditt vanliga liv? – Hej, bara bra! Det rullar på med jobb och snart ska jag bli mamma också, känns fantastiskt. – Stort grattis! Och vad jobbar du med? – Tack! Jag jobbar som Brand Engagement Manager på ICA. ICA jobbar mycket med att vara en positiv kraft i samhället och i min roll så ...

Konflikträdsla är ett utbrett problem i Sverige. Larmen om det ökande antalet sjukskrivningar på grund av psykosociala förhållanden på svenska arbetsplatser gick höga redan för 10-15 år sedan. Nu galopperar siffrorna. ”Problem med chefen” anges som skäl i över hälften av fallen enligt Arbetsmiljöverket. Vad är det för fel på de svenska cheferna egentligen? Den svenska demokratiska ledarstilen brukar anges som en del av problemet; cheferna vågar inte vara chefer utan jagar konsensus in absurdum. Det medför svårigheter att ställa krav på medarbetarna – de har ju så mycket att göra ändå. Resultatet blir då ett otydligt ledarskap med oklara direktiv. Det luddiga ledarskapet genererar osäkra medarbetare som inte vet riktigt var gränsen går mellan sina och andras arbetsuppgifter, befogenheter och ansvar. Tas saken inte upp och reds ut kommer konflikträdslan smygande på arbetsplatsen - och just konflikträdda chefer lär ligga högt på topplistorna över de egenskaper som skapar motsättningar ...

Han är en av de personer som tilldelats Circle K:s årliga utbildningsstipendier. Efter genomförd examen på IHM fick han sin drömroll och därtill en position i ledningsgruppen i samma bolag. Vi möter Magnus Larsson, senior director retail operations franchise på Circle K. Under sina, hittills, 25 år på Circle K (tidigare Statoil) har Magnus Larsson hunnit med flera olika roller som bland annat säljare, stationschef och områdeschef. Det var när han arbetade som zonchef för Stockholmsregionen som han uppmärksammades internt. – I min dåvarande roll var jag ansvarig för Stockholms alla stationer och försäljningsomsättningen hade ökat rejält i regionen de senaste åren. Så det var en kombination av bra resultat bakåt och att man såg potential för mig att utvecklas framåt som gjorde att jag fick ta emot utbildningsstipendiet. Circle K delar årligen ut två utbildningsstipendier internt. Stipendiet omfattar en Marknadsekonom DIHM. I samråd med sin chef får stipendiaten välja inriktning beroen...

Jag inleder denna blogg som en stolt Oscarsvinnare genom att tacka. Jag vill tacka Ung Företagsamhet för denna dag, vilken dag. Har precis landat här hemma efter en dag på UF-mässan, Entreprenörskap på riktigt #EPR2017 och jag är lyrisk. Detta är ett stadie som brukar inträffa varje år då jag varit på UF-mässan och det är inte för att vi på IHM är kategoripartner och jag får dela ut priset till Årets UF-skola. Vill bara säga innan vi går vidare att jag tycker det är fantastiskt hedrande att få dela ut priset och det var med mycket stor glädje detta tilldelades Hersby Gymnasium som Årets UF-skola. Inspirerande utifrån hur de arbetar med UF-företagande. Jag ser framemot att träffa er längre fram i vår. Men nej det är faktiskt inte det som gör denna dag till en lycka lycka lyckans vilken dag utan det är när du går ut på mässgolvet möts du av ett myller av unga, målinriktade, drivna, värderingsstyrda entreprenörer. Låt mig få presentera Amanda som med sina klasskamrater skapat Shells f...

Redan som barn lär vi oss skilja på begreppen bra och dåligt. Idag vet vi också att dåliga upplevelser ger starkare och mer varaktig effekt än bra. Det kan vara som så att orsaken till det här ligger långt tillbaka i människans utveckling och kan kopplas till våra överlevnadsinstinkter. Om vi ser till ledarskap så har den mesta forskningen och utvecklingen haft fokus på positiva faktorer och hur ledarskapet ex kan utvecklas för att nå högre effekt i organisationen. Men det börjar blåsa andra vindar då ny forskning nu visar att ”Bad is stronger than good”, dvs att dåliga ledarbeteenden medför starkare och mer varaktiga effekter. Ledarskapets mörka sidor kan således vara hot mot framgång, effektivitet och kultur i en organisation och värst av allt – negativa beteenden smittar. Ledarskapets mörka sidor – Destruktivt ledarskap Inom IHM använder vi oss av beprövad kunskap och forskningsbaserade modeller. En av dem är IL (Indirekt Ledarskap) som återfinns i IHM Strategisk Ledning. Här bel...

Här kommer ytterligare en rapport från vad jag upplevde under D-Congress 2017 i Göteborg. Ovanstående citat är hämtat från Karin Johanssons, VD Svensk Handels, dragning och presenterades som ett citat från den legendariska F1 föraren Mario Andretti. Som vanligt är internet inte helt överens om detta för här presenteras också Stirling Moss, en inte lika känd F1-förare, som upphovsman till citatet. Oavsett… …så är det ett bra citat som speglar mycket av min dag på mässan. Jag ska försöka mig på att återge en del som jag antecknat under dagen för att kanske lyckas få kontroll på mina tankar.  Om vi börjar med publiken så är min uppfattning att medelåldern sjunkit en hel del och definitivt mycket mer tjejer, det känns också som det är fler i år än förra året och man märker en tydlig skillnad på aktiviteten i montrarna. det händer mer helt enkelt. Så… …över till någon form av sammanfattning, jag försöker hitta några saker som väldigt många pratade om i olika former, och med lite olika i...

Sidor