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

GDPR är en ny EU-förordning som ersätter svenska PUL (Personuppgiftslagen) från 25 maj 2018 . Den förstärker skyddet av din personliga integritet i alla digitala databaser, och kraven på hur företag får behandla dina personuppgifter skärps. Din integritet är viktig för oss, och vi har uppdaterat vår policy om hur vi skyddar dina uppgifter. Läs mer här   

  IHM Business Schools YH-utbildningar är hårt sammanflätade med svenskt näringsliv. Samtliga föreläsare är yrkesverksamma i branschen de lär om och samtliga utbildningarnas ledningsgrupper består till störst del av företagsrepresentanter.    Näringslivets inblandning i IHMs pedagogik kan inte nog understrykas och det är en smart investering från deras sida, en investering för att fylla det egna företaget och hela branschen med bästa möjliga personal.    – Jag har valt att engagera mig i IHMs YH-utbildningar för att jag anser det är viktigt att vi får in nytt blod i framförallt IT-branschen som jag representerar. I ledningsgruppen på IHM så arbetar vi aktivt med att anpassa utbildningarna löpande så de ska passa behoven som vi har från näringslivet, säger Niclas Dahl, regionschef vid Caperio.   Marie-Louise Forsberg, head of retail vid Tieto håller med om YH-utbildningarnas viktiga roll i den svenska affärsvärlden.   – För mig handlar det mer om att komma ut med kompetens när man av...

IHM SKYDDAR DINA PERSONUPPGIFTER Det är viktigt för oss och att du kan känna dig trygg när du lämnar personuppgifter till oss. Personuppgifter är all information som kan användas för att identifiera en enskild levande person. Vi vidtar åtgärder för att säkerställa att dina personuppgifter alltid är skyddade hos oss och att de behandlingar vi gör sker i enlighet med gällande dataskyddsregler. I denna informationstext beskriver vi hur och varför vi behandlar dina personuppgifter i våra marknadsföringsaktiviteter. IHM Business School AB (org. nr 556297-9764) är personuppgiftsansvarig för behandlingen av dina personuppgifter. VARIFRÅN SAMLAR VI IN PERSONUPPGIFTER?Vi samlar in de personuppgifter som du lämnar till oss, t.ex. i samband med att du kontaktar oss, genomför ett köp på webbplatsen eller använder våra digitala kanaler. BEHANDLINGEN AV PERSONUPPGIFTERÄndamål: Leverera personligt anpassade marknadsförings- och säljinsatser. För deltagare på våra utbildningar finns separata polici...

80-talet är avlägsen historia. Snabba bilar och snabba pengar är inte längre den allmänna uppfattningen om vad framgång är, varken i privat eller affärsmässig mening. Dagens fokus handlar istället om hållbar framgång; framgång som sträcker sig över tid, och begreppet rör allt från företagskultur och personalutbildning till produktionsled. Mia Tapio är hållbarhetsexpert och driver Eternal Mindset AB som hjälpt bland annat Kappahl, Fjällräven och Haglöfs med hållbarhetsfrågor. –  Jag hjälper företag med att sätta strategier för hållbarhet. Ofta vet företagen att saker behöver göras, men man vet inte alltid vad man ska börja med. Jag hjälper med att "pinpointa" ut de stora sakerna man behöver ta tag i. Hållbarhet is the new black Lego annonserade för en månad sen att de ska slussa ut all produktion av oljebaserad plast och istället producera lego gjort på sockerbetor. De första vegetabiliska legobitarna kommer vara i butikerna redan under 2018 (och passande nog bestå av legobuskar och...

Kollar du hur många likes du fått på ett facebookinlägg bara sekunderna efter att du lagt upp det? Tittar du mer på telefonen än filmen du hyrt, trots att filmen var bra?  Ungdomar mellan 15 och 25 år kollar på sina mobiltelefoner varannan minut, och i svenska hem blir det allt vanligare att vuxna människor behöver reglera sin egen skärmtid. Vad är det egentligen som pågår? Allt fler börjar nu ifrågasätta hur stor kontroll internet, sociala medier och smarta telefoner har över människors tillvaro. Time Well Spent Sweden startade i december förra året och är en av aktörerna i motståndet mot det hur det digitala klimatet försöker stjäla precis all tid och uppmärksamhet vi har. – Vår idé är att vi vill verka för en värld där tiden vi lägger på digitala tjänster känns meningsfull och välinvesterad. Vi försöker göra det på två olika sätt: Vi vill både inspirera våra kollegor i teknikbranschen till att reflektera över vad som är Time Well Spent (väl spenderad tid) för användarna, men ock...

"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...

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. ...

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...

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  

I en ny undersökning från Novus uppger ungefär var tredje svensk att de kommer att ändra sitt beteende på sociala medier, exempelvis sluta göra personlighetstester eller frågesporter på Facebook. Men bara några få kommer till kritan, de flesta vill inte lämna sina vänner trots att deras personliga information har läckt. – Jag vill att du föreställer dig att du går in i ett rum, ett kontrollrum där massor människor, hundratals människor hänger över skrivbord med små tangentbord - och att det kontrollrummet kommer forma tankar och känslor för en miljard människor. Det kan låta som science fiction men det existerar just nu idag. Jag vet för jag brukade vara i ett sådant kontrollrum. Så inleder IT-designern Tristan Harris, med bakgrund inom Google, ett tal på TED.com. Han har nu startat en motrörelse mot de globala IT-jättarnas samhällspåverkan, eftersom han ställde sig frågan hur det kan vara etiskt försvarbart att styra människors tankar. Det är detta tema som nu satt världen i gungni...

Likt många andra idrotter står golfen inför ökade krav från en rad olika håll. En ökad kommersialisering, ökad individualisering, digitalisering, ändrade konsumtionsbeteenden och ökad konkurrens är några trender som påverkar idrotten. Det ställer nya krav på klubbchefen.  PGA (Professional Golfers’ Association of Sweden), GAF (Golf Administratörernas Förening), Svenska Golf Förbundet, Claesson Konsult AB tillsammans med IHM, utbildar framtidens klubbchefer inom Golfen. - Vi balanserar logiken och krafterna från idrotten med det kommersiella, och ut från utbildningen kommer en ny typ av klubbchefer. De har starka rötter i Golfen men kan ta affärsmässiga beslut och agera utifrån en gedigen kunskap. De kan  utveckla och driva sina respektive golfklubbar och anläggningar, skapa värde för sina intressegrupper, och hantera de ökade kraven som omvärden ställer på en Golfklubb, säger Johan Hampf, utbildningschef på PGA of Sweden.   Stort grattis till alla er som gått "Golfens klubbchefsutbi...

– Vi vill få tjejer att våga satsa på sin dröm, det spelar ingen roll om drömmen är att vill bli vd för ett mångmiljonföretag eller om drömmen är att driva en liten ideell rörelse eller studera utomlands. Herway ska vara ett litet universum, där man kan bli inspirerad att uppfylla de här drömmarna, berättar Nathalie Rajic som drog igång projektet i höstas tillsammans med klasskamraten Katja Fjellström.    Bild från lanseringsfrukost. Foto: Niki Zekaj Herway.se är ett nystartad onlineplattform vars mål att inspirera kvinnliga entreprenörer till att våga tro på sig själva och sina drömmar. Via storytelling och nätverkande vill Herways initiativtagare berätta den ärliga sidan om framgång - att framgång sällan är en spikrak väg och att framgång kan se ut på många olika sätt.   Hur kom Herway till?   – Jag och Katja fann en gemensam låga för kvinnliga entreprenörer och tjejer som vågar gå sin egen väg, vi ville berätta vidare deras historier. Sen byggde vi ett koncept, tog fram ett va...

Sidor