/** * 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 Lars Einar Engström | IHM

Blogginlägg av Lars Einar Engström

Lars Einar Engström

Författare, krönikör och föreläsare. Under många år har jag arbetat med ledarskap, organisations- och ledarutveckling kring framtidens kompetens i flera länder i Europa.

Lönegapet mellan kvinnor och män är ett årligen återkommande diskussionsämne. Inom vissa kretsar alltså. Låt oss inte lura oss själva nu och tro att det på allvar är ett område som fackföreningar och arbetsgivare är intresserad av på riktigt. Det är de inte, men frågan brukar dammas av ibland, en gång om året, och då sägs det: Detta måste vi göra någonting åt. Och tiden den går. 1947 infördes ”lika lön för lika tjänst” för statligt anställda, på papperet alltså, och 1960 slog ”arbetsmarknadens parter” dåvarande SAF och LO fast att ”slopa kvinnolönerna” och kvinnor ansågs nu kunna utföra ett arbete nog så gott som en riktig karl. Och 1994 blev löneskillnader beroende på kön är förbjudet, enlig lag. Inget intresse? Jamen, dettta har ju debatterats i många år? Absolut, men om intresset fanns på riktigt, så skulle löneorättvisor har fixats till för många år sedan. Vill ni veta sanningen? För oss män är detta i grunden en icke fråga. Lika lön för lika arbete? Är det inte självklart? Men ...

När jag rensade i diverse texter i min dator hittade jag ett antal citat från 2006. Det är ju några år sedan, men jag tycker ändå att de är tänkvärda, på olika sätt. Observera att några av personerna är inte kvar på samma företag idag. Kvinnor är dåliga på att ta för sig, de borde lära sig att förhandla som män.Peggy Bruzelius, styrelseproffs (SvD 2006-8-29) … dessutom måste man ha stöd hemifrån. Hade jag inte fått stöd av min man hade det inte fungerat alls.Mia Irborg, Nordenchef 3Com (IT Branschen Nr 2 2006) Jag har aldrig försökt rekrytera kvinnor, utan jag vill hitta de bästa. Då har det blivt hälften-hälften.Gunnila Nordström, Kinachef SonyEricsson (Metro 2006-02-20) … jag har funderat på varför kvinnor inte kommer hela vägen. Hur man än vrider och vänder på det kan familj och barn vara en orsak, dels för att ens egna värderingar förändras när man får barn, dels omvärldens.Åsa Gustafsson, affärsområdeschef, GNT (SMG) (IT Branschen Nr 2 2006) Enda sättet att nå lika i karriären ...

Organisationen Catalyst i New York är, enligt The American Institute of Philanthropy, USAs ledande forsknings- och ledarskapsorganisation där man studerar affärsutveckling och ledarskap och kopplingen till gender – jämställdhetsfrågor.  Catalyst är en non profit organisation och får sina medel via medlemsföretag, idag cirka 400 stycken. Organisationen finns förutom i USA, även i Europa (Schweiz) och snart även i Asien. Catalyst firade sitt 50 års jubileum 28 mars, 2012. MARC - en ny mötesplats för män på nätet På 50-årsfesten, i torsdags på Waldorf Astoria i New York, lanserades MARC, en ny mötesplats för män på nätet, där frågor kring ledarskap, sexism och jämställdhet kopplades till business och diskuterades tillsammans med åhörarna. MARC, är en förkortning för - Men Advocating Real Change och på hemsidan kommer det att skrivas krönikor, föras debatt, och nya forskningsresultat kommer att presenteras. Varje månad skriver 8 män (forskare och konsulter) utifrån ett manligt perspekti...

Vi går in i 2012 med öppna och nyfikna ögon. Allt kan hända. Allt kan falla. Men det kan också vare en möjlighet att göra både skillnad, att sticka ut och synas, och att göra affärer. Många jag träffat tror att nu tar man bort ”mjuka” områden, som miljöfrågan, personalutveckling, mångfald, jämlikhet, för nu ska det sparas pengar. Och så kommer det säkert att bli på många företag. Men vilka företag är intressanta inför framtiden? Vilka företag/organisationer lockar den unga starka mobila kompetensen som finns hos kommande generationer. Jo, de som vårdar sitt varumärke och fyller det med någonting mer än att man bara tillverkar bilar eller fasaner i porslin. Nästa generation Det sägs och skrivs ibland att bara nästa generation tar över så blir allt annorlunda inom näringslivet. Så är naturligtvis inte fallet. Det har aldrig hänt att en generation tagit över från en dag till en annan. Människor från alla åldrar är tillsammans hela tiden och överlappar varandras liv. De goda idéerna och...

Allt fler artiklar och bloggar handlar om männens hat gentemot kvinnor. Det där låter lite väl generaliserande. Det skrivs mycket om jämställdhet inför och efter Internationella Kvinnodagen den 8 mars varje år, men det är svårt att se hur någonting ska förändras ju mer vi skriver i olika media. Är artiklar, information och diverse broschyrer beteendeförändrande? Knappast. Attityd och beteendeförändring kan bara komma genom möten, diskussioner, uppfostran och åtgärdsprogram. Finns det inget positivt där ute? Själv är jag ute, nästan varje vecka, på företag och organisationer som föreläsare. Intresset för frågor kring feminism och jämställdhet är stort. BÅDE kvinnor och män är med och diskuterar, vi tycker inte lika, men vi diskuterar och tittar på hur den egna organisationen ska arbeta vidare med dessa frågor. Det är väl positivt? Vi pratar inte om huruvida någon ”hatar” någon annan. ”Hat” kanske inte är på agendan i Örebro, Borås, Sundsvall och Västerås? För det händer ju saker däru...

Kvinnor som är chefer är mer stressade än sina manliga kollegor slår Previa fast i en ny undersökning gjord av Per Larsson (SvD, GP, 2012-03-01). Det tycks vara mer komplicerat för kvinnliga chefer att hitta en hälsosam balans i tillvaron. ”Arbetsgivare bör anpassa arbetsvillkoren efter att många chefer, både män och kvinnor, också är småbarnsföräldrar”, säger Per Larsson, i en kommentar. Jo både män och kvinnor är föräldrar, men där upphör jämställdheten. Så vad kan stressen bero på? Ja anledningen är naturligtvis kvinnors dubbelarbete. Fortfarande står kvinnorna för huvudansvaret för hem och eventuella barn. Det kan ingen städhjälp i världen avhjälpa. Som chef på arbetet och som chef i hemmet kan det bli tungt. Och stressigt. Vad är det som gör att vi män fortfarande, 2012, ser det som en självklarhet att vi inte ska ta del av hemarbetet och barnen? Vad är det som gör att vi män tycker det är en självklarhet att ”någon annan” ska curla för oss så vi kan göra våra karriärer i lugn ...

På ett företag som jag föreläste hos för en tid sedan, föreslog en man - chef - att jag skulle bli mentor åt en ung kvinna som ansågs vara ett framtidslöfte. Vi träffade henne på hans rum efter föredraget. Självklart ville jag ställa upp om det var så att hon trodde och kände att jag var rätt person för jobbet. Den unga kvinnan såg på mig, log och sa: Jag har läst flera av dina böcker så det är snarare jag som ska vara mentor till dig! Först tänkte jag att det där är typiskt för nästa generation. Ingen respekt för en äldre erfaren man som vet allt, kan allt och har alla svaren… Jag kände mig förolämpad, närmast kränkt av denna ungdomliga fräckhet. Men, när jag sansat mig, förstod jag att hon naturligtvis hade rätt.  Vi silverryggar borde lära oss av unga kvinnor Det är mer på sin plats att vi silverryggar lär oss något om unga kvinnor och hur de ser på livet än att vi ska gå omkring med en förlegad mansbild som mall och norm och tro att kvinnor är dåliga kopior av män, fast annorlun...

I Norge valde man att lagstifta om kvotering till styrelser och antal kvinnor ökade, föga förvånande, i just styrelser. Men gör styrelsens sammansättning automatiskt näringslivet mer jämställt? Knappast. Påverkar det ledningsgruppens sätt att agera? Kanske, men inte alltid. För det är väl i ledningsgruppen som alla operativa beslut tas och det är väl där som kvinnorna ska in? I New York finns organisationen Catalyst som startades 1962 och arbetar över hela världen med forskning, information och råd angående kvinnor ute i arbetslivet. 400 företag och organisationer är medlemmar i Catalyst och de har kontor i USA, Canada och Europa. Catalyst hävdar i flera undersökningar att könsmixade grupper på alla nivåer är bra för alla företag och organisationer. Men kvotering är inte det första de tänker på, även om de inte är motståndare. Hur engagera män i frågan och hur få män att inse att mixen gör bolaget starkare, frågar sig Catalyst, och efter intervjuer och forskning påstår man att: För ...

Enligt konsultföretaget Kairos Future, så kommer det att behövas 250 000 nya chefer de närmaste 10 åren i Sverige. Detta innebär att var fjärde 70-talist, oavsett kön, måste bli chef. Frågan är om de kommer att vilja bli det? Kan du satsa på en chefskarriär och samtidigt vara del av en familj?  Familj en självklarhet för kvinnorna Att kunna ha familj är en förutsättning om vi ska kunna attrahera kvinnor till chefskarriären, eftersom kvinnor också har ansvaret för hemmet. Det är tungt att dubbelarbeta. Att företag då agerar med att presentera jämställdhetsprogram, möjligheter att göra uppehåll i karriären och ändå kunna komma tillbaka borde vara en självklarhet.  Att ge kvinnor en löneförhöjning när de går på föräldraledighet etc. är frågor som kommer att bli avgörande när nya unga kvinnor och män ser sig omkring. (Högre lön? Ja vadå? Unga män får ofta löneförhöjning när sambon är gravid, enligt TCO utredning 2009.) Stora internationella företag arbetar mer och mer med jämställdhetsf...

Det finns ett antal situationer som jag ställts inför de senaste åren ute på företag som får mig att undra. På ett stort svenskt företag med framförallt internationella affärer händer följande. En förstärkt ledningsgrupp skulle under en dag diskutera jämställdheten på bolaget. VD inledde med att hälsa oss alla välkomna och han hade tre punkter som han ville ta upp innan vi kunde börja:  Det ska vara högt i tak, under dagens diskussioner, därefter: 1. ”En grupp kvinnor har gjort en genomgång på företaget vad gäller jämställdhet. Jag har bett dom att maila resultatet och det lilla jag sett såg intressant ut”. 2. ”Vi måste nu börja rekrytera kvinnor, inte minst som chefer, annars kommer dom djävlarna att tvinga oss att kvotera”.  3. Han visade en bild på åtta män runt ett bord och frågade oss om det såg ut så här på ”vårt företag”, åtta män i en ledningsgrupp som sitter och bestämmer. Alla mumlade ett svagt bekräftande. Varpå VD säger ”just det åtta karlar, så är det hos oss, men det s...

För några år sedan intervjuade jag 20-talet kvinnor (27 till 35 år) och samlade en del tips från ”kvinnor till kvinnor”. Dessa goda råd är oroande för oss män, om vi försöker förstå hur kvinnor ser på oss.  Några exempel på vad kvinnor säger att de måste tänka på under en intervju, mina kommentarer inom parentes: - Det är en fördel att vara kvinna när du träffar en man på intervju, män är enkelspåriga, lirka, skämta med gubbarna på deras nivå för att få en dialog. (På vår nivå? Låg eller hög?)- Vi kvinnor är för ärliga i intervjuer och nedvärderar oss själva. (Ja ärlighet är inget som premieras i arbetslivet.)- Förhandla även om du förlorar så har du visat att du inte köper vad som helst. (Som en riktig karl alltså)- En del män är riktiga sexister, tror att man är intresserad av dom bara för att man är trevlig och glad. Det sist citatet ovan känner jag igen. Jag tror fortfarande att unga kvinnor kan tänkas vara intresserad av mig trots att den tiden är förbi. Jag tror, att dom tror,...

Nej, inte generellt och inte jämfört med män. Men jag undrar om inte några av oss är rädda? Är det inte därför kvotering har uppfattats och använts som ett hot? ”Om ni inte skärper er så lagstiftar vi”, sa socialdemokraten Margareta Winberg för några år sedan. Och se, antalet kvinnor i styrelser ökade. Winberg försvann, så även hotet, och rekryteringen av kvinnor avstannade. ”Hotet” finns inte lika tydligt, idag, men nu när jämställdhetsminister Nyamko Sabuni vill att kvinnor ska kvoteras in i kommunala bolagsstyrelser så uppfattar en del detta som ett nytt hot. Kommunala bolag först och vad väntar sedan? Tänk om regering och riksdag fattar beslut om att lagstifta i hela näringslivet. Vad gör vi då?  Vad kan kvinnor avslöja? Det finns någonting förnedrande i hela debatten. Att ”hota” med kvotering av kvinnor innebär ju att dessa är/kan vara farliga. För vad? Vill vi inte ha in ”den andra sortens” människor i våra kamratkretsar? Vad är det i så fall vi vill dölja i grabbgänget? Vad k...

Debatten går het nu. Inom flera områden dyker det upp riskkapitalbolag med säte i skatteparadis. Jag får några funderingar när jag läser och ser på TV nyheterna. Riskkapital, vad är det? Är inte det när någon går in med kapital och riskerar att förlora detta, om tex marknaden - kunderna sviker. Men det kanske är en lek med ord. Orwellskt nyspråk. Vari består då risken i de aktuella fallen? Det känns inte alldeles livsfarligt att gå in i branscher som är statligt subventionerade och som inte kan läggas ned. Skolan, med hela friskolebranschen, där vinsterna från skolpengar fraktas ut ur landet. Vari består risken? Att kunderna, barnen, slutar gå i skolan? Eller går till den en icke fungerande kommunal skola? Vården, där våra gamla i många fall under flera år behandlats som kollin. Jag menar Carema är ju bara ännu ett exempel. Varför har vi Lex Sara? Och vad hände på ISS 1997, samma problem samma frågor. Kvantitet före kvalitet. Vinst före människovärde. Vad ska gamlingarna göra? Ta si...

För snart ett par år (2010) sedan kom Monica Renstig på Women´s Business Research Institute med en undersökning som visade att det finns en tydligt minskning av antalet kvinnor som är chefer. På svenska storföretag ser Renstig en minskning av antalet från 27 till 24%.  Jag vet inte vad det är för konstigt med det. Att de minskar alltså. Låt mig börja med några citat: "Hade jag inte fått stöd av min man hade det inte fungerat alls".Mia Irborg, Nordenchef 3Com "Enda sättet att nå lika i karriären är att ta lika ansvar hemma, allt annat är bullshit".Niclas Storåkers, vd Avanza "Det finns uppdragsgivare som inte tycker det är någon idé att ta in yngre kvinnor för de kommer förmodligen att föda barn".Kristina Ohlsson, Mercuri Urval "Jag har en mycket hjälpsam fru och så försöker jag hålla helgerna lediga".Hans-Holger Albrecht, vd MTG Intressanta uttalanden som talar för sig själva. Det finns många anledningar till att antalet kvinnor på chefspositioner minskar - några av dem är: 1. Kvinn...

Vi har en utbredd sexism i Sverige trots att vi alltid säger att vi är bäst på jämställdhet. Men sexismen syns inte så tydligt, den kommer fram vid rekryteringstillfällen och vid lönesättning, i språket och när vi män bedömer någon utifrån kön istället för kompetens. Så har det varit länge och så kommer det att förbli om vi inte agerar.  När min första bok om sexism kom ut 2005 undrade en journalist om det var speciellt mansgrisigt i näringslivet. Nej, inte särskilt, svarade jag, det ser ut som samhället i stort. Jag hade kunnat sitta som militär eller universitetslektor och beskrivit samma sak.  I den boken namngav jag flera företag, där problem med sexism kommit upp till ytan. Men förlaget tog bort dem, eftersom man inte vill ha debatten huruvida det faktiskt var sant eller inte. Det var för tidigt. Frågan är om jag hänger ut dem, om jag skriver att det handlade om Skandia eller SAS, för det är knappast något unikt med dessa två. Vi har andra exempel som mediaföretagen Expressen, ...

Sidor