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

Mitt gäng på LogTrade frågade The Friendly Swede från Uppsala som sålt på Amazon, USA, sedan 2011. Och Søren Kipling från danska Be-ahead.com, som bland annat hjälper den danska regeringen i Amazonfrågor. Här är åtta tips till dig som vill göra Amazons superkraft till din.  I grunden är Amazon, och all e-handel, logistikföretag med en webbplats. 1. Lär dig hur Amazon fungerarAmazon är som ett Google för produktsök – fast större och strängare. Om du slarvar med din listning får det snabbt konsekvenser. Nyckelord är viktigt. Därför måste du förstå hur lättillgängligt Amazon är för sina kunder och hur de söker när de är på jakt efter en produkt som din.  Ingen vet heller exakt hur Amazons algoritmer fungerar. Men alla vet att det inte räcker att ha en produktsida som drar trafik. Folk måste köpa din vara. Conversion-rate är jätteviktigt. Och sedan måste de uppleva att du levererar denna vara snyggt. Köpet är INTE klart när de tryckt igenom beställningen. Vilket leder oss in på punkt 2...

Used for encouraging men to pee straight as well as triggering purchases of toothpaste, nudging is an idea that is quickly gaining popularity. I was interviewed by the Bondsai Blog about how marketers and sales people can take advantage of this often misunderstood technique. Below you’ll find the result. So what is nudging? - It’s part of behavioural design, says Tommy. He likens it to a “small push in the right direction” thereby influencing choice. - One example is having a default option checked in a form, where the user is given the opportunity to change it. Most users will accept the default setting, even though they don't really think about the consequences. For something to be seen as a nudge it has to be cheap and easy to avoid. It cannot be a requirement or mandatory, that’s a different kind of behavioural control. Moreover, nudging is at odds with the age-old belief that humans make fully rational decisions based on objective criteria. A completely rational being lacks em...

"Såhär kan det kännas, så har det känts för många, låt det aldrig kännas så igen för någon. Enough is enough - #notyoutoo." Så inleder Johanna Ahl, Cecilia Dahlberg, Anna Junholm och Frida Winter det vinnande bidraget i Gyllene hjulets studentkategori 2018. Tjejerna studerar första året vid Konceptutvecklare event & besöksnäring på IHM, och deras vinst är historisk eftersom det är första gången någonsin Gyllene hjulet arrangerar en egen studentkategori. – Det känns lite overkligt måste jag säga. Ambitionen var att det var en kul grej att vara med på, och nu har det blivit ett ganska stort pådrag som vi inte förväntade oss! Det är branschen som berättar för oss att vi gjort ett väldigt bra jobb, och det är verkligen den finaste feedbacken man kan få tycker jag, säger Johanna Ahl. Jag träffar tre av de fyra vinnarna, Johanna, Cecilia och Frida när de ska presentera sitt tävlingsbidrag för utbildningens ledningsgrupp på IHM Göteborg. Själva prisceremonin kommer ske under Gyllene hj...

Björn Ranelid har fått nog av turbulensen bland ledamöterna i Svenska Akademien. Under ett inslag i SVT:s Aktuellt konstaterade han frankt att om de inte vet vad ordet jäv betyder så kan de inte stå för ”snille och smak”. De borde istället avskedas allihop och sättas i skolbänken. Jag håller med. Det klassiska misstagetSvenska Akademien instiftades av kung Gustav III år 1786. Enligt stadgarna är dess syfte att "arbeta uppå Svenska Språkets renhet, styrka och höghet". Om man leker med tanken på att Svenska Akademien och ”de aderton” motsvarar en ledningsgrupp i vårt nutida näringsliv, tycks det som om de gjort det mest klassiska misstaget av alla: De har inte klargjort svaren på de mest elementära frågorna i sammanhanget: Varför finns vi? Vad är viktigast för oss att arbeta med?  Låg intern kommunikationsnivå och outvecklade relationerEnligt Roy Bartilson och Per Malmberg, författare till boken 150 ledningsgrupper senare – vår bild av en dold potential, saknar så många som 90 procen...

Emma Kinnås, 23 år, slutför just nu sin YH-utbildning, Säljare IT Solutions på IHM Göteborg och har redan blivit rekryterad. Hon arbetar 60% för sin nya arbetsgivare, Facebookmarketingföretaget Zalster, och när exjobbet är inlämnat ska hon gå upp till 100%. Se aktuella YH-starter här Vi ringde upp Emma och bad henne berätta om utbildningen och framtiden. - Du är mitt uppe i ditt examensarbete nu? Hur går det?- Vi ligger i fas, men det är väldigt tight om tid, så det är viktigt att dubbelkolla hur man själv och hela gruppen ligger till. Jag gör det ihop med fyra andra från samma klass och vi jobbar med Jetshop, som  är en E-handelsleverantör med säte här i Göteborg. - Vad går ert arbete ut på?- Syftet med vårt exjobb är att se hur öppna varumärkesföretag är för att öppna egen e-handel istället för att sälja sina produkter via återförsäljare (varumärkesföretag är företag som säljer produkter tätt sammankopplade med sina egna varumärken, exempelvis designbolagen Klong, Sagaform osv). ...

Hans ledarskap beskrivs som öppet, inkluderande och mänskligt och han involverar sina medarbetare i företagets utveckling. Han är prisbelönt VD och entreprenör och ses som ett föredöme, som visar att tillväxt kan skapas genom tydlig värdegrund och fokus på hållbarhet. Nu kommer Årets Unga VD 2016 till IHM och talar om det som utgör grunden för hans egen och hans företags framgång: ett öppet och inkluderande ledarskap med fokus på värdegrund och hållbarhet. Välkommen till ett seminarium om den nya tidens ledarskap med Mikael Lezdins, entreprenör och VD för gasellföretag EFK AB.  Juryns motivering till utmärkelsen: ”Årets Unga VD har med stort engagemang skapat förutsättningar för lönsam tillväxt genom affärsinnovation som innebär minskad belastning på miljön genom effektivare nyttjande av energiresurser. Pristagaren är en entreprenör som brinner för att bibehålla familjekänslan genom ett öppet, inkluderande och mänskligt ledarskap som involverar medarbetarna i företagets utveckling. ...

I oktober 2017 klev jag på flygplanet med min treåriga dotter för 16 veckors praktik i en av världens mest kreativa startup städer: Berlin. Min dotter skulle börja i svenska förskolan och jag en praktik inom digital marknadsföring och kommunikation hos ett danskt företag som heter Right People Group. Veckorna har gått och idag är det min sista dag som praktikant- sorgligt, men jag är så otroligt glad för den här erfarenheten.  Det bästa med den här perioden har varit alla nya människor jag har mött. Vi är ett ungt team på kontoret med närmare 15 personer där hälften är praktikanter med nationaliteter från Sverige, Norge, Danmark, Tyskland, Holland och Frankrike. Så man får ta del av otroligt många nya kulturer vilket är fantastiskt roligt och vi umgås mycket tillsammans utanför arbetet också.  Det var ingen slump att jag bestämde mig för att söka praktik i Berlin utan det är en stad jag håller varmt om hjärtat då jag under de senaste 2 åren besökt staden regelbundet. Berlin blomstr...

Känslor präglar hela vårt liv. De styr hur vi lär oss, hur vi gör affärer och hur vi fattar beslut, små och stora. Vi är skapta för ett liv där vi interagerar med andra och umgås IRL, men i dag umgås vi mer och mer via sociala medier. Det är ett umgänge helt fritt från känslor, och det vill Rana el Kaliouby ändra på.    Hon är Computer Scientist och har en PhD från Cambridge och utvecklar tillsammans med sitt forskarlag en app som förstå hur du känner dig genom att läsa av ditt ansiktsuttryck. Genom att lagra känslouttryck från 2,9 miljoner videor med människor från 75 länder har de nu byggt upp världens största databas för känslor.   Hennes forskning förenar teknologi med det emotionella och kan komma att förändra inte bara hur vi interagerar med maskiner, utan också med varann via sociala medier. Och kanske känns det bra om roboten vi snart har därhemma förstår när vi känner oss lite deppiga? Kolla här!    

Rädda mat! Med denna slogan växer den svenska appen Karma explosionsartat. Redan flitigt omskriven av internationell techmedia så pekar startupbolaget ut riktningen allt fler företag börjar röra sig åt - ekologisk hållbarhet. Karmas grundare: Fr vänster: Hjalmar Ståhlberg Nordegren, Else Bernadotte, Ludvig Berling, Mattis Larsson. Etablerar sig i London Nu i januari blev Ludvig Berling tillsammans med Karmas medgrundare Elsa Bernadotte, Hjalmar Ståhlberg Nordegren, och Mattis Larsson glädjas åt att se företaget på "30 under 30" - affärstidningen Forbes prestigefulla lista över kreativa affärsinnovatörer i Europa. Samtidigt lanseras nu Karma för fullt i London, utmärkelser och företagspriser regnar ner och journalister ringer i ett till bolaget bakom den kanske mest hypade eko-appen just nu. Vi har pratat med Ludvig Berling om uppståndelsen: – Det känns jätteroligt att vi fått så mycket positiv feedback på det vi gör, och det visar verkligen på att det finns ett intresse för att eng...

Nathalie Sjöström studerar Digital Marketing and Sales Analytics på IHM i Stockholm. Hennes andra LIA sker just nu på marknadsavdelningen på modeföretaget Odd Molly. Efter intensiv kontakt med influencers runt om i världen, deltagande i det kreativa idéarbetet och mängder av kampanjanalyser så vet Nathalie att det är i ett marknadsteam i modebranschen hon hör hemma. Hennes handledare Erik Samsson, Social Media Manager på Odd Molly är också nöjd med perioden och ger Nathalie några av de finaste epiteten han vet - Hon är en doer, och en äkta Molly!    IHM-studenten Nathalie Sjöström och hennes handledare Erik Samsson plåtade i Odd Mollys egen fotostudio i Gamla stan, Stockholm.   Vi fick chansen att prata med både Nathalie och Erik om hur LIA-perioden på marknadsavdelningen har varit, låt oss starta med Nathalie.   Hej Nathalie, till att börja med, vem är du?   Jag är 24 år och kommer från Stockholm. Jag har alltid varit intresserad av människor och att nå ut till dem. När jag jobbat...

Internet förändrar allt det rör vid. Frågan är bara om det verkligen berör människan? Svaret är inte så svartvitt som många tror, och vi får aldrig underskatta människans behov av fysisk närhet. För digitalisering handlar sällan om antigen eller, det är oftast både och. I en tid av enorm hajp kring digitalisering, teknik och data är jag tämligen säker på att de flesta organisationer tar detta alldeles för långt och glömmer bort de mänskliga elementen.  Förra året lyssnade jag på ett radioinslag kring en studie om för tidigt födda barn. Den jämförde för tidigt födda som fått känguruvård med de som fått ligga i kuvös. Nu undrar du kanske vad kängurumetoden innebär? Känguruvård är en bröst-mot-bröst-metod för tidigt födda barn. För att se den långsiktiga påverkan av vård genom kängurumetoden i jämförelse med kuvös, hade forskarna följt barnen under tjugo år. Resultaten är fascinerade. De barn som fick känguruvård både överlevde i högre grad och fick bättre förutsättningar i framtiden....

Detta är inlägg nr två i en serie om hur neurovetenskaplig hjärnforskning omdefinierar ledarskapet. Vill du läsa tidigare inlägg? Klicka här Neuroforskare menar att överlevnadssystemet är extra känsligt för sociala situationer på jobbet, och att chefer omedvetet kan försätta medarbetarnas hjärnor i hotläge. Detta leder till stress, oro och konflikter.  Forskarna har identifierat ett antal sociala preferenser, som du som ledare behöver ha kunskap om för att i möjligaste mån minimera risken att medarbetarnas hjärnor kidnappas av överlevnadssystemet. för detta leder till distraktion, sänkt prestation och på sikt ett försvagat immunsystem och stressrelaterade sjukdomar.   En av de situationer på arbetsplatsen som lätt förpassar våra hjärnor till hotläget är upplevelsen av att inte ha samma betydelse som andra. Avsaknaden av information, att inte få veta vad som ska hända, samt känslan av att inte kunna påverka sin situation, gör också att hjärnans hotsystem aktiveras. Likaså brist på s...

Rebellisk, Bajen-fan, älskar affärer och ser hellre möjligheter än problem. Hon har verkligen testat och tänjt på sina egna gränser. Trots att hon hoppade av gymnasiet – hon tyckte skolan var för inrutad och hennes frågor uppskattades inte – har hon efter otaliga jobb nu landat i rollen som VD på klädföretaget Hope. Det här är berättelsen om en krokig väg kantad av många jobb och ett sug att göra saker man inte riktigt får göra. Berättelsen om Åsa Sånemyr. Hon växte upp på Söder med kreativa musikerföräldrar, en rebellisk tjej som älskade att se på Hammarby med sin pappa. Hade Mr Bajen, Kenta Ohlsson, som ”dagisfröken” och tog senare en självklar plats i klacken. – Du hoppade av gymnasiet, vad gjorde du istället? – Jag fick jobb på klassiska Hotel Diplomat på Strandvägen. Där jobbade jag i sex år i många olika roller, det var här jag lärde mig att anpassa mig och följa regler, det var en hård skola men mycket nyttig. Sedan gick jag vidare till Olsten i bemanningsbranschen - vi växt...

  Cecilia Dahlberg, Anna Junholm, Johanna Ahl och Frida Winter går första året på Konceptutvecklare Event och Besöksnäring på IHM Yrkeshögskola. När de fick nys om att tävlingen Gyllene Hjulet för första året utlyste en studentkategori, antog de utmaningen och vann tävlingen. Uppgiften var att på 48 timmar skapa ett eventkoncept för Almedalen i syfte att skapa ett bestående engagemang kring och av #metoo. Det skulle bestå av en eller flera aktiviteter som bidrar till att frågorna om maktmissbruk, sexuella trakasserier och övergrepp fortsätter vara aktuella. Vi gratulerar till vinsten och återkommer med en intervju med tjejerna, som just gått ut på praktik. Priset delas ut på Gyllene Hjulet-galan 26 april. Källa: Dagens Media Läs mer om IHM Yrkeshögskola här  

Jag älskar verkligen kicken av att se andra utvecklas! När ögonen glimmar till och man kan se att något förändras. Den där insikten om att när gör jag något lite annorlunda, kan jag nå extremt mycket bättre resultat. Einstein sa en gång något i stil med ”Definitionen av Galenskap är att göra samma sak om och om igen och vänta sig olika resultat. Om du vill se andra resultat, gör inte samma sak.” Den senaste tiden har jag jobbat intensivt med en av Volvos största återförsäljare och coachat säljchefer via medlyssning. I praktiken innebär det att jag varit med säljchefer i den dagliga driften och coachat det dagliga operativa ledarskapet - allt ifrån målsamtalet mellan chef och anställd, till säljsamtalet i bilhall samt på telefon. En fantastisk utmaning och en WOW-känsla, då jag insett vad viktigt det dagliga ledarskapet är!  Det är lätt att som chef, medarbetare, människa bemöta, leda och bedöma en person efter mina egna preferenser. Vad lätt det är att fastna i ett instruerande leda...

Lycklig den som får se världen! Min dotter har haft förmånen att få resa mycket i sitt arbete med en stor kund. Men långa flygningar till exotiska resmål som Shanghai, Mumbai och Los Angeles har på senare tid för hennes del lett till lite klimatångest, och inte så många nya intryck och idéer. Anonyma hotell med likriktade konferensrum och menyer som inte avslöjar något om lokala miljöer och kulturer. En Pasta Alfredo på det nynordiskt inredda hotellrummet efter en lång dags konferens, och du kan lika gärna befinna dig i Nairobi som i Bangkok. Har du gått in på ett Starbucks i Chile ser det precis likadant ut som hade du varit i Kina.  En värld som skulle expandera, ser istället mest ut att krympa.  Medelklassen utökas med miljoner människor varje år och det är en fantastisk och häftig utveckling. Kanske är likriktningen ett naturligt resultat av globaliseringen. Kanske är det så att alla medelklassmänniskor helst av allt önskar en skinny grande latte, men kanske, kanske är det bara...

Sidor