当前位置: 首页>>代码示例>>PHP>>正文


PHP StringUtility::getUniqueId方法代码示例

本文整理汇总了PHP中TYPO3\CMS\Core\Utility\StringUtility::getUniqueId方法的典型用法代码示例。如果您正苦于以下问题:PHP StringUtility::getUniqueId方法的具体用法?PHP StringUtility::getUniqueId怎么用?PHP StringUtility::getUniqueId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TYPO3\CMS\Core\Utility\StringUtility的用法示例。


在下文中一共展示了StringUtility::getUniqueId方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: render

 /**
  * Handler for unknown types.
  *
  * @return array As defined in initializeResultArray() of AbstractNode
  */
 public function render()
 {
     $resultArray = $this->initializeResultArray();
     $languageService = $this->getLanguageService();
     $row = $this->data['databaseRow'];
     $parameterArray = $this->data['parameterArray'];
     // If ratios are set do not add default options
     if (isset($parameterArray['fieldConf']['config']['ratios'])) {
         unset($this->defaultConfig['ratios']);
     }
     $config = ArrayUtility::arrayMergeRecursiveOverrule($this->defaultConfig, $parameterArray['fieldConf']['config']);
     // By default we allow all image extensions that can be handled by the GFX functionality
     if ($config['allowedExtensions'] === null) {
         $config['allowedExtensions'] = $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'];
     }
     if ($config['readOnly']) {
         $options = array();
         $options['parameterArray'] = array('fieldConf' => array('config' => $config), 'itemFormElValue' => $parameterArray['itemFormElValue']);
         $options['renderType'] = 'none';
         return $this->nodeFactory->create($options)->render();
     }
     $file = $this->getFile($row, $config['file_field']);
     if (!$file) {
         return $resultArray;
     }
     $content = '';
     $preview = '';
     if (GeneralUtility::inList(mb_strtolower($config['allowedExtensions']), mb_strtolower($file->getExtension()))) {
         // Get preview
         $preview = $this->getPreview($file, $parameterArray['itemFormElValue']);
         // Check if ratio labels hold translation strings
         foreach ((array) $config['ratios'] as $ratio => $label) {
             $config['ratios'][$ratio] = $languageService->sL($label, true);
         }
         $formFieldId = StringUtility::getUniqueId('formengine-image-manipulation-');
         $wizardData = array('zoom' => $config['enableZoom'] ? '1' : '0', 'ratios' => json_encode($config['ratios']), 'file' => $file->getUid());
         $wizardData['token'] = GeneralUtility::hmac(implode('|', $wizardData), 'ImageManipulationWizard');
         $buttonAttributes = array('data-url' => BackendUtility::getAjaxUrl('wizard_image_manipulation', $wizardData), 'data-severity' => 'notice', 'data-image-name' => $file->getNameWithoutExtension(), 'data-image-uid' => $file->getUid(), 'data-file-field' => $config['file_field'], 'data-field' => $formFieldId);
         $button = '<button class="btn btn-default t3js-image-manipulation-trigger"';
         foreach ($buttonAttributes as $key => $value) {
             $button .= ' ' . $key . '="' . htmlspecialchars($value) . '"';
         }
         $button .= '><span class="t3-icon fa fa-crop"></span>';
         $button .= $languageService->sL('LLL:EXT:lang/locallang_wizards.xlf:imwizard.open-editor', true);
         $button .= '</button>';
         $inputField = '<input type="hidden" ' . 'id="' . $formFieldId . '" ' . 'name="' . $parameterArray['itemFormElName'] . '" ' . 'value="' . htmlspecialchars($parameterArray['itemFormElValue']) . '" />';
         $content .= $inputField . $button;
         $content .= $this->getImageManipulationInfoTable($parameterArray['itemFormElValue']);
         $resultArray['requireJsModules'][] = array('TYPO3/CMS/Backend/ImageManipulation' => 'function(ImageManipulation){ImageManipulation.initializeTrigger()}');
     }
     $content .= '<p class="text-muted"><em>' . $languageService->sL('LLL:EXT:lang/locallang_wizards.xlf:imwizard.supported-types-message', true) . '<br />';
     $content .= mb_strtoupper(implode(', ', GeneralUtility::trimExplode(',', $config['allowedExtensions'])));
     $content .= '</em></p>';
     $item = '<div class="media">';
     $item .= $preview;
     $item .= '<div class="media-body">' . $content . '</div>';
     $item .= '</div>';
     $resultArray['html'] = $item;
     return $resultArray;
 }
开发者ID:Gregpl,项目名称:TYPO3.CMS,代码行数:65,代码来源:ImageManipulationElement.php

示例2: renderHtml

    public function renderHtml($name, $value, $options)
    {
        $width = $options['width'];
        // TODO: das Feld beachten!
        $maxlength = $options['maxlength'];
        $attributes = array();
        // for data-formengine-input-params
        $paramsList = array('field' => $name, 'evalList' => 'int', 'is_in' => '');
        $attributes['id'] = StringUtility::getUniqueId('formengine-input-');
        $attributes['value'] = '';
        $attributes['data-formengine-validation-rules'] = json_encode(array('type' => 'int'));
        $attributes['data-formengine-input-params'] = json_encode($paramsList);
        $attributes['data-formengine-input-name'] = htmlspecialchars($name);
        $attributeString = '';
        foreach ($attributes as $attributeName => $attributeValue) {
            $attributeString .= ' ' . $attributeName . '="' . htmlspecialchars($attributeValue) . '"';
        }
        //$width = (int)$this->formMaxWidth($size);
        $width = $GLOBALS['TBE_TEMPLATE']->formWidth($width);
        $html = '
			<input type="text"' . $attributeString . $width . ' />';
        // This is the ACTUAL form field - values from the EDITABLE field must be transferred to this field which is the one that is written to the database.
        $html .= '<input type="hidden" name="' . $name . '" value="' . htmlspecialchars($value) . '" />';
        // Den Wrap lassen wir weg, weil es zu einem Zeilenumbruch kommt
        //			$html = '<div class="form-control-wrap"' . $width . '>' . $html . '</div>';
        return $html;
    }
开发者ID:RocKordier,项目名称:rn_base,代码行数:27,代码来源:InputText.php

示例3: render

    /**
     * Rendering the cObject, QTOBJECT
     *
     * @param array $conf Array of TypoScript properties
     * @return string Output
     */
    public function render($conf = array())
    {
        $params = $prefix = '';
        if ($GLOBALS['TSFE']->baseUrl) {
            $prefix = $GLOBALS['TSFE']->baseUrl;
        }
        if ($GLOBALS['TSFE']->absRefPrefix) {
            $prefix = $GLOBALS['TSFE']->absRefPrefix;
        }
        $type = isset($conf['type.']) ? $this->cObj->stdWrap($conf['type'], $conf['type.']) : $conf['type'];
        // If file is audio and an explicit path has not been set,
        // take path from audio fallback property
        if ($type == 'audio' && empty($conf['file'])) {
            $conf['file'] = $conf['audioFallback'];
        }
        $filename = isset($conf['file.']) ? $this->cObj->stdWrap($conf['file'], $conf['file.']) : $conf['file'];
        $typeConf = $conf[$type . '.'];
        // Add QTobject js-file
        $this->getPageRenderer()->addJsFile($this->getPathToLibrary('flashmedia/qtobject/qtobject.js'));
        $replaceElementIdString = StringUtility::getUniqueId('mmqt');
        $GLOBALS['TSFE']->register['MMQTID'] = $replaceElementIdString;
        $qtObject = 'QTObject' . $replaceElementIdString;
        // Merge with default parameters
        $conf['params.'] = array_merge((array) $typeConf['default.']['params.'], (array) $conf['params.']);
        if (is_array($conf['params.']) && is_array($typeConf['mapping.']['params.'])) {
            ArrayUtility::remapArrayKeys($conf['params.'], $typeConf['mapping.']['params.']);
            foreach ($conf['params.'] as $key => $value) {
                $params .= $qtObject . '.addParam("' . $key . '", "' . $value . '");' . LF;
            }
        }
        $params = ($params ? substr($params, 0, -2) : '') . LF . $qtObject . '.write("' . $replaceElementIdString . '");';
        $alternativeContent = isset($conf['alternativeContent.']) ? $this->cObj->stdWrap($conf['alternativeContent'], $conf['alternativeContent.']) : $conf['alternativeContent'];
        $layout = str_replace(array('###ID###', '###QTOBJECT###'), array($replaceElementIdString, '<div id="' . $replaceElementIdString . '">' . $alternativeContent . '</div>'), isset($conf['layout.']) ? $this->cObj->stdWrap($conf['layout'], $conf['layout.']) : $conf['layout']);
        $width = isset($conf['width.']) ? $this->cObj->stdWrap($conf['width'], $conf['width.']) : $conf['width'];
        if (!$width) {
            $width = $conf[$type . '.']['defaultWidth'];
        }
        $height = isset($conf['height.']) ? $this->cObj->stdWrap($conf['height'], $conf['height.']) : $conf['height'];
        if (!$height) {
            $height = $conf[$type . '.']['defaultHeight'];
        }
        $fullFilename = $filename;
        // If the file name doesn't contain a scheme, prefix with appropriate data
        if (strpos($filename, '://') === false && !empty($prefix)) {
            $fullFilename = $prefix . $filename;
        }
        $embed = 'var ' . $qtObject . ' = new QTObject("' . $fullFilename . '", "' . $replaceElementIdString . '", "' . $width . '", "' . $height . '");';
        $content = $layout . '
			<script type="text/javascript">
				' . $embed . '
				' . $params . '
			</script>';
        if (isset($conf['stdWrap.'])) {
            $content = $this->cObj->stdWrap($content, $conf['stdWrap.']);
        }
        return $content;
    }
开发者ID:wmdbsystems,项目名称:mediace,代码行数:63,代码来源:QuicktimeObjectContentObject.php

示例4: addData

 /**
  * Initialize new row with unique uid
  *
  * @param array $result
  * @return array
  * @throws \InvalidArgumentException
  */
 public function addData(array $result)
 {
     if ($result['command'] !== 'new') {
         return $result;
     }
     // Throw exception if uid is already set
     if (isset($result['databaseRow']['uid'])) {
         throw new \InvalidArgumentException('uid is already set to ' . $result['databaseRow']['uid'], 1437991120);
     }
     $result['databaseRow']['uid'] = StringUtility::getUniqueId('NEW');
     return $result;
 }
开发者ID:rickymathew,项目名称:TYPO3.CMS,代码行数:19,代码来源:DatabaseUniqueUidNewRow.php

示例5: setRelations

 /**
  * At the end of the import process all file and DB relations should be set properly (that is relations
  * to imported records are all re-created so imported records are correctly related again)
  * Relations in flexform fields are processed in setFlexFormRelations() after this function
  *
  * @return void
  * @see setFlexFormRelations()
  */
 public function setRelations()
 {
     $updateData = array();
     // import_newId contains a register of all records that was in the import memorys "records" key
     foreach ($this->import_newId as $nId => $dat) {
         $table = $dat['table'];
         $uid = $dat['uid'];
         // original UID - NOT the new one!
         // If the record has been written and received a new id, then proceed:
         if (is_array($this->import_mapId[$table]) && isset($this->import_mapId[$table][$uid])) {
             $thisNewUid = BackendUtility::wsMapId($table, $this->import_mapId[$table][$uid]);
             if (is_array($this->dat['records'][$table . ':' . $uid]['rels'])) {
                 $thisNewPageUid = 0;
                 if ($this->legacyImport) {
                     if ($table != 'pages') {
                         $oldPid = $this->dat['records'][$table . ':' . $uid]['data']['pid'];
                         $thisNewPageUid = BackendUtility::wsMapId($table, $this->import_mapId['pages'][$oldPid]);
                     } else {
                         $thisNewPageUid = $thisNewUid;
                     }
                 }
                 // Traverse relation fields of each record
                 foreach ($this->dat['records'][$table . ':' . $uid]['rels'] as $field => $config) {
                     // uid_local of sys_file_reference needs no update because the correct reference uid was already written
                     // @see ImportExport::fixUidLocalInSysFileReferenceRecords()
                     if ($table === 'sys_file_reference' && $field === 'uid_local') {
                         continue;
                     }
                     switch ((string) $config['type']) {
                         case 'db':
                             if (is_array($config['itemArray']) && !empty($config['itemArray'])) {
                                 $itemConfig = $GLOBALS['TCA'][$table]['columns'][$field]['config'];
                                 $valArray = $this->setRelations_db($config['itemArray'], $itemConfig);
                                 $updateData[$table][$thisNewUid][$field] = implode(',', $valArray);
                             }
                             break;
                         case 'file':
                             if (is_array($config['newValueFiles']) && !empty($config['newValueFiles'])) {
                                 $valArr = array();
                                 foreach ($config['newValueFiles'] as $fI) {
                                     $valArr[] = $this->import_addFileNameToBeCopied($fI);
                                 }
                                 if ($this->legacyImport && $this->legacyImportFolder === null && isset($this->legacyImportMigrationTables[$table][$field])) {
                                     // Do nothing - the legacy import folder is missing
                                 } elseif ($this->legacyImport && $this->legacyImportFolder !== null && isset($this->legacyImportMigrationTables[$table][$field])) {
                                     $refIds = array();
                                     foreach ($valArr as $tempFile) {
                                         $fileName = $this->alternativeFileName[$tempFile];
                                         $fileObject = null;
                                         try {
                                             // check, if there is alreay the same file in the folder
                                             if ($this->legacyImportFolder->hasFile($fileName)) {
                                                 $fileStorage = $this->legacyImportFolder->getStorage();
                                                 $file = $fileStorage->getFile($this->legacyImportFolder->getIdentifier() . $fileName);
                                                 if ($file->getSha1() === sha1_file($tempFile)) {
                                                     $fileObject = $file;
                                                 }
                                             }
                                         } catch (Exception $e) {
                                         }
                                         if ($fileObject === null) {
                                             try {
                                                 $fileObject = $this->legacyImportFolder->addFile($tempFile, $fileName, DuplicationBehavior::RENAME);
                                             } catch (Exception $e) {
                                                 $this->error('Error: no file could be added to the storage for file name' . $this->alternativeFileName[$tempFile]);
                                             }
                                         }
                                         if ($fileObject !== null) {
                                             $refId = StringUtility::getUniqueId('NEW');
                                             $refIds[] = $refId;
                                             $updateData['sys_file_reference'][$refId] = array('uid_local' => $fileObject->getUid(), 'uid_foreign' => $thisNewUid, 'tablenames' => $table, 'fieldname' => $field, 'pid' => $thisNewPageUid, 'table_local' => 'sys_file');
                                         }
                                     }
                                     $updateData[$table][$thisNewUid][$field] = implode(',', $refIds);
                                     if (!empty($this->legacyImportMigrationTables[$table][$field])) {
                                         $this->legacyImportMigrationRecords[$table][$thisNewUid][$field] = $refIds;
                                     }
                                 } else {
                                     $updateData[$table][$thisNewUid][$field] = implode(',', $valArr);
                                 }
                             }
                             break;
                     }
                 }
             } else {
                 $this->error('Error: no record was found in data array!');
             }
         } else {
             $this->error('Error: this records is NOT created it seems! (' . $table . ':' . $uid . ')');
         }
     }
     if (!empty($updateData)) {
//.........这里部分代码省略.........
开发者ID:franzholz,项目名称:TYPO3.CMS,代码行数:101,代码来源:ImportExport.php

示例6: render


//.........这里部分代码省略.........
            $dateFormat = $dateFormats['time'];
            $isDateField = true;
            $classes[] = 't3js-datetimepicker';
            $attributes['data-date-type'] = 'time';
        } elseif (in_array('timesec', $evalList)) {
            $dateFormat = $dateFormats['timesec'];
            $isDateField = true;
            $classes[] = 't3js-datetimepicker';
            $attributes['data-date-type'] = 'timesec';
        } else {
            if ($checkboxIsset === false) {
                $config['checkbox'] = '';
            }
        }
        // @todo: The whole eval handling is a mess and needs refactoring
        foreach ($evalList as $func) {
            switch ($func) {
                case 'required':
                    $attributes['data-formengine-validation-rules'] = $this->getValidationDataAsJsonString(array('required' => true));
                    break;
                default:
                    // @todo: This is ugly: The code should find out on it's own whether a eval definition is a
                    // @todo: keyword like "date", or a class reference. The global registration could be dropped then
                    // Pair hook to the one in \TYPO3\CMS\Core\DataHandling\DataHandler::checkValue_input_Eval()
                    if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tce']['formevals'][$func])) {
                        if (class_exists($func)) {
                            $evalObj = GeneralUtility::makeInstance($func);
                            if (method_exists($evalObj, 'deevaluateFieldValue')) {
                                $_params = array('value' => $parameterArray['itemFormElValue']);
                                $parameterArray['itemFormElValue'] = $evalObj->deevaluateFieldValue($_params);
                            }
                        }
                    }
            }
        }
        $paramsList = array('field' => $parameterArray['itemFormElName'], 'evalList' => implode(',', $evalList), 'is_in' => trim($config['is_in']), 'checkbox' => $config['checkbox'] ? 1 : 0, 'checkboxValue' => $config['checkbox']);
        // set classes
        $classes[] = 'form-control';
        $classes[] = 't3js-clearable';
        $classes[] = 'hasDefaultValue';
        // calculate attributes
        $attributes['data-formengine-validation-rules'] = $this->getValidationDataAsJsonString($config);
        $attributes['data-formengine-input-params'] = json_encode($paramsList);
        $attributes['data-formengine-input-name'] = htmlspecialchars($parameterArray['itemFormElName']);
        $attributes['id'] = StringUtility::getUniqueId('formengine-input-');
        $attributes['value'] = '';
        if (isset($config['max']) && (int) $config['max'] > 0) {
            $attributes['maxlength'] = (int) $config['max'];
        }
        if (!empty($classes)) {
            $attributes['class'] = implode(' ', $classes);
        }
        // This is the EDITABLE form field.
        if (!empty($config['placeholder'])) {
            $attributes['placeholder'] = trim($config['placeholder']);
        }
        if (isset($config['autocomplete'])) {
            $attributes['autocomplete'] = empty($config['autocomplete']) ? 'off' : 'on';
        }
        // Build the attribute string
        $attributeString = '';
        foreach ($attributes as $attributeName => $attributeValue) {
            $attributeString .= ' ' . $attributeName . '="' . htmlspecialchars($attributeValue) . '"';
        }
        $html = '
			<input type="text"' . $attributeString . $parameterArray['onFocus'] . ' />';
        // This is the ACTUAL form field - values from the EDITABLE field must be transferred to this field which is the one that is written to the database.
        $html .= '<input type="hidden" name="' . $parameterArray['itemFormElName'] . '" value="' . htmlspecialchars($parameterArray['itemFormElValue']) . '" />';
        // Going through all custom evaluations configured for this field
        // @todo: Similar to above code!
        foreach ($evalList as $evalData) {
            if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tce']['formevals'][$evalData])) {
                if (class_exists($evalData)) {
                    $evalObj = GeneralUtility::makeInstance($evalData);
                    if (method_exists($evalObj, 'returnFieldJS')) {
                        $resultArray['extJSCODE'] .= LF . 'TBE_EDITOR.customEvalFunctions[' . GeneralUtility::quoteJSvalue($evalData) . '] = function(value) {' . $evalObj->returnFieldJS() . '}';
                    }
                }
            }
        }
        // add HTML wrapper
        if ($isDateField) {
            $html = '
				<div class="input-group">
					' . $html . '
					<span class="input-group-btn">
						<label class="btn btn-default" for="' . $attributes['id'] . '">
							' . $iconFactory->getIcon('actions-edit-pick-date', Icon::SIZE_SMALL)->render() . '
						</label>
					</span>
				</div>';
        }
        // Wrap a wizard around the item?
        $html = $this->renderWizards(array($html), $config['wizards'], $table, $row, $fieldName, $parameterArray, $parameterArray['itemFormElName'], $specConf);
        // Add a wrapper to remain maximum width
        $width = (int) $this->formMaxWidth($size);
        $html = '<div class="form-control-wrap"' . ($width ? ' style="max-width: ' . $width . 'px"' : '') . '>' . $html . '</div>';
        $resultArray['html'] = $html;
        return $resultArray;
    }
开发者ID:hlop,项目名称:TYPO3.CMS,代码行数:101,代码来源:InputTextElement.php

示例7: render

 /**
  * This will render a <textarea>
  *
  * @return array As defined in initializeResultArray() of AbstractNode
  */
 public function render()
 {
     $languageService = $this->getLanguageService();
     $table = $this->data['tableName'];
     $fieldName = $this->data['fieldName'];
     $row = $this->data['databaseRow'];
     $parameterArray = $this->data['parameterArray'];
     $resultArray = $this->initializeResultArray();
     $backendUser = $this->getBackendUserAuthentication();
     $config = $parameterArray['fieldConf']['config'];
     // Setting columns number
     $cols = MathUtility::forceIntegerInRange($config['cols'] ?: $this->defaultInputWidth, $this->minimumInputWidth, $this->maxInputWidth);
     // Setting number of rows
     $rows = MathUtility::forceIntegerInRange($config['rows'] ?: 5, 1, 20);
     $originalRows = $rows;
     $itemFormElementValueLength = strlen($parameterArray['itemFormElValue']);
     if ($itemFormElementValueLength > $this->charactersPerRow * 2) {
         $cols = $this->maxInputWidth;
         $rows = MathUtility::forceIntegerInRange(round($itemFormElementValueLength / $this->charactersPerRow), count(explode(LF, $parameterArray['itemFormElValue'])), 20);
         if ($rows < $originalRows) {
             $rows = $originalRows;
         }
     }
     // must be called after the cols and rows calculation, so the parameters are applied
     // to read-only fields as well.
     // @todo: Same as in InputTextElement ...
     if ($config['readOnly']) {
         $config['cols'] = $cols;
         $config['rows'] = $rows;
         $options = $this->data;
         $options['parameterArray'] = array('fieldConf' => array('config' => $config), 'itemFormElValue' => $parameterArray['itemFormElValue']);
         $options['renderType'] = 'none';
         return $this->nodeFactory->create($options)->render();
     }
     $evalList = GeneralUtility::trimExplode(',', $config['eval'], true);
     // "Extra" configuration; Returns configuration for the field based on settings found in the "types" fieldlist. Traditionally, this is where RTE configuration has been found.
     $specialConfiguration = BackendUtility::getSpecConfParts($parameterArray['fieldConf']['defaultExtras']);
     $html = '';
     // Show message, if no RTE (field can only be edited with RTE!)
     if ($specialConfiguration['rte_only']) {
         $html = '<p><em>' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:lang/locallang_core.xlf:labels.noRTEfound')) . '</em></p>';
     } else {
         $attributes = array();
         // validation
         foreach ($evalList as $func) {
             if ($func === 'required') {
                 $attributes['data-formengine-validation-rules'] = $this->getValidationDataAsJsonString(array('required' => true));
             } else {
                 // @todo: This is ugly: The code should find out on it's own whether a eval definition is a
                 // @todo: keyword like "date", or a class reference. The global registration could be dropped then
                 // Pair hook to the one in \TYPO3\CMS\Core\DataHandling\DataHandler::checkValue_input_Eval()
                 // There is a similar hook for "evaluateFieldValue" in DataHandler and InputTextElement
                 if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tce']['formevals'][$func])) {
                     if (class_exists($func)) {
                         $evalObj = GeneralUtility::makeInstance($func);
                         if (method_exists($evalObj, 'deevaluateFieldValue')) {
                             $_params = array('value' => $parameterArray['itemFormElValue']);
                             $parameterArray['itemFormElValue'] = $evalObj->deevaluateFieldValue($_params);
                         }
                     }
                 }
             }
         }
         // calculate classes
         $classes = array();
         $classes[] = 'form-control';
         $classes[] = 't3js-formengine-textarea';
         $classes[] = 'formengine-textarea';
         if ($specialConfiguration['fixed-font']) {
             $classes[] = 'text-monospace';
         }
         if ($specialConfiguration['enable-tab']) {
             $classes[] = 't3js-enable-tab';
         }
         // calculate styles
         $styles = array();
         // add the max-height from the users' preference to it
         $maximumHeight = (int) $backendUser->uc['resizeTextareas_MaxHeight'];
         if ($maximumHeight > 0) {
             $styles[] = 'max-height: ' . $maximumHeight . 'px';
         }
         // calculate attributes
         $attributes['id'] = StringUtility::getUniqueId('formengine-textarea-');
         $attributes['name'] = htmlspecialchars($parameterArray['itemFormElName']);
         $attributes['data-formengine-input-name'] = htmlspecialchars($parameterArray['itemFormElName']);
         if (!empty($styles)) {
             $attributes['style'] = implode(' ', $styles);
         }
         if (!empty($classes)) {
             $attributes['class'] = implode(' ', $classes);
         }
         $attributes['rows'] = $rows;
         $attributes['wrap'] = $specialConfiguration['nowrap'] ? 'off' : ($config['wrap'] ?: 'virtual');
         $attributes['onChange'] = implode('', $parameterArray['fieldChangeFunc']);
         if (isset($config['max']) && (int) $config['max'] > 0) {
//.........这里部分代码省略.........
开发者ID:dachcom-digital,项目名称:TYPO3.CMS,代码行数:101,代码来源:TextElement.php

示例8: getSelectMmQueryParts

 /**
  * Creates SELECT query components for selecting fields ($select) from two/three tables joined
  * Use $mm_table together with $local_table or $foreign_table to select over two tables. Or use all three tables to select the full MM-relation.
  * The JOIN is done with [$local_table].uid <--> [$mm_table].uid_local  / [$mm_table].uid_foreign <--> [$foreign_table].uid
  * The function is very useful for selecting MM-relations between tables adhering to the MM-format used by TCE (TYPO3 Core Engine). See the section on $GLOBALS['TCA'] in Inside TYPO3 for more details.
  *
  * @param string $select See exec_SELECT_mm_query()
  * @param string $local_table See exec_SELECT_mm_query()
  * @param string $mm_table See exec_SELECT_mm_query()
  * @param string $foreign_table See exec_SELECT_mm_query()
  * @param string $whereClause See exec_SELECT_mm_query()
  * @param string $groupBy See exec_SELECT_mm_query()
  * @param string $orderBy See exec_SELECT_mm_query()
  * @param string $limit See exec_SELECT_mm_query()
  * @return array SQL query components
  */
 protected function getSelectMmQueryParts($select, $local_table, $mm_table, $foreign_table, $whereClause = '', $groupBy = '', $orderBy = '', $limit = '')
 {
     $foreign_table_as = $foreign_table == $local_table ? $foreign_table . StringUtility::getUniqueId('_join') : '';
     $mmWhere = $local_table ? $local_table . '.uid=' . $mm_table . '.uid_local' : '';
     $mmWhere .= ($local_table and $foreign_table) ? ' AND ' : '';
     $tables = ($local_table ? $local_table . ',' : '') . $mm_table;
     if ($foreign_table) {
         $mmWhere .= ($foreign_table_as ?: $foreign_table) . '.uid=' . $mm_table . '.uid_foreign';
         $tables .= ',' . $foreign_table . ($foreign_table_as ? ' AS ' . $foreign_table_as : '');
     }
     return array('SELECT' => $select, 'FROM' => $tables, 'WHERE' => $mmWhere . ' ' . $whereClause, 'GROUPBY' => $groupBy, 'ORDERBY' => $orderBy, 'LIMIT' => $limit);
 }
开发者ID:rickymathew,项目名称:TYPO3.CMS,代码行数:28,代码来源:DatabaseConnection.php

示例9: modifyRecords

 /**
  * @param int $pageId
  * @param array $tableRecordData
  */
 public function modifyRecords($pageId, array $tableRecordData)
 {
     $dataMap = array();
     $currentUid = null;
     $previousTableName = null;
     $previousUid = null;
     foreach ($tableRecordData as $tableName => $recordData) {
         if (empty($recordData['uid'])) {
             continue;
         }
         $recordData = $this->resolvePreviousUid($recordData, $currentUid);
         $currentUid = $recordData['uid'];
         if ($recordData['uid'] === '__NEW') {
             $recordData['pid'] = $pageId;
             $currentUid = StringUtility::getUniqueId('NEW');
         }
         unset($recordData['uid']);
         $dataMap[$tableName][$currentUid] = $recordData;
         if ($previousTableName !== null && $previousUid !== null) {
             $dataMap[$previousTableName][$previousUid] = $this->resolveNextUid($dataMap[$previousTableName][$previousUid], $currentUid);
         }
         $previousTableName = $tableName;
         $previousUid = $currentUid;
     }
     $this->createDataHandler();
     $this->dataHandler->start($dataMap, array());
     $this->dataHandler->process_datamap();
 }
开发者ID:hlop,项目名称:TYPO3.CMS,代码行数:32,代码来源:ActionService.php

示例10: getUniqueIdReturnsIdWithoutDot

 /**
  * @test
  */
 public function getUniqueIdReturnsIdWithoutDot()
 {
     $this->assertNotContains('.', StringUtility::getUniqueId());
 }
开发者ID:TYPO3Incubator,项目名称:TYPO3.CMS,代码行数:7,代码来源:StringUtilityTest.php

示例11: render

 /**
  * Entry method
  *
  * @return array As defined in initializeResultArray() of AbstractNode
  */
 public function render()
 {
     /** @var IconFactory $iconFactory */
     $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
     $languageService = $this->getLanguageService();
     $flexFormFieldsArray = $this->data['flexFormDataStructureArray'];
     $flexFormRowData = $this->data['flexFormRowData'];
     $flexFormFieldIdentifierPrefix = $this->data['flexFormFieldIdentifierPrefix'];
     $flexFormSectionType = $this->data['flexFormSectionType'];
     $flexFormSectionTitle = $this->data['flexFormSectionTitle'];
     $userHasAccessToDefaultLanguage = $this->getBackendUserAuthentication()->checkLanguageAccess(0);
     $resultArray = $this->initializeResultArray();
     // Creating IDs for form fields:
     // It's important that the IDs "cascade" - otherwise we can't dynamically expand the flex form
     // because this relies on simple string substitution of the first parts of the id values.
     $flexFormFieldIdentifierPrefix = $flexFormFieldIdentifierPrefix . '-' . GeneralUtility::shortMd5(uniqid('id', true));
     // Render each existing container
     foreach ($flexFormRowData as $flexFormContainerCounter => $existingSectionContainerData) {
         // @todo: This relies on the fact that "_TOGGLE" is *below* the real data in the saved xml structure
         if (is_array($existingSectionContainerData)) {
             $existingSectionContainerDataStructureType = key($existingSectionContainerData);
             $existingSectionContainerData = $existingSectionContainerData[$existingSectionContainerDataStructureType];
             $containerDataStructure = $flexFormFieldsArray[$existingSectionContainerDataStructureType];
             // There may be cases where a field is still in DB but does not exist in definition
             if (is_array($containerDataStructure)) {
                 $sectionTitle = '';
                 if (!empty($containerDataStructure['title'])) {
                     $sectionTitle = $languageService->sL($containerDataStructure['title']);
                 }
                 $options = $this->data;
                 $options['flexFormRowData'] = $existingSectionContainerData['el'];
                 $options['flexFormDataStructureArray'] = $containerDataStructure['el'];
                 $options['flexFormFieldIdentifierPrefix'] = $flexFormFieldIdentifierPrefix;
                 $options['flexFormFormPrefix'] = $this->data['flexFormFormPrefix'] . '[' . $flexFormSectionType . ']' . '[el]';
                 $options['flexFormContainerName'] = $existingSectionContainerDataStructureType;
                 $options['flexFormContainerCounter'] = $flexFormContainerCounter;
                 $options['flexFormContainerTitle'] = $sectionTitle;
                 $options['flexFormContainerElementCollapsed'] = (bool) $existingSectionContainerData['el']['_TOGGLE'];
                 $options['renderType'] = 'flexFormContainerContainer';
                 $flexFormContainerContainerResult = $this->nodeFactory->create($options)->render();
                 $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $flexFormContainerContainerResult);
             }
         }
     }
     // "New container" handling: Creates a "template" of each possible container and stuffs it
     // somewhere into DOM to be handled with JS magic.
     // Fun part: Handle the fact that such things may be set for children
     $containerTemplatesHtml = array();
     foreach ($flexFormFieldsArray as $flexFormContainerName => $flexFormFieldDefinition) {
         $containerTemplateHtml = array();
         $sectionTitle = '';
         if (!empty($flexFormFieldDefinition['title'])) {
             $sectionTitle = $languageService->sL($flexFormFieldDefinition['title']);
         }
         $options = $this->data;
         // @todo: this should use the prepared templateRow parallel to the single elements to have support of default values!
         $options['flexFormRowData'] = array();
         $options['flexFormDataStructureArray'] = $flexFormFieldDefinition['el'];
         $options['flexFormFieldIdentifierPrefix'] = $flexFormFieldIdentifierPrefix;
         $options['flexFormFormPrefix'] = $this->data['flexFormFormPrefix'] . '[' . $flexFormSectionType . ']' . '[el]';
         $options['flexFormContainerName'] = $flexFormContainerName;
         $options['flexFormContainerCounter'] = $flexFormFieldIdentifierPrefix . '-form';
         $options['flexFormContainerTitle'] = $sectionTitle;
         $options['flexFormContainerElementCollapsed'] = false;
         $options['renderType'] = 'flexFormContainerContainer';
         $flexFormContainerContainerTemplateResult = $this->nodeFactory->create($options)->render();
         $uniqueId = StringUtility::getUniqueId('idvar');
         $identifierPrefixJs = 'replace(/' . $flexFormFieldIdentifierPrefix . '-/g,"' . $flexFormFieldIdentifierPrefix . '-"+' . $uniqueId . '+"-")';
         $identifierPrefixJs .= '.replace(/(tceforms-(datetime|date)field-)/g,"$1" + (new Date()).getTime())';
         $onClickInsert = array();
         $onClickInsert[] = 'var ' . $uniqueId . ' = "' . 'idx"+(new Date()).getTime();';
         $onClickInsert[] = 'TYPO3.jQuery("#' . $flexFormFieldIdentifierPrefix . '").append(TYPO3.jQuery(' . json_encode($flexFormContainerContainerTemplateResult['html']) . '.' . $identifierPrefixJs . '));';
         $onClickInsert[] = 'TYPO3.jQuery("#' . $flexFormFieldIdentifierPrefix . '").t3FormEngineFlexFormElement();';
         $onClickInsert[] = 'eval(unescape("' . rawurlencode(implode(';', $flexFormContainerContainerTemplateResult['additionalJavaScriptPost'])) . '").' . $identifierPrefixJs . ');';
         $onClickInsert[] = 'TBE_EDITOR.addActionChecks("submit", unescape("' . rawurlencode(implode(';', $flexFormContainerContainerTemplateResult['additionalJavaScriptSubmit'])) . '").' . $identifierPrefixJs . ');';
         $onClickInsert[] = 'TYPO3.FormEngine.reinitialize();';
         $onClickInsert[] = 'return false;';
         $containerTemplateHtml[] = '<a href="#" class="btn btn-default" onclick="' . htmlspecialchars(implode(LF, $onClickInsert)) . '">';
         $containerTemplateHtml[] = $iconFactory->getIcon('actions-document-new', Icon::SIZE_SMALL)->render();
         $containerTemplateHtml[] = htmlspecialchars(GeneralUtility::fixed_lgd_cs($sectionTitle, 30));
         $containerTemplateHtml[] = '</a>';
         $containerTemplatesHtml[] = implode(LF, $containerTemplateHtml);
         $flexFormContainerContainerTemplateResult['html'] = '';
         $flexFormContainerContainerTemplateResult['additionalJavaScriptPost'] = array();
         $flexFormContainerContainerTemplateResult['additionalJavaScriptSubmit'] = array();
         $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $flexFormContainerContainerTemplateResult);
     }
     // Create new elements links
     $createElementsHtml = array();
     if ($userHasAccessToDefaultLanguage) {
         $createElementsHtml[] = '<div class="t3-form-field-add-flexsection">';
         $createElementsHtml[] = '<div class="btn-group">';
         $createElementsHtml[] = implode('|', $containerTemplatesHtml);
         $createElementsHtml[] = '</div>';
         $createElementsHtml[] = '</div>';
//.........这里部分代码省略.........
开发者ID:Audibene-GMBH,项目名称:TYPO3.CMS,代码行数:101,代码来源:FlexFormSectionContainer.php

示例12: renderSelectElement

 /**
  * Renders a <select> element
  *
  * @param array $optionElements List of rendered <option> elements
  * @param array $parameterArray
  * @param array $config Field configuration
  * @return string
  */
 protected function renderSelectElement(array $optionElements, array $parameterArray, array $config)
 {
     $selectItems = $parameterArray['fieldConf']['config']['items'];
     $size = (int) $config['size'];
     $cssPrefix = $size === 1 ? 'tceforms-select' : 'tceforms-multiselect';
     if ($config['autoSizeMax']) {
         $size = MathUtility::forceIntegerInRange(count($selectItems) + 1, MathUtility::forceIntegerInRange($size, 1), $config['autoSizeMax']);
     }
     $attributes = ['name' => $parameterArray['itemFormElName'] . '[]', 'multiple' => 'multiple', 'onchange' => implode('', $parameterArray['fieldChangeFunc']), 'id' => StringUtility::getUniqueId($cssPrefix), 'class' => 'form-control ' . $cssPrefix];
     if ($size) {
         $attributes['size'] = $size;
     }
     if ($config['readOnly']) {
         $attributes['disabled'] = 'disabled';
     }
     if (isset($config['itemListStyle'])) {
         $attributes['style'] = $config['itemListStyle'];
     }
     $html = ['<select ' . $this->implodeAttributes($attributes) . ' ' . $parameterArray['onFocus'] . ' ' . $this->getValidationDataAsDataAttribute($config) . '>', implode(LF, $optionElements), '</select>'];
     return implode(LF, $html);
 }
开发者ID:hlop,项目名称:TYPO3.CMS,代码行数:29,代码来源:SelectSingleBoxElement.php

示例13: render

 /**
  * Render side by side element.
  *
  * @return array As defined in initializeResultArray() of AbstractNode
  */
 public function render()
 {
     $table = $this->data['tableName'];
     $field = $this->data['fieldName'];
     $parameterArray = $this->data['parameterArray'];
     // Field configuration from TCA:
     $config = $parameterArray['fieldConf']['config'];
     // Creating the label for the "No Matching Value" entry.
     $noMatchingLabel = isset($parameterArray['fieldTSConfig']['noMatchingValue_label']) ? $this->getLanguageService()->sL($parameterArray['fieldTSConfig']['noMatchingValue_label']) : '[ ' . $this->getLanguageService()->sL('LLL:EXT:lang/locallang_core.xlf:labels.noMatchingValue') . ' ]';
     $selItems = $config['items'];
     $html = '';
     $disabled = '';
     if ($config['readOnly']) {
         $disabled = ' disabled="disabled"';
     }
     // Setting this hidden field (as a flag that JavaScript can read out)
     if (!$disabled) {
         $html .= '<input type="hidden" data-formengine-input-name="' . htmlspecialchars($parameterArray['itemFormElName']) . '" value="' . ($config['multiple'] ? 1 : 0) . '" />';
     }
     // Set max and min items:
     $maxitems = MathUtility::forceIntegerInRange($config['maxitems'], 0);
     if (!$maxitems) {
         $maxitems = 100000;
     }
     // Get "removeItems":
     $removeItems = GeneralUtility::trimExplode(',', $parameterArray['fieldTSConfig']['removeItems'], true);
     // Get the array with selected items:
     $itemsArray = $parameterArray['itemFormElValue'] ?: [];
     // Perform modification of the selected items array:
     // @todo: this part should probably be moved to TcaSelectItems provider?!
     foreach ($itemsArray as $itemNumber => $itemValue) {
         $itemArray = array(0 => $itemValue, 1 => '');
         $itemIcon = null;
         $isRemoved = in_array($itemValue, $removeItems) || $config['type'] == 'select' && $config['authMode'] && !$this->getBackendUserAuthentication()->checkAuthMode($table, $field, $itemValue, $config['authMode']);
         if ($isRemoved && !$parameterArray['fieldTSConfig']['disableNoMatchingValueElement'] && !$config['disableNoMatchingValueElement']) {
             $itemArray[1] = rawurlencode(@sprintf($noMatchingLabel, $itemValue));
         } else {
             if (isset($parameterArray['fieldTSConfig']['altLabels.'][$itemValue])) {
                 $itemArray[1] = rawurlencode($this->getLanguageService()->sL($parameterArray['fieldTSConfig']['altLabels.'][$itemValue]));
             }
             if (isset($parameterArray['fieldTSConfig']['altIcons.'][$itemValue])) {
                 $itemArray[2] = $parameterArray['fieldTSConfig']['altIcons.'][$itemValue];
             }
         }
         if ($itemArray[1] === '') {
             foreach ($selItems as $selItem) {
                 if ($selItem[1] == $itemValue) {
                     $itemArray[1] = $selItem[0];
                     break;
                 }
             }
         }
         $itemsArray[$itemNumber] = implode('|', $itemArray);
     }
     // size must be at least two, as there are always maxitems > 1 (see parent function)
     if (isset($config['size'])) {
         $size = (int) $config['size'];
     } else {
         $size = 2;
     }
     $size = $config['autoSizeMax'] ? MathUtility::forceIntegerInRange(count($itemsArray) + 1, MathUtility::forceIntegerInRange($size, 1), $config['autoSizeMax']) : $size;
     $itemsToSelect = [];
     $filterTextfield = [];
     $filterSelectbox = '';
     if (!$disabled) {
         // Create option tags:
         $opt = array();
         foreach ($selItems as $p) {
             $opt[] = '<option value="' . htmlspecialchars($p[1]) . '" title="' . $p[0] . '">' . $p[0] . '</option>';
         }
         // Put together the selector box:
         $selector_itemListStyle = isset($config['itemListStyle']) ? ' style="' . htmlspecialchars($config['itemListStyle']) . '"' : '';
         $sOnChange = implode('', $parameterArray['fieldChangeFunc']);
         $multiSelectId = StringUtility::getUniqueId('tceforms-multiselect-');
         $itemsToSelect[] = '<select data-relatedfieldname="' . htmlspecialchars($parameterArray['itemFormElName']) . '" ' . 'data-exclusivevalues="' . htmlspecialchars($config['exclusiveKeys']) . '" ' . 'id="' . $multiSelectId . '" ' . 'data-formengine-input-name="' . htmlspecialchars($parameterArray['itemFormElName']) . '" ' . 'class="form-control t3js-formengine-select-itemstoselect" ' . ($size ? ' size="' . $size . '" ' : '') . 'onchange="' . htmlspecialchars($sOnChange) . '" ' . $parameterArray['onFocus'] . $this->getValidationDataAsDataAttribute($config) . $selector_itemListStyle . '>';
         $itemsToSelect[] = implode(LF, $opt);
         $itemsToSelect[] = '</select>';
         // enable filter functionality via a text field
         if ($config['enableMultiSelectFilterTextfield']) {
             $filterTextfield[] = '<span class="input-group input-group-sm">';
             $filterTextfield[] = '<span class="input-group-addon">';
             $filterTextfield[] = '<span class="fa fa-filter"></span>';
             $filterTextfield[] = '</span>';
             $filterTextfield[] = '<input class="t3js-formengine-multiselect-filter-textfield form-control" value="">';
             $filterTextfield[] = '</span>';
         }
         // enable filter functionality via a select
         if (isset($config['multiSelectFilterItems']) && is_array($config['multiSelectFilterItems']) && count($config['multiSelectFilterItems']) > 1) {
             $filterDropDownOptions = array();
             foreach ($config['multiSelectFilterItems'] as $optionElement) {
                 $optionValue = $this->getLanguageService()->sL(isset($optionElement[1]) && $optionElement[1] != '' ? $optionElement[1] : $optionElement[0]);
                 $filterDropDownOptions[] = '<option value="' . htmlspecialchars($this->getLanguageService()->sL($optionElement[0])) . '">' . htmlspecialchars($optionValue) . '</option>';
             }
             $filterSelectbox = '<select class="form-control input-sm t3js-formengine-multiselect-filter-dropdown">' . implode(LF, $filterDropDownOptions) . '</select>';
         }
//.........这里部分代码省略.........
开发者ID:Gregpl,项目名称:TYPO3.CMS,代码行数:101,代码来源:SelectMultipleSideBySideElement.php

示例14: getSingleField_typeSelect_single

 /**
  * Creates a single-selector box
  *
  * @param string $table See getSingleField_typeSelect()
  * @param string $field See getSingleField_typeSelect()
  * @param array $row See getSingleField_typeSelect()
  * @param array $parameterArray See getSingleField_typeSelect()
  * @param array $config (Redundant) content of $PA['fieldConf']['config'] (for convenience)
  * @param array $selectItems Items available for selection
  * @param string $noMatchingLabel Label for no-matching-value
  * @return string The HTML code for the item
  */
 protected function getSingleField_typeSelect_single($table, $field, $row, $parameterArray, $config, $selectItems, $noMatchingLabel)
 {
     // Initialization:
     $selectId = StringUtility::getUniqueId('tceforms-select-');
     $selectedIndex = 0;
     $selectedIcon = '';
     $selectedValueFound = FALSE;
     $onlySelectedIconShown = FALSE;
     $size = (int) $config['size'];
     // Style set on <select/>
     $out = '';
     $options = '';
     $disabled = FALSE;
     if ($config['readOnly']) {
         $disabled = TRUE;
         $onlySelectedIconShown = TRUE;
     }
     // Icon configuration:
     if ($config['suppress_icons'] === 'IF_VALUE_FALSE') {
         $suppressIcons = empty($parameterArray['itemFormElValue']);
     } elseif ($config['suppress_icons'] === 'ONLY_SELECTED') {
         $suppressIcons = FALSE;
         $onlySelectedIconShown = TRUE;
     } elseif ($config['suppress_icons']) {
         $suppressIcons = TRUE;
     } else {
         $suppressIcons = FALSE;
     }
     // Prepare groups
     $selectItemCounter = 0;
     $selectItemGroupCount = 0;
     $selectItemGroups = array();
     $selectIcons = array();
     $selectedValue = '';
     if (!empty($parameterArray['itemFormElValue'])) {
         $selectedValue = (string) $parameterArray['itemFormElValue'];
     }
     foreach ($selectItems as $item) {
         if ($item[1] === '--div--') {
             // IS OPTGROUP
             if ($selectItemCounter !== 0) {
                 $selectItemGroupCount++;
             }
             $selectItemGroups[$selectItemGroupCount]['header'] = array('title' => $item[0], 'icon' => !empty($item[2]) ? FormEngineUtility::getIconHtml($item[2]) : '');
         } else {
             // IS ITEM
             $title = htmlspecialchars($item['0'], ENT_COMPAT, 'UTF-8', FALSE);
             $selected = $selectedValue === (string) $item[1];
             if ($selected) {
                 $selectedIndex = $selectItemCounter;
                 $selectedIcon = $icon;
                 $selectedValueFound = TRUE;
             }
             $icon = !empty($item[2]) ? $this->getIconHtml($item[2], $selected) : '';
             $selectItemGroups[$selectItemGroupCount]['items'][] = array('title' => $title, 'value' => $item[1], 'icon' => $icon, 'selected' => $selected, 'index' => $selectItemCounter);
             // ICON
             if ($icon && !$suppressIcons && (!$onlySelectedIconShown || $selected)) {
                 $onClick = 'document.editform[' . GeneralUtility::quoteJSvalue($parameterArray['itemFormElName']) . '].selectedIndex=' . $selectItemCounter . ';';
                 $onClick .= implode('', $parameterArray['fieldChangeFunc']);
                 $onClick .= 'this.blur();return false;';
                 $selectIcons[] = array('title' => $title, 'icon' => $icon, 'index' => $selectItemCounter, 'onClick' => $onClick);
             }
             $selectItemCounter++;
         }
     }
     // No-matching-value:
     if ($selectedValue && !$selectedValueFound && !$parameterArray['fieldTSConfig']['disableNoMatchingValueElement'] && !$config['disableNoMatchingValueElement']) {
         $noMatchingLabel = @sprintf($noMatchingLabel, $selectedValue);
         $options = '<option value="' . htmlspecialchars($selectedValue) . '" selected="selected">' . htmlspecialchars($noMatchingLabel) . '</option>';
     } elseif (!$selectedIcon && $selectItemGroups[0]['items'][0]['icon']) {
         $selectedIcon = $selectItemGroups[0]['items'][0]['icon'];
     }
     // Process groups
     foreach ($selectItemGroups as $selectItemGroup) {
         // suppress groups without items
         if (empty($selectItemGroup['items'])) {
             continue;
         }
         $optionGroup = is_array($selectItemGroup['header']);
         $options .= $optionGroup ? '<optgroup label="' . htmlspecialchars($selectItemGroup['header']['title'], ENT_COMPAT, 'UTF-8', FALSE) . '">' : '';
         if (is_array($selectItemGroup['items'])) {
             foreach ($selectItemGroup['items'] as $item) {
                 $options .= '<option value="' . htmlspecialchars($item['value']) . '" data-icon="' . htmlspecialchars($item['icon']) . '"' . ($item['selected'] ? ' selected="selected"' : '') . '>' . $item['title'] . '</option>';
             }
         }
         $options .= $optionGroup ? '</optgroup>' : '';
     }
     // Create item form fields:
//.........这里部分代码省略.........
开发者ID:edekowalski,项目名称:t3kit_extension_tools,代码行数:101,代码来源:IconFontSelector.php

示例15: insertNewCopyVersion

 /**
  * Inserts a record in the database, passing TCA configuration values through checkValue() but otherwise does NOTHING and checks nothing regarding permissions.
  * Passes the "version" parameter to insertDB() so the copy will look like a new version in the log - should probably be changed or modified a bit for more broad usage...
  *
  * @param string $table Table name
  * @param array $fieldArray Field array to insert as a record
  * @param int $realPid The value of PID field.  -1 is indication that we are creating a new version!
  * @return int Returns the new ID of the record (if applicable)
  */
 public function insertNewCopyVersion($table, $fieldArray, $realPid)
 {
     $id = StringUtility::getUniqueId('NEW');
     // $fieldArray is set as current record.
     // The point is that when new records are created as copies with flex type fields there might be a field containing information about which DataStructure to use and without that information the flexforms cannot be correctly processed.... This should be OK since the $checkValueRecord is used by the flexform evaluation only anyways...
     $this->checkValue_currentRecord = $fieldArray;
     // Makes sure that transformations aren't processed on the copy.
     $backupDontProcessTransformations = $this->dontProcessTransformations;
     $this->dontProcessTransformations = true;
     // Traverse record and input-process each value:
     foreach ($fieldArray as $field => $fieldValue) {
         if (isset($GLOBALS['TCA'][$table]['columns'][$field])) {
             // Evaluating the value.
             $res = $this->checkValue($table, $field, $fieldValue, $id, 'new', $realPid, 0);
             if (isset($res['value'])) {
                 $fieldArray[$field] = $res['value'];
             }
         }
     }
     // System fields being set:
     if ($GLOBALS['TCA'][$table]['ctrl']['crdate']) {
         $fieldArray[$GLOBALS['TCA'][$table]['ctrl']['crdate']] = $GLOBALS['EXEC_TIME'];
     }
     if ($GLOBALS['TCA'][$table]['ctrl']['cruser_id']) {
         $fieldArray[$GLOBALS['TCA'][$table]['ctrl']['cruser_id']] = $this->userid;
     }
     if ($GLOBALS['TCA'][$table]['ctrl']['tstamp']) {
         $fieldArray[$GLOBALS['TCA'][$table]['ctrl']['tstamp']] = $GLOBALS['EXEC_TIME'];
     }
     // Finally, insert record:
     $this->insertDB($table, $id, $fieldArray, true);
     // Resets dontProcessTransformations to the previous state.
     $this->dontProcessTransformations = $backupDontProcessTransformations;
     // Return new id:
     return $this->substNEWwithIDs[$id];
 }
开发者ID:rickymathew,项目名称:TYPO3.CMS,代码行数:45,代码来源:DataHandler.php


注:本文中的TYPO3\CMS\Core\Utility\StringUtility::getUniqueId方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。