/** * 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 Christina Davisson | IHM

Blogginlägg av Christina Davisson

Christina Davisson

Christina Davisson är språkvetare och har undervisat i bl a retorik på Stockholms universitet. 15 års analys av presentationsmaterial har lett till specialintresset hur retorik kan användas för att manipulera budskap i syfte att ljuga och dölja fakta.

Kan man vara intelligent och dum på samma gång? Javisst! Man kan till och med sätta dumheten i system och ta betalt för det. Det kallas för funktionell dumhet, menar Mats Alvesson, professor och forskare inom organisation och ledarskap vid Lunds universitet och författare till bl a The Stupidity Paradox och The Triumph of Emptiness.  Gror i offentlig sektorFunktionell dumhet är särskilt tydlig inom offentlig sektor, enligt professor Alvessons forskning. Utgångspunkten för ledarskapet där, vilar på fyra värderingar som är utmärkande för oss i Sverige: försiktighet, följsamhet, feghet och förljugenhet. Resultatet är ett inkompetent ledarskap som tycks vara oförmöget att använda sina resurser på ett vettigt vis.  Orsakar kapitalförstöringKonsekvensen blir att viktiga samhällsfunktioner såsom skola, vård och polisväsende slukar alltmer tid och pengar utan att i egentlig mening leverera vare sig mer resultat eller kvalitativt arbete -  tvärtom urholkas kärnverksamheten. Istället växer ad...

Myten om kroppsspråket är nog ungefär lika gammal som den om råttan i pizzan. Frågan är bara var myten kommer ifrån? Svaret är att myten om kroppsspråket bygger på vetenskapliga fakta som ryckts ur sitt sammanhang och sedan putsats till för att konstruera en enkel sanning som är lätt att sälja in. Det är med andra ord samma teknik som används för att skapa falska nyheter. Photo by Slim Emcee (UG) the poet Truth_From_Africa_Photography on Unsplash Vad bygger myten om kroppsspråket på? Myten baseras på två studier som gjordes för över 50 år sedan, närmare bestämt 1967, av en pionjär inom modern kommunikationsforskning vid UCLA i USA; den iransk-amerikanske professorn Albert Mehrabian:  "Decoding of Inconsistent Communications" "Inference of Attitudes from Nonverbal Communication in Two Channels".   Vad handlar studierna om? Båda studierna undersökte positiva och negativa attityder och reaktioner (gilla-ogilla) vid förmedling av enstaka känslomässigt laddade ord, t ex ”kär” och ”hemsk...

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

Sverige är ett varumärke i världsklass. Vi har topplaceringar i internationella mätningar för mjuka värden såsom frihet, jämställdhet, språkkunskaper, öppenhet, hälsa och demokratiska värderingar. Inte nog med det: Sverige har även topplaceringar när det gäller It-teknik, bioteknik, anti-korruption och trygghetssystem. Det gör Sverige attraktivt för investerare och företagare. Men så stor framgång för ett så litet land provocerar.  Kängor från Vita Huset Donald Trump var som bekant snabb med att skicka en känga om vad som egentligen försiggår i Sverige, under sitt tal i Florida förra året. Han var dock inte den förste i Vita Huset som ifrågasatt idealbilden av Sverige. Redan i början av 1960-talet fick Sverige en rejäl knäpp på näsan av den amerikanske presidenten Dwight D Eisenhower - en knäpp som är kännbar än idag.  Eisenhower ville misskreditera sina politiska motståndare genom att slå hål på den svenska modellen - ”The Middle Way” - där den kungliga familjen, en socialistisk re...

Hur ser den idealiska medarbetaren ut? Den frågan ställde häromåret det svenska analysföretaget Tableau till 500 affärsledare. Av dessa svarade 78 procent att medarbetarens personlighet är viktigast.  Den idealiska medarbetaren har en personlighet som präglas av en väl utvecklad emotionell intelligens, EQ. Inte ens yrkesskicklighet eller förmågan att passa in i en viss företagskultur väger tyngre, enligt affärsledarna i undersökningen. Problemet är bara att psykopaten är expert på att framställa sig som den ”perfekta” medarbetaren vid en rekrytering, för att sedan visa sitt rätta jag när anställningen är genomförd. Det råder inget tvivel om att EQ är klent utvecklad hos psykopater, och här gäller det alltså att kunna skilja äkta vara från falska kopior för att inte bli lurad. Frågan är bara hur? Låt oss titta lite närmare på vad som skiljer psykopater från vanliga, hederliga människor.  1. Belöningen kommer när arbetet är utfört Medarbetare med hög EQ drivs inte av pengar och kortsi...

Psykopater skapar dålig stämning, bråk och kaos oavsett om de sitter i en sandlåda, i ett klassrum eller i ett styrelserum. Psykopater saknar moralisk kompass och stimuleras av att skada, såra och skrämma andra människor. De är också patologiska lögnare och lyder inga andra regler och lagar än sina egna. De är den stora miljöboven som de ansvariga inte vill se.  Nödropen skrattas bort Den senaste tidens nödrop från sextrakasserade kvinnor - och en och annan man - är alarmerande, men knappast överraskande. Redan från 6-årsverksamheten rapporterar flickor om vuxnas flathet inför ovälkomna pussar och kladd; ”Det är gulligt – och pojkar är ju pojkar”, signalerar den kvinnodominerade yrkeskåren till barnen. Flickor lär sig med andra ord tidigt att agera levande krockkuddar. I tonåren deltar också skolpersonalen aktivt i sextrakasserierna. Snygga kroppar och söta flickor premieras med högre betyg och förväntas tacksamt ta det hela som en komplimang. Idrottstränare och gympalärare kommente...

Det manliga geniet är en figur som har höjts till skyarna så länge jag kan minnas. Men är han så genial som det påstås? Vilken slags manlighet representerar han egentligen? När uppropen om sexuella trakasserier i arbetslivet duggar tätt är det hög tid att sätta det manliga geniet under lupp. Det manliga geniet är en narcissist  En sunt fungerande man har en sund syn på sig själv, sina medmänniskor och på omvärlden. Det manliga geniet däremot är en man som kännetecknas av en sjuklig självupptagenhet och ett grandiost ego, kort sagt en narcissist.  Narcissister har en personlighetsstörning där väsentliga spärrar och gränser saknas. Det manliga geniet är således präglad av en gränslös kärlek till sig själv och sina behov. Han behöver därför inte ta hänsyn till någon annan, för att få vad han anser sig ha rätt till. Det manliga geniet måste ständigt synas och höras Lika självklart är det för det manliga geniet att ständigt synas och höras. Han kräver stor publik och en hängiven beundrar...

"Fasten your seatbelts. It´s going to be a bumpy night", sa en gång Bette Davis. Detsamma säger jag, för denna blogg handlar om ett så delikat ämne som kvinnliga psykopater. Ämnet är outforskat. Det ger de kvinnliga psykopaterna ett försprång. Helst vill de bli chefer precis som sina manliga dito, men de är en mardröm på två ben.  Kvinnliga psykopater utnyttjar samhällets jämlikhetssträvanAtt tid och pengar inom forskning traditionellt har premierat män är ingen nyhet. Det gäller tyvärr också forskning om psykopater. Studierna görs på män – särskilt de våldskriminella som sitter bakom lås och bom. Även checklistor för att diagnosticera psykopater är konstruerade för att göra bedömningar på manliga fängelsedömda brottslingar – inte kvinnor.  Karriärsugna kvinnor med psykopatdrag i alla dess former och styrkegrader är inte sena att utnyttja den vetskapen. Jämlikhetskrav i styrelser och ledning öppnar dörren för dem liksom en strävan efter fler kvinnor på chefsposter i både privat näri...

I dagarna kom den årliga AllBright-rapporten som kartlägger könsfördelningen i de svenska börsbolagens ledningsgrupper och styrelser. Höstens rapport visar att utvecklingen för jämlikhet på det här området går trögt trots alla goda föresatser. Rekordmånga ledare talar sig visserligen varma för vikten av jämställdhet men i praktiken bromsar nio av tio bolag utvecklingen, säger AllBrights vd, Amanda Lundeteg. Lyckligtvis finns dock ljusglimtar. I årets rapport syns tydliga tecken på att en växande skara företagsledare tänker annorlunda. Många av dem är kvinnor. Det är också kvinnor på toppositioner som öppnar dörren för både män och kvinnor medan män till största delen endast öppnar dörren för andra män. Homogena valberedningar ger homogena styrelser När styrelser ska tillsättas i börsbolag använder majoriteten sig av valberedningar. De består i snitt av fyra personer. Totalt sett utgör dock personerna i valberedningarna endast 12 procent kvinnor. Homogena valberedningar tycks således...

Svenska chefer får toppbetyg i den medarbetarrapport som Netigate släppte i början av juni i år. I undersökningen deltog drygt 10 000 personer från 91 olika organisationer. Fyra av fem uppger att de har högt förtroende för sin chef – ett förtroende som är högre än vad medarbetarna visar sig ha för både vd och ledning i samma undersökning. Skälet är, enligt Netigate, att svenska chefer tar sig tid för sina medarbetare och ställer rimliga krav. Däremot blir betyget mediokert för svenska chefers förmåga att ge feedback, både när det gäller positivt beröm och konstruktiv kritik för sämre prestationer. Medarbetarna efterlyser också chefer som är bättre på att motivera och inspirera.  Bara en av tre rekommenderar sin arbetsplats Undersökningen visar dessutom att endast en av tre skulle rekommendera sin arbetsplats för andra. Efter det första anställningsåret ses även en dramatisk minskning i både nöjdhet och lojalitet, enligt Anna Tjernström, analytiker och HR-expert på Netigate. Hur ska ...

Ledarskap har blivit en lönsam industri fylld av tusentals böcker, föredragshållare och coacher som erbjuder det ena fantastiska framgångsreceptet efter det andra. Om dessa metoder fungerade i praktiken borde dagens chefer vara lysande stjärnor som leder sina medarbetare och organisationer till framgång och lycka av aldrig tidigare skådat slag. Verkligheten visar något helt annat. Det är hög tid att göra upp med leadership bullshit. Jeffrey Pfeffer, professor i organisatoriskt beteende vid Standforduniversitetet i USA, höjde ett varningens finger gentemot ledarskapsindustrin redan 2015 med sin bok Leadership BS – fixing workplaces and careers one truth at a time. Pfeffer har ägnat större delen av sitt drygt 70-åriga liv åt forskning och är klassad som en av världens främsta experter inom ledarskap.  Det största problemet när det gäller ledarskapsindustrin, menar Pfeffer, är å ena sidan att den gedigna kunskap som finns på området stöps om till lättköpt underhållning av självutnämnda...

Om man tränar mycket blir man bra på det man gör. För att bli riktigt bra behöver man, utöver talang, även lägga ner ungefär 10 000 timmars träning. Malcolm Gladwell myntade för snart tio år sedan 10 000-timmarsregeln i sin bok Outliers. Talang är dock en överskattad komponent för framgång menar Anders Ericsson, professor i psykologi vid Florida State University i USA. Han har ägnat 30 år av forskning på hur experter blir experter och har nyligen kommit ut med boken PEAK – vetenskapen om att bli bättre på nästan allt.  Enligt professor Ericsson kan vem som helst bli duktig på i stort sett vad som helst. Lösningen ligger i att träna på rätt sätt med en bra handledare, vara fokuserad och målmedveten samt hitta rätt nivå på utmaningen och få bra feedback – bara man vågar lämna sin bekvämlighetszon. Det låter lovande för alla som sysslar med Talent Management och ledarskap.   Att vara extremt duktig på sin sak är heller inte genetiskt betingad, visar Ericssons forskning. Däremot har de ...

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

Kraven ökar på öppenhet och transparens. Gränsen mellan vad som är fantasi och verklighet, sant eller falskt i etern, blir dock alltmer oklar. Lika oklar börjar gränsen bli mellan seriösa och oseriösa aktörer på området - inte minst när det gäller nyhetsrapportering. I en enkel handvändning kan fakta manipuleras och spridas över hela jordklotet. Det kunde inte vara bättre förspänt för psykopater att sprida falska nyheter. Typiska psykopater avskyr rampljuset till skillnad från sina kusiner narcissisterna, som är besatta av att synas och höras. Psykopater arbetar hellre bakom kulisserna för att skaffa sig makt och erbjuder gärna sina tjänster till en narcissistisk frontfigur. De spelar slugt på dennes fåfänga behov av att ständigt skönmåla sin egen person och smutskasta kritiker och rivaler. Sprängkraften i falska nyheter gör psykopater till etermediernas nya härskare.  Psykopaters paranoida hållning skapar emellertid ett synfält som blir svart och onyanserat; de ser fiender och kon...

Vi lever i en narcissistisk tidsålder. Syns du inte så finns du inte. Det egna jaget har blivit ett koncept som marknadsförs som en vara redan i skolåldern; man ska vara lycklig, se snygg ut och bli framgångsrik. Nätet vimlar av varumärkesbloggar vars affärsidé representerar en enda människas specifika personlighet och smak. Vi ser samma tendenser bland boktitlar och exklusiva magasin. Många blir imponerade, blir följare och gör tummen upp. Men vad händer om egot blir president?   Donald Trump har ett ego stort som ett hus. Han blir också hög som ett hus – på sig själv. Det tycks inte vara någon ände på hur mycket superlativer Trump strör omkring sin person. Det tycks inte heller finnas någon gräns för hur mycket okvädningsord han kastar på dem som inte sällar sig till hans beundrarskara – eller än värre: rivaliserar med honom i mediebruset. De ska tystas ner, förnedras och förlöjligas.  Trump är narcissist ut i fingerspetsarna; Han får aldrig nog av sig själv. Han pratar till och m...

Sidor