Index: typo3/mod/tools/em/class.em_index.php =================================================================== --- typo3/mod/tools/em/class.em_index.php (revision 3975) +++ typo3/mod/tools/em/class.em_index.php (working copy) @@ -249,6 +249,7 @@ 'experimental' => 'Experimental', 'test' => 'Test', 'obsolete' => 'Obsolete', + 'write_protected' => 'Writeprotected' ); /** @@ -261,6 +262,7 @@ 'experimental' => '#007eba', 'test' => '#979797', 'obsolete' => '#000000', + 'write_protected' => '#cf7307' ); /** @@ -896,9 +898,14 @@ if ($inst_list[$extKey]['type']!='S' && (!isset($inst_list[$extKey]) || $this->versionDifference($version,$inst_list[$extKey]['EM_CONF']['version'],$this->versionDiffFactor))) { if (isset($inst_list[$extKey])) { // update - $loc= ($inst_list[$extKey]['type']=='G'?'G':'L'); - $aUrl = 'index.php?CMD[importExt]='.$extKey.'&CMD[extVersion]='.$version.'&CMD[loc]='.$loc; - $loadUnloadLink.= ''; + if ($inst_list[$extKey]['EM_CONF']['state'] != 'write_protected') { + $loc= ($inst_list[$extKey]['type']=='G'?'G':'L'); + $aUrl = 'index.php?CMD[importExt]='.$extKey.'&CMD[extVersion]='.$version.'&CMD[loc]='.$loc; + $loadUnloadLink.= ''; + } else { + // extension is marked as write protected + $loadUnloadLink.= 'WP'; + } } else { // import $aUrl = 'index.php?CMD[importExt]='.$extKey.'&CMD[extVersion]='.$version.'&CMD[loc]=L'; @@ -927,13 +934,13 @@ $content.= '



'; - $content .= $this->browseLinks(); + $content .= $this->browseLinks(); $content.= ' '.implode(chr(10),$lines).'
'; - $content .= '
'.$this->browseLinks(); + $content .= '
'.$this->browseLinks(); $content.= '

'.$this->securityHint; $content.= '

PRIVACY NOTICE:
'.$this->privacyNotice; @@ -945,7 +952,7 @@ if (count($this->inst_keys)) { reset($this->inst_keys); while(list($extKey)=each($this->inst_keys)) { - $this->xmlhandler->searchExtensionsXML($extKey, '', '', true); + $this->xmlhandler->searchExtensionsXML($extKey, '', '', true); if((strlen($this->listRemote_search) && !stristr($extKey,$this->listRemote_search)) || isset($this->xmlhandler->extensionsXML[$extKey])) continue; $loadUnloadLink = t3lib_extMgm::isLoaded($extKey)? @@ -1794,7 +1801,7 @@ // Read uploaded file: if (!$uploadedTempFile) { if (!is_uploaded_file($_FILES['upload_ext_file']['tmp_name'])) { - t3lib_div::sysLog('Possible file upload attack: '.$_FILES['upload_ext_file']['tmp_name'], 'Extension Manager', 3); + t3lib_div::sysLog('Possible file upload attack: '.$_FILES['upload_ext_file']['tmp_name'], 'Extension Manager', 3); return 'File was not uploaded?!?'; } @@ -5300,7 +5307,7 @@ function showExtensionsToUpdate() { global $LANG; $extList = $this->getInstalledExtensions(); - + $content = ''. ''. ''. @@ -5312,7 +5319,7 @@ ''. ''; - foreach ($extList[0] as $name => $data) { + foreach ($extList[0] as $name => $data) { debug($data); $this->xmlhandler->searchExtensionsXML($name, '', '', false, true); if (!is_array($this->xmlhandler->extensionsXML[$name])) { continue; @@ -5363,7 +5370,7 @@ } } $content .= ''. -''. +''. ''. ''. ''.
'.$LANG->sL('LLL:EXT:lang/locallang_mod_tools_em.xml:tab_mod_comment').'
'.$icon.''.$data[EM_CONF][title].'' . ($data['EM_CONF']['state'] == 'write_protected' ? '' . $data['EM_CONF']['title'] . ' (write-protected)' : ''.$data[EM_CONF][title].'') . ''.$name.''.$data[EM_CONF][version].''.$lastversion.'