/** * 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 Madeleine von Gyllenpalm | IHM

Blogginlägg av Madeleine von Gyllenpalm

Madeleine von Gyllenpalm

Madeleine von Gyllenpalm är en av grundarna och VD för SitServ Nordic AB, som bl a certifierar IHMs handledare i Situational Leadership.

I veckan som gick hade jag förmånen att leda en workshop om ledarskap för ett större multinationellt företag. Gruppen jag mötte var speciellt uttagna i företagets ”fast track”- utvecklingsprogram för teamledare och mellanchefer. Företagets kultur och branschen var intressant, men framför allt var det individerna jag mötte som var intressanta. Hela gruppen var full av energi, framtidstro och vilja att utvecklas och bli mer effektiva ledare, och alla visade ett stort engagemang i både sin egen utveckling, men framför allt i för företagets framtid.  En av frågorna som diskuterades var om framgång föder engagemang eller om engagemang föder framgång? Det är lite som med hönan och ägget, vad kom egentligen först?  I den bästa av världar fokuserar företag och deras ledare på både och. I diskussionen framkom att ett stort engagemang kan leda till framgång, men att även det omvända kan hända om företagsledarna ser till att ta tillvara de anställdas tankar och ideér. Om du som ledare har stör...

Har du tillräcklig självkännedom, och  viljan att bli bättre, för att bli den bästa  ledare du kan vara? Många av oss vet att det krävs en del tid och kraft på att förbättra vårt ledarskap, och ofta går det  tyvärr inte att enbart  ”härma” en förebild, eller att försöka ha en påklistrad fasad när du ska leda någon. Ditt ledarskap måste ha sin grund i vem du är och vad som är viktigast för dig. När du verkligen känner dig själv och vad du står för är det mycket lättare att veta vad du ska göra i de olika situationer som uppstår, både privat och i arbetslivet. Framför allt handlar det om att alltid se till att försöka göra det rätta och göra det bästa du kan i varje situation. Som min sexåring säger: Hur svårt kan det va! Det låter ju så enkelt. Självklart vet jag vem jag är och vad jag står för, men ibland är det svårare än vad vi tror eller kräver kanske mer jobb än vad vi förväntade oss. Att göra det rätta kan ibland vara en livslång utmaning. Lyckligtvis finns det olika teorier, m...

Oavsett var i livet du är uppstår det dagliga möjligheter att leda, både privat och i arbetslivet. Om vi tar dessa möjligheter seriöst ser vi själva till att många gånger skapa situationer där vi har möjligheten att leda och påverka andra, i motsatts till de som bara väntar på att få en titel eller att andra ska ge dem möjligheten att leda. En av de viktigaste ledarroller vi som individer någonsin kommer att ha är att uppfostra och utveckla våra barn. De flesta av oss strävar efter att uppnå någon form av framgång i både föräldraroll och ledarroll och vi försöker föregå med gott exempel och visa ett bra ledarskap. Om vi är allt för fokuserade på att alltid ha kontroll är chansen stor att vi istället börjar utöva vår makt. Många av oss har varit i situationer där enda utvägen känns som det är att ”muta” eller hota för att få till en önskad beteende förändring. Både mutor och hot kan fungera för stunden men är aldrig en bra långsiktig ledarskapsstrategi. Båda strategierna ökar sannol...

Precis som vid varje nytt år är det många av oss som vill börja om eller förändra både vårt privatliv, arbetsliv och vårt ledarskap. Januari månad är den månad när flest nya medlemskap köps på olika Gymanläggningar, och i januari brukar det också vara ganska trångt bland vikter och maskiner men vart efter månaderna går är det inte längre riktigt lika trångt. Vad har gymkorten med ledarskap att göra? Jo precis som när vi efter nyår vill ta tag i vår hälsa och träning är det många som vill förbättra sitt ledarskap. Och precis som med träningen är intentionen att nu ska det till en förändring. Nu är vi redan inne i mars månad och ”nystartseffekten” har kanske redan börjat avta eller dala. Denna effekt är i allra högsta grad verklig och för många innebär ankomsten av t.ex. ett nytt år, ny roll på arbetet eller nytt företag en ny chans att göra om och göra rätt, eller åtminstone göra det bättre. Denna nystartseffekt skapar ofta en starkare motivation och drivkraft att starta om, förbättr...

Några nyårslöften i år? Nya löften eller inte, så är det lätt att snabbt falla tillbaka, återgå till gamla vanor, alla vardagliga krav, och andra människors förväntningar. Har du vad som krävs för att kunna besluta dig för vad du ska åstadkomma under nästa år? Jag hör ofta människor omkring mig säga, att i år ska det bli förändringar oavsett om det handlar om att ta tag i sin egen hälsa och välmående, sin karriär, egen utveckling eller helt enkelt bli mer framgångsrika på det de redan gör. Men vad händer sedan? Oftast ingenting eller väldigt lite och så är de tillbaka till samma ”gamla” vardag med allt vad det innebär. Men så finns det individer som verkligen går ”all in” och förändrar sig eller situationen. Oavsett om förändringen var lätt att genomföra eller krävde lite mer kraft och energi, säger de som har tagit steget ofta: Varför väntade jag så länge med att göra detta? För det första, gör vi samma saker gång på gång till stor del pga rädsla, men förväntar oss ändå nya och and...

Att vara en bra ledare är, när det kommer till kritan, inte upp till dig. Sorgligt men sant, så är det inte vår egen uppfattning som gör att vi kan bestämma om vi är en bra ledare eller inte. Vi kan alla se till att utveckla vårt ledarskap genom att bli bättre på att kommunicera, informera, uppmuntra, engagera och en rad andra egenskaper som anses vara attraktiva, efterfrågade och effektiva ledarskapsattribut. Men även om vi jobbar på det kanske det inte alltid räcker. För att göra saken än mer komplex finns det i dagsläget inte en universiell, fastställd definition av vad bra ledarskap är (eller bara ledarskap för den delen). Om du i dag har en ledade befattning, är chansen stor att det är utifrån dina egna normer och värderingar som du definerar om du är en bra ledare eller inte. Precis som att de flesta av oss anser att vi är bra vänner, kollegor, medarbetare etc, så tror många av oss när vi kliver in i en ledarroll att vi är bra på det. Utgångspunkten för vår bedömning är att vi...

Har du tillräcklig självkännedom, och  viljan att bli bättre, för att bli den bästa  ledare du kan vara? Många av oss vet att det krävs en del tid och kraft på att förbättra vårt ledarskap, och ofta går det tyvärr inte att enbart  ”härma” en förebild, eller att försöka ha en påklistrad fasad när du ska leda någon. Ditt ledarskap måste ha sin grund i vem du är och vad som är viktigast för dig. När du verkligen känner dig själv och vad du står för är det mycket lättare att veta vad du ska göra i de olika situationer som uppstår, både privat och i arbetslivet. Framför allt handlar det om att alltid se till att försöka göra det rätta och göra det bästa du kan i varje situation. Som min sexåring säger: Hur svårt kan det va! Det låter ju så enkelt. Självklart vet jag vem jag är och vad jag står för, men ibland är det svårare än vad vi tror eller kräver kanske mer jobb än vad vi  förväntade oss. Att göra det rätta kan ibland vara en livslång utmaning. Lyckligtvis finns det olika teorier, m...

Att veta vad som är viktigast och vad man själv har för fokus i sitt ledarskap är något som de flesta av oss kan behöva vara tydligare med. Detta är första delen av tre i en serie om just fokus. Att bli befordrad till chef betyder för de flesta att vi ser det som ett steg i vår egen karriär och fortsatta utveckling. Men vad innebär det egentligen att vara chef? Vare sig vi vill det eller inte, innebär det oftast att vi själva ska stå tillbaka för att utveckla teamet. Många går så pass långt att ledningen till och med säger att om du inte vill utveckla andra är du inget ”chefs”-ämne. Vid chefrekryteringar är det bra att fråga: tycker du om att utveckla andra och hjälpa andra att uppnå sin fulla potential, dvs bidra till att växa både som person och karriärsmässigt?  I många fall är både chefer och anställda inte så intresserade av att hjälpa andra att utvecklas och göra karriär. Fokus ligger fortfarande för många på den egna karriären. Det finns en princip som kallas Peters princip. ...

Är det ok för chefer att exponera sig på facebook/instagram eller andra sociala medier på ett sätt som kan missuppfattas eller vara stötande för deras omgivning? Var går gränsen mellan vad som är ok och inte ok för att man ska tappa förtroendet och tilliten till sin chef? Enligt många är tillit och förtroende en av de viktigaste ingredienserna i ett företags framgång. Men ofta pratar man då om chefernas förtroende och tillit till sina medarbetare. Tillit och förtroende, oavsett typ av relation, både professionellt och privat, är två av grundstenarna i min syn på ledarskap. Ett företag med en kultur, där det finns förtroende och tillit för såväl chefer,  kollegor och medarbetare, stärker varje relation oavsett, om den är intern eller extern och kan dessutom öka hållbarheten, den potentiella lönsamheten, individuell och företagsmässig framgång. I längden kan ett starkt förtroende även öka flexibiliteten i beslutsfattandet. Men hur bygger och utvecklar man tillit och förtroende? Ett vi...

Jag vet att det redan har skrivits och pratats mycket om Gallups senaste undersökning ”State of the Global Workplace”: Employee Engagement Insights for Business Leaders Worldwide”, men känns som det ändå finns en hel del kvar att säga. Enligt udersökningen är endast 13% av världens alla sysselsatta människor nöjda eller engagerade, dvs resterande 87% är antingen oengagerade eller  ”aktivt bortkoplade" på jobbet dvs de är känslomässigt bortkopplade från sina arbetsplatser vilket leder till att de är mindre benägna att vara produktiva. Vilket tyvärr betyder att merparten av alla medarbetare i världen ”hatar” sina jobb. Är du en av dem som går till jobbet bara för att kunna få ut din lön eller går du dit för att du faktiskt känner dig iallafall något engarerad och motiverad av vad du gör? Vad betyder det att vara engagerad? En definition av engagemang  är viljan att göra bra ifrån sig och att vara en del av framgången. Jag tror att de flesta av oss är överens om att engagerade medarbet...

Var på ett intressant föredrag för några veckor sedan veckan om: Framtidens organisation - Nätverksbaserade organisationer.   De flesta av oss har kunskap och erfarenheter från hierarkiska organisationer som är toppstyrda, funktionella eller divisionsbaserade eller platta matrisorganisationer. Men oftast kanske inte lika mycket kunskap och erfarenhet avseende vad en nätverksbaserad organisation är eller hur den fungerar. Världen idag är ganska oförutsägbar och känslan av en ständigt föränderlig omvärld har resulterat i behovet av mer flexibla organisationer. Det är här den nätverksbaserade organisationen kommer in, som en möjlig kandidat för mer framgångsrika företag. Denna typ av organisationsstruktur är i sig inte ett nytt fenomen, det har funnits sen 1960 talet, där W.L. Gore Associates av många anses vara pionjärer. Denna typ av organsiation kännetecknas framförallt av att man inte har någon traditionell hierarki och tillåter de anställda att röra sig i alla riktningar genom org...

Hej! Jag heter Madeleine och kommer framöver att skriva om ledarskap. Vad är ledarskap, vilka trender ser vi just nu, forskning och utveckling inom ledarskap och relaterade ämnen men även vad jag ser och hör i min vardag. Jag har ca 20 års erfarenhet av olika typer av ledarskap i olika befattningar på olika nivåer t.ex. VD, redovisningschef och business controller. Men har sedan ett antal år tillbaka arbetat med bl a utbildning av chefer och medarbetare och utbildar andra konsulter och utbildare.  En fundering jag har haft under alla år och som dök upp på mitt första sommarjobb som 13-åring är, varför det betyder så mycket för de flesta att ha en bra chef/ledare. En av de första frågorna jag fick när jag gick mitt första ledarskapsseminarium i 20 årsåldern var: Tänk på en ledarskapsupplevelse du har haft antingen som ledare eller som medarbetare, vilken typ av ledarskap föredrar du mest/minst?  Det är en bra fråga att ställa sig själv och andra och som jag tänkte på i förra veckan n...