/** * 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 Micke Darmell | IHM

Blogginlägg av Micke Darmell

Micke Darmell

Mötesevangelist, författare och föreläsare i det brännheta ämnet "den ständiga uppkopplingen" - om konsten att verka i en uppkopplad värld. Min tes är att oavsett om du är ledare, kollega, vän, eller partner kommer du att lyckas om du kan vara härvarande.

Sommaren knackar äntligen på dörren och många av oss ser fram emot sköna lata dagar och tid med våra nära och kära. Men vad betyder det för vår semester att det flexibla arbetslivet vunnit allt större mark på många arbetsplatser? En majoritet av alla tjänstemän och –kvinnor kommer att kolla jobbmailen på semestern. Enligt Unionens kartläggning kommer 6 av 10 chefer att vara tillgängliga på mobilen under semestern. Och jobbmail och samtal är ju bara några av många saker som pockar på vår uppmärksamhet. Vi lämnar den uppkopplade livsstilens alla fantastiska fördelar därhän just nu. De är självskrivna. Frågan jag vill fokusera på här är inte vad man får ut av att vara uppkopplad- utan vad det är man missar när man är uppslukad av sin telefon. En mängd studier visar att den ständiga uppkopplingen, med jobbmejl tillgängligt via telefonen och hela världen en knapptryckning bort, kan leda till ökad stress, utbrändhet och depression.  Ett jobbmail som snabbt kan besvaras, en bild på en grek...

Göran Adlén släppte nyligen sin senaste trendrapport och det är, som alltid, spännande läsning. Adlén inleder med att skriva om vilket ”helvete” det är att komponera trendrapporter i dessa tider- hur sorterar man bland all information som finns tillgänglig? Hur ska man veta vad som är relevant? Hans slutsats blir att trend nummer 1 är ”the information crash”. All information som numera finns tillgänglig gör oss inte smartare. Tvärtom verkar informationsöverskottet göra det svårare för oss att lära om. Under min uppväxt i Gävle, där antalet ungdomar i liknande ålder som jag själv var begränsat, fick jag lov att umgås med människor som hade andra intressen än jag själv.  Hobbies, musiksmaker, och politiska åsikter skilde sig inom vänskapskretsen. Det betydde att jag varje dag stötte på åsikter jag inte själv hade, och därmed fick fundera över min egen hållning ganska ofta. Jag gick på konserter med band jag inte själv hade valt, vilket breddade min musiksmak. Jag fick genom mina vänne...

Hur ser din kalender ut idag? Är du chef eller ledare och följer snittet har du 4-6 timmar inbokade möten. Det betyder att du kommer sitta 25 år av ditt liv i möten. Det är en god anledning till att fundera en gång till kring hur era möten fungerar. Vill du ha fler anledningar? Kolla här! 30 % av all arbetstid är mötestid. 52 % av alla möten är dåligt förberedda. 25 % av mötesdeltagarna på det genomsnittliga mötet är där i onödan. 44 % av mötesdeltagarna kommer gå ifrån mötet och vara osäkra på vad egentligen som beslutades.   Mycket tid i möten som alltför ofta är dåliga, alltså. Allt som allt innebär det att svenska tjänstehen spenderar tid i dåliga möten för 170 miljarder kronor varje år. Det motsvarar runt 5 % av Sveriges BNP. Aj. Så vad göra? På organisationsnivå är det dags att sluta acceptera att oförberedda möten hålls. Inget mer skjuta från höften. Sluta kompensera låg kvalitet med hög kvantitet.Och även om din organisation inte har tagit tag i sin möteskultur än, kan du so...

Nej, vem sjutton gör det? Ordet har ju kapats och förvanskats så att vi förknippar det med SOPs och avskedsluncher, snarare än ett bättre arbetsklimat. Effektivitet har blandats samman med rationaliseringar. Att effektivisera handlar om att med ett visst antal givna resurser och kompetenser få ut mesta möjliga av organisationen. Att rationalisera handlar om att minska kostnader och bibehålla produktionen, eller att bibehålla kostnader och öka produktionen. Jaha, det låter väl som typ samma sak? Men det finns en viktig skillnad: Effektivitet handlar om kompetens, samarbete, kommunikation och koordinering. Det handlar om bra relationer. Rationaliseringar handlar å andra sidan om ’ta bort’ och ’dra ner’. Inte sagt att det inte kan vara nödvändigt ibland, men det är en annan sak än effektivitet. Jag samtalade med min gode vän och världens bästa föreläsare Janne Gunnarsson om detta. Janne beskrev följande modell av effektivitet: Effektivitet är en effekt av bra koordinering mellan indivi...

Det blir allt svårare att komma ner i flow. Det är i flow vi presterar och är mest effektiva. Kan du komma ner i flow under ordinarie arbetstid?   Pling! Ett SMS, en nyhetspush, ett mail, en instant messaging-konversation, en Facebook-kommentar… En notis som poppar upp på din telefon eller dator när du sitter och jobbar i det där oinspirerande excel-arket. Nog avbryter du det du håller på med för att istället kika vad som notisen gäller?   Kanske inte ett stort problem i sig? Det är ju skönt med en kort paus från monotona arbetsuppgifter då och då, så att man kan hålla tankarna fräscha. Men vad händer när det kommer ett pling var femte minut? Hur påverkas vår arbetsdag- och vi själv av dessa ständiga störningsmoment? För 14 år sedan kom Bodil Jönssons bok ”Tio tankar om tid”, där hon skrev om ställtid (tid att ställa i ordning, ställa av och ställa om). Då blev vi störda 13 gånger i timmen. Idag blir vi avbrutna 37 gånger i timmen.  Vår hälsa påverkas negativt av att ständigt vara u...

Många talar om att skapa det optimala laget, men jag upplever att det genuina intresset saknas. Nästan alla företag pratar om att de anställda är deras viktigaste tillgång- men deras egentliga fokus ligger trots det på hur alla nyckeltal ska nås, samtidigt som man låser fast de anställda i processer och system. Till och med inom min egen bransch, mötesindustrin, ser jag samma utveckling - eller avveckling. Där möter jag allt fler människor som inte trivs på grund av att de inte får arbeta med det de en gång sökte jobbet för- nämligen människan. Det är nyckeltal, grafer, siffror och lite fler nyckeltal. Vem pratar om kunden (förutom i nyckeltal)? Vem pratar om medarbetarna (förutom i FTE)? Vem pratar om människorna? Det ser likadant ut i de flesta branscher. Det som är förvånande är, att mötesindustrins kärna handlar om att tjäna andra människor. Trots detta tycks det mig att människan får stå tillbaka för olika data och nyckeltal. Det finns säkert många olika orsaker att det har bli...

Jag föreläser på ämnet ’Uppkopplad eller avkopplad’ och det tycks vara ett ämne som berör många. Föreläsningen handlar om hur vi påverkas då vi ständigt är uppkopplade och nåbara och jag tror att det är den höga igenkänningsfaktorn tillsammans med det faktum att vi inte aktivt har skaffat ett förhållningssätt till våra smartphones, som gör att föreläsningen berör. Vi har inte funderat över hur vi vill använda våra smartphones men har ändå kanske intuitivt anat att vi inte mår bra av att ständigt vara standby. Och faktum är att vår hälsa påverkas negativt av att ständigt sitta med våra smartphones nära till hands. Ett ständigt inflöde av sms, statusuppdateringar och lättuggade nyheter stressar oss. Fler och fler forskare undersöker den psykiska ohälsan som kommer av ett förbehållslöst användande av smartphones. Sömnbrist, inlärningssvårigheter, depressioner följer i dess fotspår- det står klart. Problemet är att vi aldrg kopplar ner och och därmed får koppla av. Även vår fysiska häls...

-De ständiga uppkopplingen är den största förändringen i människans miljö någonsin, säger Adam Gazzely en av världens främsta neurobiologer.  Vi kan se det runt omkring oss dagligen, de flesta av oss är en del av det.  Kärleksparet på restaurangen som redan innan förrätten kommit in sitter med en varsin mobil och berättar för sina vänner hur trevligt de har det, istället för att ha det trevligt med varandra.  Pappan som sitter på sandlådekanten med sitt barn i sandlådan, men han är ändå inte där eftersom mobilen pockar på uppmärksamheten. När vi står och väntar i Ica kön så hinner vi kolla mailen. När vi väntar på bussen så hinner vi inte bara kolla vädret på SMHI utan även dmi och kanske klart.se. Den ständiga nåbarheten och uppkopplingen är redan en norm. Vi har inte ifrågasatt den, utan tror bara att det är normal utveckling.  Jag tror att vi alla skulle må bra av att stanna upp och fundera på vår närvaro eller mentala närvaro, dvs vår härvaro. Hur påverkar det våra relationer om...

I stort alla stora organisationer jag varit inne i, i mitt 30-åriga arbetsliv, så vill alla ha en bättre feedback kultur. Eller enklare uttryckt, alla vill få mer beröm. Detta delar oftast också chefer med två åsikter. 1. Vi är här för att jobba och inte att gulla. 2. Ja vi borde ha en bättre feedback kultur, men jag som chef får heller aldrig feedback. Därefter stannar detta trots att medarbetarundersökning efter medarbetarundersökning visar detsamma: Vi vill få mer feedback! Det är en av våra mest grundläggande behov dessutom att vara sedda, vi vill alla ha beröm, vi tycker om att utvecklas och få hjälp till detta etc. Varför fungerar det då inte? Jag tror att ser vi till personen så kan vi ha en chef som aldrig fått beröm hemma, som kanske bara har blivit bekräftad genom prestation och på så sätt inte känner kraften i att få beröm. Har vi en sådan ledare som tycker det är "lull-lull" att ge beröm eller skapa en stämning där vi berömmer varandra och ger varandra feedback så tror j...

En organisation är summan av alla dess relationer. På insidan och i kontakt med kunder, samarbetspartners och samhället i stort. Påverkas en relation, påverkas helheten, precis som i vilket ecosystem som hest. Verksamhetens relationskapital talar man om idag, kanske den viktigaste och met värdefulla tillgång en verksamhet har. Det fysisika mötet är inte en av många kanaler för kommunikation. Den är den överlägset viktigaste och den mest betydelsefulla. Det var det igår, det är det idag och det kommer att vara det imorgon. Om hälften av allt som idag investeras i alla andra kanaler skulle investeras i att skapa bättre möten & bättre relationer i en organisation så skulle verksamhetsnyttan öka mer av detta. Så hur bygger vi och säkertäller vi detta? Steg 1: Det måste först finnas en insikt om allt detta. Ledningen i verksamheten måste förstå betydelsen av hur mycket tid, energi och möjligheter alla relationer och möten innebär. Här behövs såväl hårda fakta som egen reflektion. Ste...

När människor fick frågan för 20 år sedan vad de skulle vilja ha mer av blev svaret "tid". Det var långt innan de sociala mediernas tillkomst, vi hade knappt en dator på skrivbordet. Idag tillbringar vi i snitt 75 min på facebook visar undersökningar. (jag har aldrig träffat någon visserligen, de flesta verkar bara titta in en kort tid någon gång i veckan.....). Facebook är då bara en av alla digitala mötesplatser. De flesta verkar idag lida av tidsbrist, precis som för 20 år sedan, och de stressrelaterade sjukdomarna ökar och vi sover allt sämre. Det får mig att tänka på Bodil Jönssons bok "Tio tankar om tid" som kom för 14 år sedan. Då blev vi störda 13 ggr i timmen. Idag blir vi avbrutna 37ggr i snitt i timmen. Vi har alla 24h om dygnet, 168h i veckan och 8760h om året. Det och att vi alla skall dö är det enda som är rättvist här i världen. Då kan vi ju inbilla oss hela livet att vi har tidsbrist eller så kan vi inbilla oss att vi har gott om tid. Eller hur? Den kultur vi nu håll...

Alla säger samma sak. Trycket är större än någonsin. –Det känns som jag går till jobbet och när det har gått 8h så vet jag inte vad jag har gjort. Jag har sprungit mellan några möten och däremellan har jag släckt ett antal bränder säger en god vän som är chef i ett stort elbolag. En annan(arbetar i en större kommun), säger: –Mina dagar går åt, förutom dåligt förberedda möten, till att kontrollera att mina anställda har fört in alla siffror i alla våra system. En tredje (arbetar i en av större serviceorganisationerna) , säger: -Jag har älskat att vara ledare och få utveckla människor. Idag kontrollerar jag människor, jag läser Excelark och får hela tiden höra uppifrån att det är kris. Trots att vi gjorde det bästa resultatet någonsin förra året. Det finns alltid ett system, eller avdelning, som har kris. Ingen ser till helhet eller människor längre. Vad händer när vi hela tiden blir avbrutna? Kommer du ihåg när vi hade arbetsDAGAR? Nu känns det som vi bara har en MASSA olika arbetsmo...

Neurobiologen Adam Gazzaley säger att den ständiga uppkopplingen är den största förändringen i människans miljö. Någonsin! Vi lever i en digilog värld, dvs både i den digitala och den analoga. Det flyter ihop. Konsekvenserna av att vara uppkopplad 24/7 är det dock få som tar på allvar. Jag vill direkt understryka att jag inte är emot utveckling och ny teknik. De sociala medierna skapar fantastiska möjligheter. Det räcker med att säga arabvåren och alla förstår de sociala mediernas roll för demokratins utveckling i världen. Jag vill däremot föra ett resonemang om de negativa konsekvenserna den ständiga uppkopplingen får på oss, antingen på arbetsplatsen eller i privatlivet. Jag har alltså inte tagit digitalt självmord som sajter som suicidemachine.org med flera kan hjälpa till med! :-) Var närvarande eller misslyckas Min övertygelse är att oavsett om du är chef, ledare, kollega, vän, förälder eller kärlekspartner så kommer du att misslyckas om du inte är närvarande eller härvarande s...

Min erfarenhet är att det inte skiljer något alls. Däremot kan det vara olika problem. En saknar delaktighet (som minskar motivation som i sin tur leder till försämrad prestation), en annan otydligt vad som beslutades, en tredje en dålig struktur, en fjärde en dålig fysisk miljö och en femte dåligt mötesledarskap (många har flera av dessa förstås!). Jag kan dock inte se att den offentliga sektorn avsätter mer tid i möten än näringslivet. Bara så du vet! Självkänslan är däremot sämre i offentliga sektorn är min upplevelse som också stöds av denna studie som gjorts på skillnaden mellan höga chefer inom näringslivet vs offentliga sektorn! Intressant läsning här innan du fortsätter läsa min blogg! Intressant eller hur? Kan det vara så att med ett mer kvinnligt ledarskap (mer kvinnliga ledare inom offentliga sektorn) så är förståelsen för de mjuka värdena mer i fokus? I offentliga sektorn är utbildningsinsatserna mer konstant och inte beroende av konjunkturen? Vad tror du? Stay gr8 Micke...

Läste en intressant artikel skriven av Monica Gunne på Aftonbladet. Hon hade läst en studie gjort av Ming Company som har kommit fram till att vi endast gör saker som för företaget framåt två timmar av dagen.  Ni som följer min blogg vet att jag ser möten med perspektivet; Vilken effekt skall mötet ha och sedan skapas det därefter. Thomas de Ming som är en lärdesigner som varit med och gjort denna studie säger: "- Vi möts för att tänka tillsammans och då lär vi skapa förutsättningar för att det skall vara enkelt att tänka."  Jag tycker det är genialt. Problemet är att så få skapar dessa förutsättningar. Hur skall vi kunna fokusera på det vi ska om mobiler ringer, sms, mail, etc. Om vi sedan saknar syfte och mål blir det heller inte enkelt att tänka.  Vi saknar dessutom bra mötesrum eller rum för möten eller som Thomas säger, rum för tankar.  Ju mer vågade rum, ju mer vågade tankar. Kan det vara så? Ingen jag har träffat tror iaf att ex styrelserummet med det stora styrelsebordet ska...

Sidor