📄 class.em_index.php
字号:
// Upload: if ($this->importAtAll()) { $content= '</form><form action="index.php" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'" method="post"> <label for="upload_ext_file">Upload extension file (.t3x):</label><br /> <input type="file" size="60" id="upload_ext_file" name="upload_ext_file" /><br /> ... to location:<br /> <select name="CMD[loc]">'; if ($this->importAsType('L')) $content.='<option value="L">Local (../typo3conf/ext/)</option>'; if ($this->importAsType('G')) $content.='<option value="G">Global (typo3/ext/)</option>'; if ($this->importAsType('S')) $content.='<option value="S">System (typo3/sysext/)</option>'; $content.='</select><br /> <input type="checkbox" value="1" name="CMD[uploadOverwrite]" id="checkUploadOverwrite" /> <label for="checkUploadOverwrite">Overwrite any existing extension!</label><br /> <input type="submit" name="CMD[uploadExt]" value="Upload extension file" /><br /> '; } else $content=$this->noImportMsg(); $this->content.=$this->doc->spacer(20); $this->content.=$this->doc->section('Upload extension file directly (.t3x):',$content,0,1); } /** * Generates a link to the next page of extensions * * @return void */ function browseLinks() { $content = ''; if ($this->pointer) { $content .= '<a href="'.t3lib_div::linkThisScript(array('pointer' => $this->pointer-1)).'" class="typo3-prevPage"><img'.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/pilleft_n.gif','width="14" height="14"').' alt="Prev page" /> Prev page</a>'; } if ($content) $content .= ' '; if (intval($this->xmlhandler->matchingCount/$this->listingLimit)>$this->pointer) { $content .= '<a href="'.t3lib_div::linkThisScript(array('pointer' => $this->pointer+1)).'" class="typo3-nextPage"><img'.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/pilright_n.gif','width="14" height="14"').' alt="Next page" /> Next page</a>'; } $upper = (($this->pointer+1)*$this->listingLimit); if ($upper>$this->xmlhandler->matchingCount) { $upper = $this->xmlhandler->matchingCount; } if ($content) $content .= '<br /><br />Showing extensions <strong>'.($this->pointer*$this->listingLimit+1).'</strong> to <strong>'.$upper.'</strong>'; if ($content) $content .= '<br /><br />'; return $content; } /** * Allows changing of settings * * @return void */ function alterSettings() { // Prepare the HTML output: $content.= ' '.t3lib_BEfunc::cshItem('_MOD_tools_em', 'settings', $GLOBALS['BACK_PATH'],'|<br/>').' <fieldset><legend>Security Settings</legend> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor4"> <td><label for="display_unchecked">Enable extensions without review (basic security check):</label></td> <td>'.t3lib_BEfunc::getFuncCheck(0,'SET[display_unchecked]',$this->MOD_SETTINGS['display_unchecked'],'','','id="display_unchecked"').'</td> </tr> </table> <strong>Notice:</strong> Make sure you know what consequences enabling this checkbox might have. Check the <a href="http://typo3.org/extensions/what-are-reviews/" target="_blank">information on typo3.org about security reviewing</a>! </fieldset> <br /> <br /> <fieldset><legend>User Settings</legend> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor4"> <td><label for="set_fe_u">Enter repository username:</label></td> <td><input type="text" id="set_fe_u" name="SET[fe_u]" value="'.htmlspecialchars($this->MOD_SETTINGS['fe_u']).'" /></td> </tr> <tr class="bgColor4"> <td><label for="set_fe_p">Enter repository password:</label></td> <td><input type="password" id="set_fe_p" name="SET[fe_p]" value="'.htmlspecialchars($this->MOD_SETTINGS['fe_p']).'" /></td> </tr> </table> <strong>Notice:</strong> This is <em>not</em> your password to the TYPO3 backend! This user information is what is needed to log in at typo3.org with your account there! </fieldset> <br /> <br /> <fieldset><legend>Mirror selection</legend> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor4"> <td><label for="set_mirror_list_url">Enter mirror list URL:</label></a></td> <td><input type="text" size="50" id="set_mirror_list_url" name="SET[mirrorListURL]" value="'.htmlspecialchars($this->MOD_SETTINGS['mirrorListURL']).'" /></td> </tr> </table> <br /> <p>Select a mirror from below. This list is built from the online mirror list retrieved from the URL above.<br /><br /></p> <fieldset><legend>Mirror list</legend>'; if(!empty($this->MOD_SETTINGS['mirrorListURL'])) { if ($this->CMD['fetchMetaData']) { // fetches mirror/extension data from online rep. $content .= $this->fetchMetaData($this->CMD['fetchMetaData']); } else { $content.= '<a href="index.php?CMD[fetchMetaData]=mirrors">Click here to reload the list.</a>'; } } $content .= '<br /> <table cellspacing="4" style="text-align:left; vertical-alignment:top;"> <tr><td>Use</td><td>Name</td><td>URL</td><td>Country</td><td>Sponsored by</td></tr> '; if (!strlen($this->MOD_SETTINGS['extMirrors'])) $this->fetchMetaData('mirrors'); $extMirrors = unserialize($this->MOD_SETTINGS['extMirrors']); $extMirrors[''] = array('title'=>'Random (recommended!)'); ksort($extMirrors); if(is_array($extMirrors)) { foreach($extMirrors as $k => $v) { if(isset($v['sponsor'])) { $sponsor = '<a href="'.htmlspecialchars($v['sponsor']['link']).'" target="_new"><img src="'.$v['sponsor']['logo'].'" title="'.htmlspecialchars($v['sponsor']['name']).'" alt="'.htmlspecialchars($v['sponsor']['name']).'" /></a>'; } $selected = ($this->MOD_SETTINGS['selectedMirror']==$k) ? 'checked="checked"' : ''; $content.='<tr class="bgColor4"> <td><input type="radio" name="SET[selectedMirror]" id="selectedMirror'.$k.'" value="'.$k.'" '.$selected.'/></td><td><label for="selectedMirror'.$k.'">'.htmlspecialchars($v['title']).'</label></td><td>'.htmlspecialchars($v['host'].$v['path']).'</td><td>'.$v['country'].'</td><td>'.$sponsor.'</td></tr>'; } } $content.= ' </table> </fieldset> <br /> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor4"> <td><label for="set_rep_url">Enter repository URL:</label></td> <td><input type="text" size="50" id="set_rep_url" name="SET[rep_url]" value="'.htmlspecialchars($this->MOD_SETTINGS['rep_url']).'" /></td> </tr> </table> If you set a repository URL, this overrides the use of a mirror. Use this to select a specific (private) repository.<br /> </fieldset> <br /> <input type="submit" value="Update" /> '; $this->content.=$this->doc->section('Repository settings',$content,0,1); } /** * Allows to set the translation preferences and check the status * * @return void */ function translationHandling() { global $LANG, $TYPO3_LOADED_EXT; $LANG->includeLLFile('EXT:setup/mod/locallang.xml'); $incoming = t3lib_div::_POST('SET'); if(isset($incoming['selectedLanguages']) && is_array($incoming['selectedLanguages'])) { t3lib_BEfunc::getModuleData($this->MOD_MENU, array('selectedLanguages' => serialize($incoming['selectedLanguages'])), $this->MCONF['name'], '', 'selectedLanguages'); $this->MOD_SETTINGS['selectedLanguages'] = serialize($incoming['selectedLanguages']); } $selectedLanguages = unserialize($this->MOD_SETTINGS['selectedLanguages']); if(count($selectedLanguages)==1 && empty($selectedLanguages[0])) $selectedLanguages = array(); $theLanguages = t3lib_div::trimExplode('|',TYPO3_languages); foreach($theLanguages as $val) { if ($val!='default') { $localLabel = ' - ['.htmlspecialchars($GLOBALS['LOCAL_LANG']['default']['lang_'.$val]).']'; $selected = (is_array($selectedLanguages) && in_array($val, $selectedLanguages)) ? ' selected="selected"' : ''; $opt[$GLOBALS['LOCAL_LANG']['default']['lang_'.$val].'--'.$val]=' <option value="'.$val.'"'.$selected.'>'.$LANG->getLL('lang_'.$val,1).$localLabel.'</option>'; } } ksort($opt); // Prepare the HTML output: $content.= ' '.t3lib_BEfunc::cshItem('_MOD_tools_em', 'translation', $GLOBALS['BACK_PATH'],'|<br/>').' <fieldset><legend>Translation Settings</legend> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor4"> <td>Languages to fetch:</td> <td> <select name="SET[selectedLanguages][]" multiple="multiple" size="10"> <option></option>'. implode('',$opt).' </select> </td> </tr> </table> <br /> <p>For the selected languages the EM tries to download and install translation files if available, whenever an extension is installed. (This replaces the <code>csh_*</code> extensions that were used to install core translations before TYPO3 version 4!)<br /> <br />To request an update/install for already loaded extensions, see below.</p> </fieldset> <br /> <input type="submit" value="Save selection" /> <br /> </fieldset>'; $this->content.=$this->doc->section('Translation settings',$content,0,1); if(count($selectedLanguages)>0) { $mirrorURL = $this->getMirrorURL(); $content = '<input type="button" value="Check status against repository" onclick="document.location.href=\''.t3lib_div::linkThisScript(array('l10n'=>'check')).'\'" /> <input type="button" value="Update from repository" onclick="document.location.href=\''.t3lib_div::linkThisScript(array('l10n'=>'update')).'\'" />'; if(t3lib_div::_GET('l10n') == 'check') { $loadedExtensions = array_keys($TYPO3_LOADED_EXT); $loadedExtensions = array_diff($loadedExtensions,array('_CACHEFILE')); // Override content output - we now do that ourself: echo ($this->content . $this->doc->section('Translation status',$content,0,1)); $this->doPrintContent = FALSE; flush(); echo ' <br /> <br /> <p id="progress-message"> Checking translation status, please wait ... </p> <br /> <div style="width:100%; height:20px; border: 1px solid black;"> <div id="progress-bar" style="float: left; width: 0%; height: 20px; background-color:green;"> </div> <div id="transparent-bar" style="float: left; width: 100%; height: 20px; background-color:'.$this->doc->bgColor2.';"> </div> </div> <br /> <br /><p>This table shows the status of the loaded extension\'s translations.</p><br /> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor2"><td>Extension key</td> '; foreach($selectedLanguages as $lang) { echo ('<td>'.$LANG->getLL('lang_'.$lang,1).'</td>'); } echo ('</tr>'); $counter = 1; foreach($loadedExtensions as $extKey) { $percentDone = intval (($counter / count($loadedExtensions)) * 100); echo (' <script> document.getElementById("progress-bar").style.width = "'.$percentDone.'%"; document.getElementById("transparent-bar").style.width = "'.(100-$percentDone).'%"; document.getElementById("progress-message").firstChild.data="Checking translation status for extension \"'.$extKey.'\" ..."; </script> '); flush(); $translationStatusArr = $this->terConnection->fetchTranslationStatus($extKey,$mirrorURL); echo ('<tr class="bgColor4"><td>'.$extKey.'</td>'); foreach($selectedLanguages as $lang) { // remote unknown -> keine l10n if(!isset($translationStatusArr[$lang])) { echo ('<td title="No translation available">N/A</td>'); continue; } // determine local md5 from zip if(is_file(PATH_site.'typo3temp/'.$extKey.'-l10n-'.$lang.'.zip')) { $localmd5 = md5_file(PATH_site.'typo3temp/'.$extKey.'-l10n-'.$lang.'.zip'); } else { echo ('<td title="Not installed / Unknown" style="background-color:#ff0">???</td>'); continue; } // local!=remote -> needs update if($localmd5 != $translationStatusArr[$lang]['md5']) { echo ('<td title="Needs update" style="background-color:#ff0">UPD</td>'); continue; } echo ('<td title="Is up to date" style="background-color:#69a550">OK</td>'); } echo ('</tr>'); $counter ++; } echo '</table> <script> document.getElementById("progress-message").firstChild.data="Check done."; </script> '; echo $this->doc->endPage(); return ''; } elseif(t3lib_div::_GET('l10n') == 'update') { $loadedExtensions = array_keys($TYPO3_LOADED_EXT); $loadedExtensions = array_diff($loadedExtensions,array('_CACHEFILE')); // Override content output - we now do that ourself: echo ($this->content . $this->doc->section('Translation status',$content,0,1)); $this->doPrintContent = FALSE; flush(); echo (' <br /> <br /> <p id="progress-message"> Updating translations, please wait ... </p> <br /> <div style="width:100%; height:20px; border: 1px solid black;"> <div id="progress-bar" style="float: left; width: 0%; height: 20px; background-color:green;"> </div> <div id="transparent-bar" style="float: left; width: 100%; height: 20px; background-color:'.$this->doc->bgColor2.';"> </div> </div> <br /> <br /><p>This table shows the update results of the loaded extension\'s translations.<br /> <em>If you want to force a full check/update, delete the l10n zip-files from the typo3temp folder.</em></p><br /> <table border="0" cellpadding="2" cellspacing="2"> <tr class="bgColor2"><td>Extension key</td> '); foreach($selectedLanguages as $lang) { echo '<td>'.$LANG->getLL('lang_'.$lang,1).'</td>'; } echo '</tr>';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -